Android Academy · レッスン

Kotlin Flowの基礎

データストリームを発行して収集します

レッスン 3/413 ステップ

「Kotlin Flowの基礎」はCoddyKit上の無料Android Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAndroid Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Android Academyコースには全4レッスンが含まれています。

Flowとは

Flowは、時間の経過に伴って複数の値を発行する非同期ストリームです。変換やcollectが可能な、一時停止できるシーケンスと考えてください。

Flowを構築する

flow { }ビルダーを使うと、必要に応じて値の間で一時停止しながら、値をemitできます。

fun numbers(): Flow<Int> = flow {
    for (i in 1..3) {
        delay(100)
        emit(i)
    }
}

Flowをcollectする

Flowはcollectするまで何も行いません。collectはsuspend操作なので、コルーチン内で実行されます。

scope.launch {
    numbers().collect { value ->
        println(value)
    }
}

Coldストリーム

Flowはcoldです。ビルダーブロックはcollectorごとに新しく実行されます。2つのcollectorはそれぞれ、開始時点から独立したシーケンスを取得します。

mapとfilterで変換する

演算子は、collectされたときにだけ実行される遅延方式で発行値を変換します。

numbers()
    .map { it * 10 }
    .filter { it > 10 }
    .collect { println(it) }

その他の演算子

  • take(n) — 最初のn個の値だけを取得します。
  • onEach — 値ごとに副作用を実行します。
  • distinctUntilChanged — 重複する値をスキップします。

エラーを処理する

catch演算子で上流の例外を捕捉します。

numbers()
    .map { riskyTransform(it) }
    .catch { e -> emit(-1) }
    .collect { println(it) }

完了に反応する

onCompletionを使うと、Flowが完了またはキャンセルされたときにコードを実行できます。

numbers()
    .onCompletion { println("done") }
    .collect { println(it) }

生成元のスレッドを変更する

flowOnを使うと、collectorに影響を与えずに上流処理を特定のDispatcher上で実行できます。

fun load(): Flow<Data> = flow {
    emit(readFromDisk())
}.flowOn(Dispatchers.IO)

終端演算子

toList、first、reduceなど、一部の演算子はFlowを終了して値を返します。これらはsuspend関数です。

val all: List<Int> = numbers().toList()

AndroidでFlowが活躍する場面

Flowは、時間の経過に伴って値を発行するあらゆるものをモデル化できます。たとえば、データベースの変更(Room)、位置情報の更新、入力中の検索、複数のデータソースの結合などです。

理解度チェック

Flowの基本についての理解度を確認しましょう。

まとめ

学習した内容:

  • flow { emit(...) }で非同期ストリームを構築します。
  • Flowはcoldで、collectされたときにのみ実行されます。
  • map/filterで変換し、catchでエラーを処理します。
  • flowOnで生成元のDispatcherを設定します。
無料で開始

AI チューターと学ぶ Kotlin — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
36
レッスン
152

よくある質問

「Kotlin Flowの基礎」レッスンは無料ですか?

はい。「Kotlin Flowの基礎」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Android Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Android Academyコースには全4レッスンが含まれています。

「Kotlin Flowの基礎」で何を学びますか?

データストリームを発行して収集します ブラウザで直接実行するハンズオンコードでAndroid Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Android Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAndroid Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「Kotlin Flowの基礎」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAndroid Academyレッスンでコードを書いて実行できますか?

はい。すべてのAndroid Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. コルーチンの基礎とスコープ
  2. viewModelScopeとDispatcher
  3. Kotlin Flowの基礎
  4. StateFlowとSharedFlow
← Android Academyに戻る