Mokelab Blog

#68 Jetpack ComposeでToDoアプリを作る - Room

今回はデータベースの準備をします。

Roomを追加する

と見出しをつけましたが、Roomの導入はJetpack ComposeアプリとViewシステムの従来のアプリで違いは全くありません。 よってViewシステムの時の記事に沿ってエンティティ・DAO・データベースを作るだけです。

KSPを使う

Viewシステムで作ってみた時はkaptを使っていましたが、高速で動作するKSP(Kotlin Symbol Processing)がリリースされたので使ってみることにします。

まず、プロジェクトのルートにあるbuild.gradleにpluginブロックを追加します。

buildscript { ... }
// このブロックを追加
plugins {
  id 'com.google.devtools.ksp' version "1.5.31-1.0.0"
}

次に、app/build.gradleのpluginsにcom.google.devtools.kspを追加します。

plugins {
  id 'com.android.application'
  id 'kotlin-android'
  // この行を追加
  id 'com.google.devtools.ksp'
}

android { ... }

そしてdependenciesのところで、今までkaptとしていたところをkspに変更します。

(追記)Room 2.3.0の時点ではksp対応はExperimentalで、どうも2.4.0-beta01あたりにしないと動かないみたいです。。。

まず、トップレベルのbuild.gradleでRoomのバージョンを更新します。

buildscript {
  ext {
    compose_version = '1.0.4'
    // 2.4.0にする
    room_version = '2.4.0-beta01'
  }
  ...
}

そしてapp/build.gradleでroom-ktxを入れ忘れてたので追加します。

dependencies {
  ...
  // room-ktxも追加する
  implementation "androidx.room:room-ktx:$room_version"
  implementation "androidx.room:room-runtime:$room_version"
  ksp "androidx.room:room-compiler:$room_version"
}

あとはエンティティ・DAO・データベースを作ります。

ここまで作業したものはこちらにあります。

本サイトではサービス向上のため、Google Analyticsを導入しています。分析にはCookieを利用しています。