KotlinのRoomを使ったローカルデータベースの扱い方!初心者でもできる保存と取得の基本
生徒
「Kotlinで作ったAndroidアプリに、ユーザーが入力した情報を保存したいんですが、どうしたらいいですか?」
先生
「その場合は、Room(ルーム)という仕組みを使うと、アプリの中にデータベースを作って保存できますよ。」
生徒
「データベースって難しそう…サーバーとか必要なんですか?」
先生
「Roomはローカルデータベースなので、スマホ本体の中にデータを保存できます。初心者でも使いやすいですよ。さっそく基本を学んでみましょう!」
1. Roomとは?Kotlinでデータを保存できる仕組み
Room(ルーム)は、KotlinでAndroidアプリを開発する際に使われる、ローカルデータベース管理のライブラリです。
「ローカルデータベース」とは、アプリがスマートフォンの中にデータを保存して、あとで取り出せる仕組みのことです。Roomを使えば、複雑なデータベース操作を簡単なコードで行えます。
2. Roomを使うには何が必要?build.gradleの設定
まずはRoomを使うためのライブラリを追加します。build.gradle(モジュール)に以下を追加してください。
implementation "androidx.room:room-runtime:2.6.1"
kapt "androidx.room:room-compiler:2.6.1"
さらに、Kotlinでアノテーション処理を行うために、kaptの設定も必要です。
apply plugin: 'kotlin-kapt'
3. データクラス(エンティティ)を作成しよう
Roomでは、保存したい情報を表すクラスを@Entityというアノテーションを使って作成します。
@Entity
data class Memo(
@PrimaryKey(autoGenerate = true) val id: Int = 0,
val content: String
)
@PrimaryKeyは、このデータの「主キー(ユニークな番号)」を表します。autoGenerateをtrueにすると自動で番号が付きます。
4. DAO(データアクセスオブジェクト)を作る
DAOは、データベースにアクセスするための「入り口」のような存在です。ここで、保存や読み込みの操作を定義します。
@Dao
interface MemoDao {
@Insert
fun insert(memo: Memo)
@Query("SELECT * FROM Memo")
fun getAll(): List<Memo>
}
@Insertはデータを追加するため、@QueryはSQL文を使って取得します。
5. データベース本体を作成しよう
Roomでは、すべての設定をまとめる「データベースクラス」を作成する必要があります。
@Database(entities = [Memo::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun memoDao(): MemoDao
}
@Databaseアノテーションでは、使うデータモデルとバージョン番号を指定します。
6. データベースにアクセスする方法
アプリの中でRoomデータベースを使うには、次のように初期化して使います。
val db = Room.databaseBuilder(
applicationContext,
AppDatabase::class.java, "memo-db"
).build()
val dao = db.memoDao()
databaseBuilderを使うことで、Roomがデータベースを準備してくれます。名前は"memo-db"で自由に決められます。
7. データを保存・取得してみよう
実際にデータを保存・取得するには以下のようにします。Roomの操作は時間がかかるため、基本的には別スレッドで実行します。
Thread {
dao.insert(Memo(content = "テストメモ"))
val memos = dao.getAll()
memos.forEach {
Log.d("MEMO", it.content)
}
}.start()
8. Roomを使うメリットと活用ポイント
Roomを使うことで、次のようなメリットがあります。
- ローカルに安全にデータを保存できる
- SQL文が少なくて済む
- コードが分かりやすく保守しやすい
- Google公式ライブラリで安心
アプリでメモ帳やお気に入り一覧、履歴などの機能を作りたいときに、Roomはとても役立ちます。
9. 注意点:Roomでよくあるエラーと対策
Roomを使うときに初心者がつまずきやすいポイントも紹介しておきます。
- kaptの設定を忘れるとビルドエラーになります。
- エンティティのクラスに@PrimaryKeyをつけ忘れないようにしましょう。
- データベースの名前やバージョンを変更したらアプリを再インストールするのが安全です。