2026年2月25日水曜日

[Android]RoomとKPSとKotlinのバージョン(2026/02)

AndroidのRoomは、SQLiteを簡単に扱えて、Flowで値を取得できます。
RoomのFlowを使った制御の何がよいかというと、データベースを更新すると、勝手にデータをリフレッシュしてくれるんですよね。

最初にRoomを使ったときは、「え?なんでDBを更新すると、画面が勝手に更新されるの?」というのが理解できませんでした。 そうなんです。仕組みを理解していないと、これが分からないんですよね。

ざっくり言うと、DAOにFlowで値を返す関数がある場合、データを更新すると自動でFlowに新しいデータが流れてきて自動的にFlowデータを取り込む。
データを取り込むとFlow(State)を参照しているUIが勝手に更新される。そんな感じ。

ただ、Roomはクセが強い。どこがクセ強かというと、KSPとKotlinのバージョンの組み合わせに依存関係があって、例えばKotlinの版を上げたいなら、合わせてKSPとRoomもいい感じのバージョンにそろえる必要があるのです。 ということで、今日ちょっと調べてみると、最新環境ではこんな感じで合わせられそうだな、ということが分かったので、備忘としてメモ。


■libs.versions.toml抜粋(Kotlinが2.3.10)
[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 件のコメント: