Combine framework ガイドブック - 基礎固め編
- ダウンロード商品無料PDFサンプル版¥ 0
- ダウンロード商品電子書籍版 PDF&EPUB形式¥ 2,000
- PDF&EPUB 形式 - ページ構成: PDF形式 A5サイズ62ページ - 更新日: 2020/12/13
本書について
本書はAppleのCombineフレームワークについて解説する書籍です。 本書は写経的な学習には向きません。サンプルコードを書き写して実行し理解するタイプの内容ではありませんのでご注意ください。 WWDC19でAppleにより発表されたCombineフレームワークはリアクティブプログラミングを宣言的に行うためのフレームワークですが、リアクティブプログラミングに慣れていない開発者にとって、決して雰囲気だけで使えるフレームワークではありません。Combineには名前だけでは動作を想像できないオペレーターが複数あり、納得しづらい理屈もあります。 本書では基礎的な概念の説明とともに、歴史的背景を参考にすることで理解を深めることを目的としています。
本書の構成
第1章はCombineとは何かということについて、リアクティブプログラミングの概念や宣言的なソースコードについて解説します。 第2章ではCombineを構成する主要な要素を解説します。 第3章ではSubscriptionについて解説します。SubscriptionはCombineには必須の要素ですが、Appleによって現段階で詳しく説明されていないため、Subscriptionを自作し利用用途から理解するという内容です。 第4章ではCombineがどのようにメソッドチェインを実現しているか順を追うことでCombine特有のルールを明確にします。 第5章ではCombineのエラーハンドリング用のオペレーターを紹介や、Combineの異常終了時の挙動について説明します。 第6章ではストリームのキャンセルについて解説します。 第7章ではCombineに関連する近代のリアクティブプログラミングに関する歴史ついて言及します。この章によって疑問が解決することがあるはずです。
目次
第1章 Combineとは何か 1.1 リアクティブプログラミングとは何か 1.1.1 リアクティブプログラミングの定義 1.1.2 リアクティブプログラミングの例 1.2 Appleの説明から振り返るCombine 1.2.1 AppleによるCombineの実例 1.2.2 宣言的とは何か コラム: Combineは真のFRPではない? 第2章 Combineの全体像 2.1 Combineの主要な要素とその簡単な役割 2.2 Publisherの概要 2.2.1 Publisherプロトコル 2.3 オペレーターの概要 2.4 Subscriberの概要 2.4.1 Subscriberプロトコル 2.5 その他Publisherに属する主要部品 2.5.1 Subjects 2.6 Cancellable 第3章 Subscriptionとは何か 3.1 Appleの解説によるPublisherとSubscriberのやりとり 3.1.1 『Introducing Combine』ではなぜSubscriptionが詳しく説明されていないのか 3.2 Subscriptionは何のためにある? 3.3 バックプレッシャーはどのように使われているか 3.4 Subscriptionを自作する 3.4.1 カスタムなPublisherとSubscriptionの実装例 3.5 まとめ 第4章 実践メソッドチェイン 4.1 オペレーターの型によってSubscriberの型を変更する例 4.2 オペレーターによるラップ 4.3 メソッドチェインでeraseToAnyPublisher()を利用する意味 第5章 Combineのエラーハンドリング 5.1 エラーをハンドリングするオペレーター 5.1.1 Fail構造体によりエラーを発生させる 5.1.2 mapする際に必要であればエラーをthrowするTryMapオペレーター 5.1.3 リトライするためのRetryオペレーター 5.1.4 エラーを置き換えたい場合のreplaceError(with:) 5.1.5 エラーをキャッチしてその内容により処理を変更したい場合のCatchオペレーター 5.1.6 エラーを別のエラーに変換できるMapErrorオペレーター 5.1.7 開発時に便利なassertNoFailureメソッド 5.2 エラーによる異常終了 5.2.1 Combineではエラーが流れるとストリームが異常終了する 5.2.2 エラーが流れて異常終了しても上流は異常終了しないパターンがある 第6章 ストリームのキャンセル 6.1 AnyCancellableによるキャンセル 6.1.1 handleEventsオペレーターによるキャンセルのハンドリング 6.2 ストリームを切り替える前の処理もキャンセルされる 6.3 まとめてキャンセル 6.4 ストリームへのキャンセルは開始済みの副作用を直接キャンセルできるわけではない 第7章 Combineに関連する近代リアクティブプログラミング史 7.1 MircrosoftによるReactive Extensions 7.2 ReactiveXの誕生 7.3 Reactive Extensionsから派生するReactiveCocoa 7.4 Reactive Streams仕様 7.4.1 CombineはReactive Streamsの仕様をベースにしている 7.4.2 Reactive Streams仕様はRxJava 2.0から始まった 7.4.3 Reactive Streamsの主要なパーツ 7.4.4 Reactive Streamsのルール 7.4.5 Reactive Streamsに必須なバックプレッシャー 7.5 リアクティブ宣言とリアクティブシステム 7.6 その他の言語の非同期処理について 7.7 まとめ
スペシャルサンクス
- @tobi462 - @kalupas0930
サンプルコード
本書で記載されているサンプルコードはGitHub上でホスティングしています https://github.com/yimajo/CombineBook1Samples
本書へのフィードバック
本書へのご意見・ご感想・ご質問は下記ページにてお待ちしています! https://qiita.com/yimajo/private/af1521e7500e30976fc4
更新履歴
## 2020/12/13 - あとがき修正 ## 2020/9/14 - コードハイライト追加 - あとがき修正 - epub版作成 ## 2020/8/25 - PDF版のみ先行公開