Room 3.0 の最初のアルファ版がリリースされました。Room 3.0 は、ライブラリのメジャーな破壊的変更バージョンです。Kotlin マルチプラットフォーム(KMP)に重点を置き、既存の Android、iOS、JVM デスクトップのサポートに加えて、JavaScript と WebAssembly(WASM)のサポートを追加しています。
このブログでは、破壊的変更、Room 3.0 の背景、Room 2.0 から移行するためにできることについて説明します。
破壊的変更
Room 3.0 には、次のような破壊的な API の変更が含まれています。
- SupportSQLite API のサポート終了: Room 3.0 は、androidx.sqlite ドライバ API によって完全にサポートされています。SQLiteDriver API は KMP と互換性があり、Room の Android API への依存関係を削除することで、2 つのバックエンドを使用する必要がなくなるため、Android の API サーフェスが簡素化されます。
- Java コードの生成の廃止: Room 3.0 では、Kotlin コードのみが生成されます。これは、進化する Kotlin ファーストのパラダイムに沿ったものであり、コードベースと開発プロセスを簡素化し、イテレーションを高速化します。
- KSP に重点を置く: Java アノテーション処理(AP)と KAPT のサポートも終了します。Room 3.0 は KSP(Kotlin Symbol Processing)プロセッサのみであり、Java 言語に制限されることなく、Kotlin コードベースをより適切に処理できます。
- コルーチン ファースト: Room 3.0 は Kotlin コルーチンを採用し、API をコルーチン ファーストにしています。コルーチンは KMP と互換性のある非同期フレームワークであり、Room を本質的に非同期にすることは、ウェブ プラットフォームをサポートするための重要な要件です。
新しいパッケージ
既存の Room 2.x 実装との互換性の問題を防ぎ、Room に推移的な依存関係を持つライブラリ(WorkManager など)に対応するため、Room 3.0 は新しいパッケージに存在します。つまり、新しい Maven グループとアーティファクト ID があります。たとえば、androidx.room:room-runtime は androidx.room3:room3-runtime になり、androidx.room.RoomDatabase などのクラスは androidx.room3.RoomDatabase に配置されます。
Kotlin とコルーチン ファースト
Java コードの生成が廃止されたため、Room 3.0 では、Room とやり取りするコードベースが Java であっても、KSP と Kotlin コンパイラが必要になります。Room の使用が集中しているマルチモジュール プロジェクトを使用し、コードベースの残りの部分に影響を与えることなく Kotlin Gradle プラグインと KSP を適用することをおすすめします。
Room 3.0 ではコルーチンも必要です。具体的には、Flow などのリアクティブ型を返さない限り、DAO 関数は中断する必要があります。Room 3.0 では、DAO 関数のブロッキングは許可されません。コルーチンをアプリケーションに統合する方法については、Android でのコルーチンのドキュメントをご覧ください。
SQLiteDriver API への移行
SupportSQLite から移行するため、アプリは SQLiteDriver API に移行する必要があります。この移行は、Room 3.0 のメリットを最大限に活用するために不可欠です。たとえば、BundledSQLiteDriver を使用してバンドルされた SQLite ライブラリを使用できます。Room 2.7.0 以降を使用すると、今日からドライバ API への移行を開始できます。SupportSQLite の使用は今後避けることを強くおすすめします。Room の統合を SQLiteDriver API に移行すると、パッケージの変更は主にシンボル参照(インポート)の更新であるため、Room 3.0 への移行が容易になります。呼び出しサイトへの変更は最小限で済む可能性があります。
SQLiteDriver API の概要については、 SQLiteDriver API のドキュメントをご覧ください。
Room を移行して SQLiteDriver API を使用する方法の詳細については、公式のSupportSQLite から移行するためのドキュメントをご覧ください。
Room SupportSQLite ラッパー
SupportSQLite を完全に削除することは、すべてのプロジェクトで直ちに実現できるとは限りません。この移行を容易にするため、Room 2.0 シリーズの最新バージョンである Room 2.8.0 では、androidx.room:room-sqlite-wrapper という新しいアーティファクトが導入されました。このアーティファクトは、データベースに SQLiteDriver がインストールされているため、データベース内の SupportSQLite API が無効になっている場合でも、RoomDatabase を SupportSQLiteDatabase に変換できる互換性 API を提供します。これにより、コードベースを完全に移行するまでに時間がかかるデベロッパー向けの一時的なブリッジが提供されます。このアーティファクトは、重要な SupportSQLite の使用をサポートしながら Room 3.0 への移行を可能にするため、Room 3.0 でも androidx.room3:room3-sqlite-wrapper として引き続き存在します。
たとえば、roomDatabase.openHelper.writableDatabase の呼び出しを roomDatabase.getSupportWrapper() に置き換えることができます。Room のビルダーで setDriver() が呼び出された場合でも、ラッパーが提供されます。
詳細については、room-sqlite-wrapper のドキュメントをご覧ください。
Room と SQLite のウェブ サポート
Kotlin マルチプラットフォーム ターゲット JS と WasmJS のサポートにより、API が大幅に変更されます。具体的には、ウェブ ストレージの適切なサポートは非同期であるため、Room 3.0 の多くの API は suspend 関数です。SQLiteDriver API もウェブをサポートするように更新され、新しいウェブ非同期ドライバが androidx.sqlite:sqlite-web で利用できるようになりました。これは、_ウェブワーカー_ ベースのドライバで、Origin プライベート ファイル システム(OPFS)にデータベースを永続化できます。
ウェブ用に Room を設定する方法の詳細については、 Room 3.0 リリースノートをご覧ください。
カスタム DAO の戻り値の型
Room 3.0 では、RxJava や Paging と同様に、Room にカスタム統合を追加できます。@DaoReturnTypeConverter という新しいアノテーション API を使用すると、Room の生成されたコードが実行時にアクセスできるようになる独自の統合を作成できます。これにより、Room チームがサポートを追加するのを待たずに、カスタムの戻り値の型を持つ @Dao 関数を使用できます。既存の統合は、この機能を使用するように移行されます。そのため、この機能を使用している場合は、コンバータを @Database または @Dao 定義に追加する必要があります。
たとえば、Paging コンバータは androidx.room3:room3-paging アーティファクトにあり、PagingSourceDaoReturnTypeConverter と呼ばれます。一方、LiveData の場合、コンバータは androidx.room3:room3-livedata にあり、LiveDataDaoReturnTypeConverter と呼ばれます。
詳細については、Room 3.0 リリースノートの DAO の戻り値の型コンバータのセクションをご覧ください。
Room 2.x のメンテナンス モード
Room の開発は Room 3 に重点が置かれるため、現在の Room 2.x バージョンはメンテナンス モードになります。つまり、主要な機能は開発されませんが、バグ修正と依存関係の更新を含むパッチ リリース(2.8.1、2.8.2 など)は引き続き行われます。Room 3 が安定するまで、チームはこの作業に取り組んでいます。
最後に
Google は、Room 3.0 の可能性と、Kotlin エコシステムにもたらされる機会に大きな期待を寄せています。この取り組みの進捗状況については、今後も最新情報をお届けします。
続きを読む
-
プロダクト ニュース
本日、The Android Show で発表されたように、Android はオペレーティング システムからインテリジェンス システムに移行し、アプリとのエンゲージメントを深める機会を増やしています。
Matthew McCullough • 4 分で読了
-
プロダクト ニュース
モバイル エコシステムは常に進化しており、新たな機会と新たな脅威をもたらしています。このような変化を通じて、Android と Google Play は、数十億のユーザーが安心してアプリを楽しめるように、またデベロッパーのイノベーションが促進されるように取り組んでいます。
Vijaya Kaza • 3 分で読了
-
2026 年 4 月 22 日2026 年 4 月 22 日
プロダクト ニュース
Jetpack Compose 2026 年 4 月リリースは安定版です。このリリースには、Compose コアモジュール バージョン 1.11(BOM マッピングの完全版を参照)、共有要素デバッグツール、トラックパッド イベントなどが含まれています。
Meghan Mehta • 5 分で読了
最新情報の入手
Android 開発に関する最新の分析情報を毎週メールでお届けします。