Blog

ZennでKotlin Coroutinesの本を公開しました!【目次あり】

Zennというサイトで、「詳解 Kotlin Coroutines [2021]」という本を公開しました。

これまでブログに載せてきた情報に加えて、Kotlin Coroutinesを体系的に学べるようまとめてあります。

1, 2章は無料公開しているので、ぜひご覧ください。

2021年2月28日まではセールで少しお安くお買い求め頂けます。

詳解 Kotlin Coroutines [2021] | Zenn

本を書こうと思った理由

Kotlin Coroutinesは非常に便利で、僕もFlowChannelを含め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. セットアップ
    • Playground
  • 2.2. launchでCoroutineを開始
  • 2.3. CoroutinesScopeとは
    • CoroutinesScopeを作成する方法
    • CoroutinesScopeをキャンセルする
    • 子CoroutineScopeとキャンセル
    • GlobalScopeについて
  • 2.4. Jobを扱う
    • Jobの完了を待つ
    • 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
      • NonCancellable
    • [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に変換
    • キャンセル可能なsuspend function
  • 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でイベント管理
    • SharedFlowとFlow
  • 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 おわりに

  • アンケート
  • Special Thanks
  • 参考文献

謝辞

この本の執筆にあたり、文章の構成や技術的な内容のレビューにご協力を頂きました。ありがとうございました。

(アルファベット順)

人気の記事

Jetpack Compose, React, Flutter, SwiftUIを比較する

Jetpack ComposeとViewModelについて考える

kotlin coroutinesのFlow, SharedFlow, StateFlowを整理する

ViewModelでString resourcesを扱いたい

Jetpack Composeのコンポーネントはなぜ返り値がないのか

MVVMでモデルに処理を寄せる【Android】