RoomのFlowを使った制御の何がよいかというと、データベースを更新すると、勝手にデータをリフレッシュしてくれるんですよね。
最初にRoomを使ったときは、「え?なんでDBを更新すると、画面が勝手に更新されるの?」というのが理解できませんでした。
そうなんです。仕組みを理解していないと、これが分からないんですよね。
ざっくり言うと、DAOにFlowで値を返す関数がある場合、データを更新すると自動でFlowに新しいデータが流れてきて自動的にFlowデータを取り込む。
データを取り込むとFlow(State)を参照しているUIが勝手に更新される。そんな感じ。
データを取り込むとFlow(State)を参照しているUIが勝手に更新される。そんな感じ。
ただ、Roomはクセが強い。どこがクセ強かというと、KSPとKotlinのバージョンの組み合わせに依存関係があって、例えばKotlinの版を上げたいなら、合わせてKSPとRoomもいい感じのバージョンにそろえる必要があるのです。
ということで、今日ちょっと調べてみると、最新環境ではこんな感じで合わせられそうだな、ということが分かったので、備忘としてメモ。
[versions]
agp = "9.0.1"
coreKtx = "1.17.0"
junit = "4.13.2"
junitVersion = "1.3.0"
espressoCore = "3.7.0"
lifecycleRuntimeKtx = "2.10.0"
activityCompose = "1.12.4"
kotlin = "2.3.10" // ★2026/02時点では最新版
composeBom = "2026.02.00"
■build.gradle.kts(:app)
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.compose)
id("com.google.devtools.ksp") version "2.3.5" // ★Kotlin 2系に対応したKSP 2026/02時点では最新版
}
・・・省略・・・
dependencies {
implementation("androidx.room:room-runtime:2.8.4") // ★Room関連 2026/02時点では最新版
implementation("androidx.room:room-ktx:2.8.4")
ksp("androidx.room:room-compiler:2.8.4") // ★KSP 2026/02時点では最新版
・・・
}
依存関係に負けてRoomをあきらめた人や、これからRoomちょっと使ってみようかな。という人参考までに。
最新版は↓からたどれます。Room(部屋って訳されるのが笑える)
KSP
0 件のコメント:
コメントを投稿