RxSwift研究読本4 自作して理解するリアクティブプログラミングフレームワーク編
- ダウンロード商品無料サンプルPDF¥ 0
- ダウンロード商品電子書籍PDF/EPUB版¥ 1,400
PDF/EPUB 形式 ページ: B5サイズ88ページ ビルド: 2020/4/13 この商品はPDF, EPUBの2形式のファイルがダウンロードできます。
本書について
本書は、より深くリアクティブプログラミングフレームワークについて理解するため、最小限の機能しかないRxSwiftクローンを作る過程を解説します。 本書で作成するRxSwiftクローンは最小限のObservable、Observer、オペレータ、Subjectを作ります。最終的にはそれらを組み合わせてHot変換を行えるようにします。 必要最低限とするためマルチスレッド対応やメモリ管理のための仕組みを作りません。さらにメモリ管理に絡む話ですが、Diposableも作りません。これは通常のプログラミングで使うレベルではなく、ギリギリ動くレベルで仕組みを理解することを重視します。もちろんエラーハンドリングができるようにもしません。必要最小限でもリアクティブプログラミングフレームワークを自作することで、次のような原則を自然と理解できるようになることを目的としています。 - ColdなObservableはSubscribeされるとイベントが流れる - Observableは複数のObserverによって監視される - SubjectがObservable/Observer両方の性質を持つ - HotなObservableはsubscribeされなくてもイベントが流れる - HotなObservableはColdと比較して効率的に動作する 本書を読む時間は1時間から2時間ほどあれば読み流せるボリュームを想定しています。
なぜRxSwiftクローンを自作するのか
2019年6月のWWDC19にてAppleがCombineフレームワークを発表したことで、我々はさらにリアクティブプログラミングのソースコードを読んだり書いていく機会が増え、それらを評価しなければいけないことが多くなるはずです。CombineフレームワークはOSSではないこともあり、どのようなコーディングがより良いのかという点で判断が難しいものであり、我々は細かく検証を重ねなければいけません。 そのためRxSwiftのソースコードを読んで実装レベルで理解しておくことは、 どのようなコーディングがより良いリアクティブプログラミングなのかという判断材料になると筆者は考えています。 しかしRxSwiftのような広く使われるフレームワークは、様々なケースへ対応するため複雑化しており、そのソースコードを読み進めるために多くのことを随時把握しなければいけません。その解決策としてRxSwiftを参考にした最小限の機能しかない自作リアクティブプログラミングフレームワークを作っていくという過程は、より簡単に理解を深められるはずです。
RxSwift研究読本シリーズについて
RxSwift研究読本1 基礎編 https://swift.booth.pm/items/1076262 RxSwift研究読本2 エラーハンドリング編 https://swift.booth.pm/items/1121167 RxSwift研究読本3 ViewModel設計パターン入門編 https://swift.booth.pm/items/1223536 RxSwift研究読本4 自作して理解するリアクティブプログラミングフレームワーク編 https://swift.booth.pm/items/1951689 RxSwift研究読本5 スケジューラー編 https://swift.booth.pm/items/2771976
本書の構成
XCTestによるテストコードでテストをしながら、 順々に部品を多くしていきテストが成功するように作る過程を示します。 第1章ではObservableのJustを作り単一の整数がイベントとして流れ、subscribe(onNext:)クロージャで購読できることを確認します。とにかくシンプルにObseravbleのjustオペレータを作りsubscribeするコードから、実際にJustなObservableクラスを作成することを目的としています。 第2章ではObserverを作ります。第1章で作成したコードはsubscribe(onNext:)クロージャがイベントを購読していましたが、Observerを使うようにするわけです。Observerがストリームのイベントを扱いやすいようにEvent型の列挙体もつくります。 第3章ではObservableのofオペレータを作ります。Observableのバリエーションを複数にするだけで、2つのObservableの違いや同じ点を理解できます。 第4章ではオペレータとしてMapを作成します。 オペレータを作成することでストリームを処理して下流に渡すという仕組みを理解できます。 さらにColdなObservableはこのMap処理を購読されるたびに実行してしまうことも体感できるでしょう。 第5章ではPublishSubjectを作成します。Subject自体はHotなObservableであり、ColdをHotに変換する主要な部品ともなります。SubjectがObserverでありObservableであるという説明も、実際のソースコードを見ることで完全に理解できるはずです。 第6章ではこれまで作ってきた部品とHot変換用のオペレータであるpublishとconnectを作成します。すでに作成したMap処理が効率的に動作するようになり、HotなObservableに対する理解度が上がるでしょう。 付録share(replay: 1)のHot変換について言及します。 本書を全て読んだ読者の方なら、おそらくRxSwiftのコードを読むのが楽になっているはずです。さらにOSSとしてユーザが作成したCombienクローンというのもGitHubに公開されており、それすらも理解がたやすくなると考えます。もちろんCombineフレームワークをAppleがOSSにした場合にもその理解は活躍するでしょう。
RxSwiftのコードを試す場合の環境構築方法
RxSwiftのコードを試す場合の環境構築方法について記事にしました。 https://zenn.dev/yimajo/articles/551737e57b6b7d 環境構築はXcodeのバージョンに大きく依存するため、本文中には記載しておりません。Web上の記事であれば簡単に書き換えられるためにこのようにしています。
表紙について
表紙の写真は「(山梨県)日本の美・桜と雪・新倉山浅間公園から望む富士山」です。 --- 写真提供:ピクスタ Yoshitaka / PIXTA(ピクスタ) ---
本書へのフィードバック
本書へのご意見・ご感想・ご質問は下記ページにてお待ちしています! https://qiita.com/yimajo/private/69ea79bf54b76a9339a2
その他 ご意見ご感想について
RxSwift研究読本 という単語でツイートしていただければ確認することができます。 https://twitter.com/search?q=RxSwift%E7%A0%94%E7%A9%B6%E8%AA%AD%E6%9C%AC&src=typed_query&f=live
更新履歴
== 2020.4.14 - PDF/EPUB版リリース