Zennというサイトで、「詳解 Kotlin Coroutines [2021]」という本を公開しました。
これまでブログに載せてきた情報に加えて、Kotlin Coroutinesを体系的に学べるようまとめてあります。
1, 2章は無料公開しているので、ぜひご覧ください。
2021年2月28日まではセールで少しお安くお買い求め頂けます。
詳解 Kotlin Coroutines [2021] | Zenn
本を書こうと思った理由
Kotlin Coroutinesは非常に便利で、僕もFlow
、Channel
を含めKotlin Coroutinesのヘビーユーザです。
Kotlin Coroutinesの公式ドキュメントはしっかり整備されていますが、体系的に学ぶにはあまり向いていません。
また、日本語の記事がもっと多ければとも思っていました。
今までもブログを通じてKotlin Coroutinesの魅力、使い方について紹介してきましたが、一念発起しKotlin Coroutinesを体系立って学べる本を執筆することにしました。
私がKotlin Coroutinesを学び始めにほしかった情報を中心にまとめています。
また、今回の執筆に当たって、私自身も新たに知る仕様や仕組みもありました。
かなり学びの多いものになっていると思います。
ぜひ、無料公開も確認し、購入頂けると幸いです。
目次
サイト上では、Chapter一覧しか見れないため、目次をこちらに載せておきます。
購入する際の参考にして下さい。
Chapter 01 はじめに [無料公開]
- 1.1. 最初のCoroutines
- 1.2. なぜCoroutinesなのか
- 非同期処理とスレッド処理
- Callbackの登場
- Features/Promises/Rxによる解決
- Coroutinesの威力
- 1.3. 軽量スレッドとは?
Chapter 02 Coroutinesの基礎を学ぶ [無料公開]
- 2.1. セットアップ
- 2.2. launchでCoroutineを開始
- 2.3. CoroutinesScopeとは
- CoroutinesScopeを作成する方法
- CoroutinesScopeをキャンセルする
- 子CoroutineScopeとキャンセル
- GlobalScopeについて
- 2.4. Jobを扱う
- 2.5. エラーハンドリングってどうするの?
- try-catchでエラーハンドリング
- キャンセル時の処理を書く
- 2.6. asyncで同時に実行
- 2.7. suspend functionで関数化
Chapter 03 怖くないCoroutineContext
- 3.1. CoroutinesContextとは
- CoroutineContextの利用例
- CoroutineContextの合成
- CoroutineContextの伝播
- CoroutineContextの切り替え
- 3.2. CoroutinesContextの4つの要素
- [1] Job
- [2] CoroutineDispatcher
- Dispatchers.Default
- Dispatchers.Main
- Dispatchers.Main.immediate
- Dispatchers.IO
- [3] CoroutineName
- [4] CoroutineExceptionHandler
Chapter 04 エラーハンドリングから逃げないで
- 4.1. try-catchができるとき、できないとき
- 4.2. JobとSupervisorJobとException
- 協調的なキャンセル
- SupervisorJob
- SupervisorJobの子はSupervisorJobでない!?
- 4.3. asyncとエラーハンドリング
- 同一CoroutineScope内
- ルートCoroutineもしくはSupervisorCoroutineの場合
- その他のケース
- 4.4. エラーハンドリングの方針
- 予期されるエラーは早期にcatchせよ
- SupervisorJobかJobか
- CoroutineExceptionHandlerをどう使うか
Chapter 05 実践Coroutines
- 5.1. 一定時間後にタイムアウトさせる
- 5.2. 失敗時にリトライする
- 5.3. suspend function内で複数のCoroutineを待ち合わせる
- 5.4. callbackからCoroutinesに変換
- 5.5. キャンセルを意識した実装
- 5.6. 他のCoroutineに実行を譲る
Chapter 06 便利なFlowを使いこなそう
- 6.1. Flowで実現できること
- 6.2. FlowはCold Streamです
- 6.3. Flowの完了とキャンセル、エラーハンドリング
- 6.4. Flowの便利なオペレーター
- map / mapNotNull
- onEach
- filter / filterNot
- distinctUntilChanged
- drop / take
- transform
- scan
- 6.5. bufferとconflate
- 6.6. 複数のFlowを1つのFlowに
- 6.7. launchInでネストを減らす
Chapter 07 StateFlowとSharedFlow
- 7.1. SharedFlowでイベント管理
- 7.2. shareInでストリームを共通化
- 7.3. replayを理解する
- 7.4. buffer overflowにはご注意を
- 7.5. StateFlowで状態を表現
- stateInを使おう
- StateFlowとSharedFlowとFlow
Chapter 08 Channelもあります
- 8.1. Channelで値を送受信
- 基本の送受信
- ReceiveChannelとSendChannel
- Channelをclose、cancelする
- forの代わり、consumeEach
- bufferとBufferOverflow
- 8.2. Channelで分散処理
- 8.3. ChannelからFlowに変換
- 8.4. ChannelとSharedFlowの使い分け
Chapter 09 まだまだCoroutines
- 9.1. Mutexで共通リソースにアクセスする
- 9.2. Semaphoreで並行数制御
- 9.3. selectで複数のCoroutinesから一つだけ選ぶ
Chapter 10 おわりに
謝辞
この本の執筆にあたり、文章の構成や技術的な内容のレビューにご協力を頂きました。ありがとうございました。
(アルファベット順)