Android Room
Room は Android Jetpack の永続化ライブラリで、SQLite の上に抽象レイヤーを提供し、SQLite の機能をすべて活かしながら、ローカルデータベースへより快適にアクセスできるようにします。SQL クエリをコンパイル時に検証でき、アノテーションによってボイラープレートコードを減らせます。
代替サービス
技術スタック
技術スタックはまだ追加されていません。 ログインして追加を提案
Room は Android Jetpack の一部で、アプリ内の構造化データをローカルデータベースに永続化するために使います。公式ドキュメントによると、最も一般的な用途は重要なデータのキャッシュで、デバイスがネットワークに接続されていない場合でも、ユーザーはそのコンテンツを閲覧できます。公式では、SQLite API を直接呼び出すのではなく、Room を優先して使うことを推奨しています。
3 つの主要コンポーネント
- データベースクラス(Database):
@Databaseアノテーションを付けた抽象クラスで、RoomDatabaseを継承します。データベースを保持し、永続化された基盤データへの接続にアクセスするための主要なエントリポイントとなります。アノテーション内で、関連するすべてのエンティティを列挙する必要があります。 - データエンティティ(Entity):各エンティティクラスはデータベース内の 1 つのテーブルに対応し、インスタンスはテーブルの 1 行に対応します。
@Entity、@PrimaryKey、@ColumnInfoなどのアノテーションで定義します。 - データアクセスオブジェクト(DAO):
@Daoを付けたインターフェースで、@Query、@Insert、@Deleteなどの関数を通じて、クエリ、挿入、更新、削除を行います。
データベースクラスは、DAO ごとに引数のない抽象関数を提供します。アプリは DAO を通じてエンティティオブジェクトを読み取れるほか、エンティティを使って新しい行を作成したり、既存の行を更新したりできます。
主な利点
- SQL クエリをコンパイル時に検証するため、エラーをビルド段階で早期に発見できます。
- 便利なアノテーションにより、繰り返しが多くミスしやすいボイラープレートコードを減らせます。
- データベースのマイグレーション手順を簡素化できます。
- 公式ドキュメントには、オブジェクト間のリレーション(1 対 1、1 対多、多対多、ネストされたリレーション)、非同期 DAO クエリ、データベースビュー、事前入力済みデータベース、マイグレーション、テストとデバッグなどのトピック別ガイドがあります。
- 公式ドキュメントには、SQLite から Room への移行ガイドと、Room 2.x から Room 3.0 への移行ガイドが用意されています。
- Kotlin Multiplatform をサポートしており、他のプラットフォームとデータベースレイヤーを共有できます。
インストールと使い方
モジュールの build.gradle.kts に依存関係を追加します。公式サイトの現行ドキュメントでは Room 3.0(サンプルのバージョンは 3.0.3)が紹介されており、アノテーション処理には KSP が必要です。
dependencies {
val room_version = "3.0.3"
implementation("androidx.room3:room3-runtime:$room_version")
ksp("androidx.room3:room3-compiler:$room_version")
}
その後、エンティティ、DAO、データベースクラスを定義し、Room.databaseBuilder でデータベースインスタンスを作成します。公式サイトのサンプルでは、DAO の関数に Kotlin の suspend 関数を使用し、setDriver(AndroidSQLiteDriver()) でドライバーを指定しています。
注意事項
- シングルプロセスのアプリでは、データベースインスタンスをシングルトンとして作成してください。
RoomDatabaseの各インスタンスはコストが高く、通常は複数のインスタンスを必要としないためです。 - マルチプロセスのアプリでは、データベースの構築時に
enableMultiInstanceInvalidation()を呼び出すことで、あるプロセスでの無効化通知が他のプロセスのインスタンスへ自動的に伝達されます。 - Room はデバイス上のデータ永続化を対象としています。デバイス間の同期、リアルタイムコラボレーション、オフライン対応のクラウドバックエンドが必要な場合、公式では Room を WorkManager および自前のバックエンドと組み合わせるか、Cloud Firestore や Firebase SQL Connect などのマネージドクラウドサービスを使うことを推奨しています。
対象ユーザー
構造化データをローカルに保存・クエリする必要がある Android 開発者に適しています。また、Kotlin Multiplatform でデータベースレイヤーを共有したいチームにも向いています。
もっと見る
EchoPaste
EcoPaste は、macOS と Windows に対応した、ローカルファーストのデスクトップ向けクリップボード管理ツールです。さまざまな種類のクリップボード履歴を記録でき、検索、分類、バックアップにも対応しています。
Exposed
Exposed は、型安全かつ簡潔にデータベースを操作できる軽量な Kotlin 向け SQL フレームワークです。
Aastro
Go言語で書かれた拡張可能なAPIゲートウェイ。カスタムプラグインを読み込んで機能を拡張できます。
Adminer
単一のPHPファイルで動作するデータベース管理ツール。MySQL、MariaDB、PostgreSQL、SQLite、MS SQL、Oracle、Elasticsearch、MongoDBなどに対応しています。
Aider
aiderは、ターミナルで使えるAIペアプログラミングツールです
Answer
ナレッジベース型のコミュニティソフトウェアです。製品の技術サポート、カスタマーサポート、ユーザー間のコミュニケーションなどに向けたQ&Aコミュニティを、素早く構築できます。
