Kotlin Coroutinesは、Kotlinにおける非同期処理や並行処理をシンプルかつ効率的に記述するための仕組みです。従来のコールバックやスレッドベースのアプローチに比べ、保守性が高く、読みやすいコードを書くことができます。特にAndroid開発において、メインスレッド(UIスレッド)をブロックせずにネットワークアクセスやデータベース操作などを行うために非常に重要です。
1. 基本概念
コルーチンとは
コルーチンは、軽量スレッドのようなものです。一時停止 (suspend) や再開が可能で、従来のスレッドよりも少ないリソースで非同期処理を実行できます。
主な特徴
-
軽量:数千のコルーチンを同時に起動しても問題ありません。
-
一時停止と再開:処理を一時停止 (
suspend) し、後で再開できます。 -
構造化された並行処理:親子関係でコルーチンを管理することでキャンセルなどが安全に行えます。
2. 重要なキーワードと関数
suspend関数
suspend関数Suspending function(中断可能関数)は、他の中断可能な処理を呼び出せる関数です。
launch と async
launch と async-
launch:戻り値がなく、ジョブ(Job) を返す。 -
async:非同期に処理し、結果(Deferred<T>) を返す。
3. スコープとディスパッチャ
コルーチンスコープ (CoroutineScope)
CoroutineScope)コルーチンのライフサイクルを管理します。Androidでは lifecycleScope や viewModelScope をよく使います。
ディスパッチャ (Dispatcher)
Dispatcher)どのスレッドで実行するかを決定します。
| Dispatcher | 特徴 |
|---|---|
Dispatchers.Main |
UIスレッドで実行 |
Dispatchers.IO |
入出力向けのバックグラウンドスレッド |
Dispatchers.Default |
CPU集約型の処理に適する |
例:
4. エラーハンドリングとキャンセル
-
try-catchでsuspend関数内の例外処理が可能です。 -
コルーチンは
cancel()でキャンセルできます。 -
CoroutineExceptionHandlerを使えば、非同期例外のグローバルな処理も可能です。
5. Androidでの実用例
ViewModel内の使用(Jetpack ViewModel + viewModelScope)
Activityでの使用(lifecycleScope)
まとめ
Kotlin Coroutinesは、Android開発における非同期処理の標準的な方法となっており、可読性・安全性・効率性の面で非常に優れています。コールバックのネストや複雑なスレッド管理を避けながら、UIスレッドをブロックしない処理を実現できます。
生成日:2025/05/04