This used to be an epic documentation site, but Alex Fine (CEO of Fun Group, criminal) didn’t pay his employees.
2022/10/16 更新 v0.42.0から採用されたReducerProtocolで書き方が大きく変わりましたので、記載内容やコードを見直しました iOSDCでのyimajoさんの発表など、the Composable Architecture(以下、TCA)が良さそうという評判を聞いて調べてみました。どこから始めていいのか少し迷ったので、公式レポジトリのREADMEにあるBasic UsageをベースにTCAの始め方を解説してみます。 TCAどころかSwiftUIすら勉強し始めなので、間違いなどあるかもしれません。コメントで教えて頂けると嬉しいです! TCAって何? TCAはiOSなどのAppleプラットフォームのアプリケーション開発のためのフレームワークです。 Combineを前提としているため、iOSだとiOS13以上が対象となる制約があります。(ちなみにiOS13未満向けにRx
The 11th day’s post of Mercari Advent Calendar 2019 is brought to you by @damianpasko from the iOS team. State is a very important word for both SwiftUI and Redux. In this case, it’s not only a buzzword, but it’s also a thing that connects them and letting them work together very well. In this article, I will try to show that the above thesis is truthful so let’s get started! The Beginning Redux c
UITableView の見た目で様々な要素を表示しつつ、その一部として UITextView を使いたい、という需要があると思う。最も身近な例は標準のメールアプリである。 これは UIKit の API を駆使することで実現可能である。本記事ではこれを実現する方法を通して、あまり知られていないであろう UIKit の機能について紹介する。 UITextView の intrinsic content size Auto Layout において、UIView は自身が表示されるためにちょうどよいサイズを知っている。具体的には var intrinsicContentSize: CGSize である(Swift 3.0 では property で、Swift 2.3 まではメソッドである)。このサイズは他の NSLayoutConstraint と関連して、デフォルトではプライオリティ 75
Xamarin Advent Calendar 2019 24日目のエントリーです。えっオマエ生きてたの?って感じですが、軽めのネタ・調べ物で参戦です。 目次 what is it? 今使えるの? どんなバインディングが出来るの? swiftライブラリのメタデータ構築 独自swiftc拡張 ラッパーswiftライブラリの生成 C#バインディング生成 BTFSの制限 まとめ what is it? 2019年はXamarin方面では落ち着いた1年になっていたかと思います。ネイティブ・プラットフォーム側はJetpack ComposeやSwiftUIが発表され、これから新しい時代が始まろうとしていますが、Xamarinは独自のクラシックなエコシステムに立脚するだけで続いていくのか、新しい波にきちんと乗っていけるのか、来年は動きを見せていくべき1年なのだろうなと思います。 Xamarin.And
こんにちは、新事業創造部の遠藤です。現在WEARの開発を行っています。 最近はWEARのコーディネート一覧やユーザー一覧など、リスト画面にバナー型の広告を実装をしました。 リストにデータを挿入する実装は簡単なように思えますが、種類の違うデータを扱う場合には、考慮するべきポイントがいくつかあります。 本記事ではリストに広告を表示することを例に、種類の違うデータをリストに挿入する際のデータの持ち方・実装ついて紹介したいと思います。 仕様 リスト画面にバナー型の広告を表示するにあたっての仕様は以下のとおりです。 広告を取得できない場合はリストをつめる スクロールして戻っても同じ広告が表示されている 広告のインプレッションは表示時のみとなるように制御する スクロールに合わせて遅延なく広告の表示をする 上記のような元々表示していたデータと異なる仕様を扱うため、実装が複雑になります。 バナー型広告につ
iOSに向き合い続けた10年。岸川克己がSpreadsheetViewで埋めたかった「iOSに不足していたもの」 KeychainAccessやSpreadsheetViewなど、iOSアプリ開発で広く使用されるOSSを送り出した岸川克己さん。iOS、Swiftの世界で先駆けと評される岸川さんに、ソフトウェア開発の裏側をお聞きしました。 職業、iOSアプリ開発者。いまでこそ、こうした肩書は珍しくありませんが、10年以上前から、iOSに向き合い続けてきたエンジニアがいます。今回の主人公である岸川克己(きしかわ・かつみ/ @k_katsumi )さんは、まさに“iOSの第一人者”と呼ぶにふさわしい人物です。 2008年9月、日本でiPhoneが発売されるやすぐにアプリを送り出し、以降、岸川さんはiOSアプリを開発し続けてきました。エンジニアとしての高いスキルが評価され、これまで数多くの有名企業
JSONより出来の良い妹「SION」 今回はSIONというデータシリアライゼーションフォーマット(data serialization format)を提案します。 Wh(at|y)Serialization? その前にシリアライゼーション(serialization)とは何かを復習しておきましょう。「シリアライズ(serialize)すること?」正解です。では、シリアライズとは何? 文字入力を音声入力する(siri)ではありません:-)。プログラムの中のオブジェクト(objects)をバイト列(bytes)に変換することです。実質すべてのプログラムは入力されたバイト列をデシリアライズ(deserialize)し、処理した結果をバイト列で出力、つまりシリアライズしているわけで、それをどのような形式=フォーマットで行うかというのはコード(codes)以上に重要な課題と言えましょう。mp4は
[ "array" : [ nil, true, 1, // Int in decimal 1.0, // Double in decimal "one", [1], ["one" : 1.0] ], "bool" : true, "data" : .Data("R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"), "date" : .Date(0x0p+0), "dictionary" : [ "array" : [], "bool" : false, "double" : 0x0p+0, "int" : 0, "nil" : nil, "object" : [:], "string" : "" ], "double" : 0x1.518f5c28f5c29p+5, // Double in hexadecimal "in
Xamarin Advent Calendar 2016 17日目です。 以前から僕はネイティブバインディング関連の記事をいろいろ書いてきました。 Xamarin.iOS でバインディングライブラリを作る Xamarin.iOS のネイティブバインディングを活用して既存の Objective-C 資産を流用する 新しくなったObjective SharpieでCocoaPodsのバインディングライブラリを作る 今回もネイティブバインディングです! Swift が使われるようになってしばらくたち、CocoaControlsに新しく出てきている今風の UI ライブラリはほとんど Swift 製になりつつあります。 Swift を使う場合、Swift のサポートライブラリ(ランタイム?)が必要となり、Swift で作ったアプリはデバッグ実行やアドホック配布はできるけどストアに上がらない…!という
動機 Storyboard&Segueでの管理は便利ですが複雑なアプリを作っていくとどんどん 辛くなっていきます。例えば以下のようなケース。 ViewController間で値を引き回したい どこのページにいても指定したページに遷移がしたい(アプリ内通知やURLSchemaでの移動) 表示されているページに応じて処理を変えたい(初回登録フロー時にはxxxの通知は出さない、など) 起動時に条件(ログインしているかどうかなど)に応じて遷移を変えたい 1番はhttps://github.com/tokorom/TKRSegueOptions を使ってperformSegueを 呼ぶ場所で値を渡せるようにすれば少し綺麗になるんですが、依然として遷移先の 情報を知ってないと何を渡せばいいかが決まらず、変更に弱い作りになってしまっていました。 2番はNotificationを使って根っこのViewCo
テストがなかった無法地帯のプロジェクトに自動テストを導入して、開発速度を1.7倍にした話をします。 自動テストがなぜないのか 自動テストのないプロジェクトには、そうなる理由が必ず存在します。よくみる理由は、「時間がないから1」「テストの書き方がわからないから」「無理やりテストを書いたつらい経験があったから2」といったものです。今回のプロジェクトの場合は、以下の2点でした: 自動テストの書き方がわからないから レビューがテスト代わりだったから まず、チーム編成が変わって私ともう一人がチームに加わるまで、実装者の中に自動テストの経験者はいませんでした。このような状況では、自動テストは困難になります。なぜなら、何をどうやってどこまでテストするかを決めるには、多少の慣れが必要だからです。この慣れがないと、何をしたらいいかわからないという状態に陥りがちで、結果として自動テストが後回しにされてしまいま
本稿は Swift Tweets 2017 Summer で発表(ツイート)したものをまとめ、Qiita 用に追記・再構成1したものです。 発表概要 CotEditor プロジェクトの現主催者 1024jp です。CotEditor は昨年 2016 年に Objective-C から Swift に移行しました。今日はその話をします。 本発表は、事前に以下のような概要を開示していました。 2004 年から脈々と受け継がれる総 Cocoa 製の macOS 用テキストエディタ CotEditor は、昨年 2016 年に Objective-C から Swift に 100% 移行しました。 Swift は魅力的な言語ですが、すでに Objective-C で 10 年超動いてるアプリケーションを誰に頼まれたわけでもないのにわざわざ Swift で書き直す意味は果たしてあるのでしょうか?
普段から RxSwift(Reactive ExtensionsのSwift実装)と ReSwift(ReduxのSwift実装)を使っています。RxSwift を通信系の処理だったりデリゲートの処理(例えば StoreKit とか CoreBluetooth)だったりに使って、ReSwiftをアプリ全体で管理しなきゃいけないデータの監視なんかに使ってます。ReSwift をそのまま使ってもあまり困らないのですが、ReSwift のステートを Observable に変換してUI部品とバインドするといろいろと捗るなぁというわけで ReSwift の Rx 用ラッパークラスを作成しました。 ReduxのステートをRx化するクラス Redux のステートを Rx の Variable に格納して、Redux からステート変更の通知が来たら Variable(エラーの発生しないBehaviorS
Make a note of it: Web tech, montaineering, and so on. iPhoneアプリ作ってみたメモ。良くあるTableView + WebViewのニュース系アプリ作った過程での気付きなど。ビックボリュームになってしまったので、分割してみた2つめ。1つめの導入編もヨロシク! Pull to Refresh 無限スクロール アラートのモーダルを出す 通信エラーのアラートを出す WebView内のwindow.alert()でURLが邪魔な問題 閲覧中のタブをもう1回タップしたら初期化する Core Dataでデータを保存する CoreDataでスレッド処理を書く 参考書籍など Pull to Refresh var refresher = UIRefreshControl() override func viewDidLoad() { super.
はじめに 近々リリース申請に出そうと思っている新作アプリでReSwiftとRealmを使ったのですが結構相性がいいなと思ったので基本的な考え方と少し躓いたところなどを共有したいと思います。 ReSwiftって? Realmはもちろん有名なので先人の素晴らしい記事に解説をまかせるとしてReSwiftについて簡単に説明したいと思います。 ReSwiftはReduxというJavaScriptのフレームワークをSwiftで実装したものです。ReSwiftやReduxは以下の四つの要素で成り立っています。 View ... iOSアプリだとViewControllerに対応、画面に表示する部分 Action ... アプリ内で行われる処理。ただしこれ単体ではなにもしない State(Store) ... アプリの状態を保持/表現するもの Reducer ... 現在のStateとActionを受け取
効率よくiOSアプリ開発を行うために、効率よくデバッグを行いたいですよね。 このエントリでは「print文を書く以外デバッグの方法を知らなかったあの頃の自分」を初級者と定義して、自分がやってるデバッグ方法について書いてみます。 Xcodeデバッグ術 1. printを使わずに変数の中身を確認する age, name, coverImage という以下の3つの変数が宣言されています。 let age = 27 let name = "Ryosuke Hiramatsu" let coverImage = UIImage(named: "sample.jpg") これらの変数の中身をチェックしたい時、printで出力するのでも良いですが、それでは出力する値を変えたくなった時(print(age)をprint(age*2+1)に変更とか)に再度ビルドが必要になって時間がかかります。 printで
このエントリーは読者としてスマートフォンアプリ開発者とWebフロントエンドエンジニアを想定して書いています。 CROSS2016に出るので、最近の自分の考えを整理しておく。 最近ReduxのSwift実装であるReSwiftを使って開発している。使った感想なども最後の部分に書いたけれど、このエントリーの本題はアプリの状態管理の話。 アプリは大きなシングルトン iOS、Android共にアプリを実装しようと思うと大抵シングルトンが必要になる。各ViewController内をまたがってデータを共有したいというユースケースが多いからだ。例えば ユーザーのログイン情報を集約するUserManager コンテンツへのいいね情報を集めるLikesManager ブックマーク情報を集めるBookmarkManager などなど。もちろんアプリの内容によってこれらの顔ぶれは違ってくると思うけれど、大抵U
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く