Database Inspector: 概要、SQLiteの操作方法、Roomのデバッグ方法

著者: IT Sectr 公開日: 2026-05-07 読了時間: 8 分

Android StudioのDatabase Inspectorは、モバイルアプリケーションのSQLiteデータベースをリアルタイムで表示およびデバッグするための組み込みツールです。Android Developersの公式ドキュメント(2025)によると、このツールはアクティブなデータベースに対してSQLクエリを実行し、テーブル構造を表示し、アプリケーションを停止せずにレコードを編集できます。このツールはRoom、SQLiteOpenHelper、および任意のアプリ内データベースをサポートし、プロファイリング開始時に自動的に検出します。

重要なポイント

  • Database Inspectorは、クエリ実行機能を備え、アプリケーションのSQLiteデータベースをリアルタイムで表示するAndroid Studioのコンポーネントです
  • Roomサポート — Roomとの完全な統合。DAOクエリの表示とデータベースの変更追跡を含む
  • データ編集 — インスペクターインターフェースから直接テーブルセルの値を変更し、アプリケーションに即座に反映
  • SQL実行 — JOIN、GROUP BY、サブクエリを含む任意のSQLクエリを作成および実行する機能
  • データベースエクスポート — 分析や同僚との共有のためにデータベースダンプをコンピューターに保存

Database Inspectorとは?

Database Inspectorは、モバイルアプリケーションのローカルデータベースを検査およびデバッグするためのAndroid Studioのツールです。Roomデータベース、SQLiteOpenHelper、サードパーティライブラリなど、アプリケーションによって作成されたすべてのSQLiteデータベースを表示できます。このツールはAndroid Studio 4.1から利用可能で、Android Profilerを介して、またはViewメニューから直接起動できます。

目的と機能

Database Inspectorの主な目的は、開発中のデータの可視化です。データベースの内容をログに出力したり、データを表示するための別画面を作成したりする代わりに、開発者はDatabase Inspectorを開いてすべてのテーブル、そのスキーマ、内容を即座に確認できます。このツールはリレーショナルSQLiteデータベースとAutoマイグレーション対応のRoomの両方をサポートしています。

Database Inspectorを使用するタイミング

このツールは、操作実行後にデータストレージの正確性を検証する必要があるシナリオで不可欠です:ユーザー登録、サーバー同期、リストキャッシング。テストUIを作成する代わりに、データベースダンプをDatabase Inspectorで表示します。このツールはRoomのマイグレーションデバッグにも積極的に使用され、スキーマ更新ごとに実際のテーブルスキーマを確認できます。

Database Inspectorの仕組み

Database Inspectorは、Android Profiler Serviceを介してAndroidアプリケーションのプロセスに接続します。アプリケーション内のすべての開いているSQLite接続を検出し、サイドパネルに表示します。API Level 26(Android 8.0)以上のDebugビルドのアプリケーションが必要です。

アーキテクチャと仕組み

起動時に、Database Inspectorはデバイス上のアプリケーションとコンピューター上のIDEの間にADBトンネルを作成します。SQLite WAL(Write-Ahead Logging)データベースファイルはこのトンネルを介してストリーミングされ、内容が表示されます。SQLコマンドは、RoomおよびSQLiteDatabaseでのDatabase Inspectorのサポートを通じて、アプリケーションのSQLiteエンジンに直接送信されます。ツールはアプリケーションがデータベースを開いたタイミングを自動的に検出し、検査リストに追加します。

環境要件

Database Inspectorを正しく動作させるには、Android Studio 4.1+、API Level 26+のデバイスまたはエミュレーター、およびアプリケーションのDebugビルドが必要です。Roomの場合は、room-runtimeライブラリバージョン2.2+が追加で必要です。Room 2.2+の標準であるWALモードでデータベースが作成されている場合、ツールはメインアプリケーションをブロックせずにデータを読み取ることができます。

kotlin
// Database InspectorでサポートされるRoomデータベースの例
@Database(
    entities = [User::class, Order::class],
    version = 2,
    autoMigrations = [AutoMigration(from = 1, to = 2)]
)
abstract class AppDatabase : RoomDatabase() {
    abstract fun userDao(): UserDao
    abstract fun orderDao(): OrderDao
}

Database Inspectorの主な機能

Database Inspectorは、テーブルスキーマの表示から複雑なSQLクエリの実行、レコードの編集まで、ローカルデータを操作するための完全な機能セットを提供します。

テーブルとスキーマの表示

左パネルにはすべてのデータベースとテーブルが表示されます。テーブルを選択すると、その内容がカラム付きのテーブルで表示されます:すべてのレコードフィールドがカラムとして表示され、各行が個別のレコードです。テーブルスキーマ(名前、型、制約)は上部に表示されます。外部キーについては、テーブル間の関係が表示されます。

データ型SQLite型Room型
整数INTEGERInt, Long42
文字列TEXTString"John"
小数REALDouble, Float3.14
バイナリデータBLOBByteArray[0x00, 0x01]
日付/時刻INTEGER (Unix epoch)Long, Date1720000000

SQLクエリの実行

Queryタブでは、選択したデータベースに対して任意のSQLコマンドを直接実行できます。SELECT、INSERT、UPDATE、DELETE、CREATE INDEX、JOINおよびその他のSQLite演算子がサポートされています。結果はクエリエディタの下に表形式で表示されます。クエリ履歴はセッション中保持されます。

レコードの編集

テーブルセルは直接編集できます — 値をクリックして新しい値を入力するだけです。変更は実行中のアプリケーションに即座に適用されます。これはエッジケースのテストに特に便利です:必須フィールドへのnull設定、存在しないIDへの置き換え、長い文字列の処理確認など。すべての変更はリアルタイムでコミットされます。

Database Inspectorを使用したRoomのデバッグ

Database InspectorはRoomと深く統合されており、このライブラリを使用したアプリケーション開発に不可欠です。標準機能に加えて、インスペクターはRoom固有の機能を提供します。

DAOクエリの表示

Roomデータベースの場合、Database Inspectorは各DAOメソッドの生成されたSQLクエリを表示します。これにより、特にJOIN、@Relation、@Transactionを使用した複雑なクエリに対して、Roomが正しいSQLを生成しているか確認できます。Roomが非効率的なクエリ(単一のJOINの代わりにN+1クエリなど)を実行した場合、Database Inspectorのクエリログで即座に確認できます。

マイグレーションのデバッグ

AutoMigrationまたは手動マイグレーションでRoomスキーマを更新する際、Database Inspectorはマイグレーション後の実際のテーブル構造を表示します。アプリケーション起動後にインスペクターを開き、すべてのカラム、インデックス、外部キーが正しく作成されているか確認するだけです。マイグレーションがエラーで失敗した場合、データベースは開かれず、ツールは最後に利用可能なバージョンを表示します。

RelationsとEmbeddedの確認

Roomでは、@Relationと@Embeddedを使用して複数のテーブルからデータを結合できます。Database Inspectorは関連テーブルのデータを並べて表示することで、リレーションシップの正確性を視覚的に確認するのに役立ちます。各外部キーについて、ワンクリックで関連テーブルに移動できます。

kotlin
// Database Inspectorで確認するためのRelation付きEntity
@Entity(tableName = "users")
data class User(
    @PrimaryKey val id: Int,
    val name: String
)

data class UserWithOrders(
    @Embedded val user: User,
    @Relation(parentColumn = "id", entityColumn = "user_id")
    val orders: List<Order>
)

Database Inspectorの実用的な使用シナリオ

Database Inspectorは、ローカルデータストレージを扱う際に発生する特定の開発タスクを解決します。日常業務におけるツールの最も一般的な使用例を見てみましょう。

データキャッシングの確認

多くの場合、アプリケーションはAPI応答をローカルデータベースにキャッシュします。Database Inspectorを使用すると、キャッシングの正確性を検証できます:同期後、キャッシュテーブルに実際のレコードが表示されます。データが表示されない場合は保存コードに問題があります。重複が表示される場合はupsertロジックに問題があります。

データ挿入エラーのデバッグ

DAOメソッドがデータを保存せず、かつ例外をスローしない場合、Database Inspectorはテーブルの実際の状態を表示します。一般的な原因:Primary Key競合(OnConflictStrategy設定)、カラムの誤ったデータ型、NOT NULL制約違反、または外部キー違反です。インスペクターは操作前後のデータベース変更セットを表示できます。DAO呼び出し前後のデータスナップショットを比較することは、トランザクションエラーをデバッグし、複雑な書き込み操作中のアプリケーションのビジネスロジックの正確性を検証する最も効果的な方法の1つです。

データベーススキーマのリファクタリング

テーブルスキーマの変更(カラム追加、フィールド名変更、テーブル分割)時、Database Inspectorはマイグレーション結果の検証に役立ちます。新しいデータベースバージョンでアプリケーションを起動し、すべてのデータが新しい構造に正しく転送されたか確認するだけです。マイグレーション後にデータが失われた場合は、リファクタリング前に保存したダンプから復元できます。このシナリオは、SQLiteOpenHelperからRoomへの移行時や、アプリケーションの新バージョンで既存テーブルの構造を変更する場合に特に重要です。

クエリパフォーマンスの監視

Database InspectorはSQLクエリのパフォーマンス評価にも使用できます。QueryタブからSELECTを実行し、応答時間を測定することで、インデックスが不足しているクエリを特定できます。Roomは自動的に遅いクエリをSLOW SQLタグ付きでLogcatに記録し、Database Inspectorから即座にEXPLAIN QUERY PLANを実行して実行計画を分析できます。

よくある質問

Database Inspectorがデータベースを認識しないのはなぜですか?

アプリケーションがDebugモードで実行されており、デバイスのAPI Levelが26以上であることを確認してください。データベースが別のプロセスで作成されているか、SQLCipher(暗号化)を使用している場合、Database Inspectorは検出できない可能性があります。SQLCipherの場合は、暗号化なしの補助デバッグデータベースを使用してください。

Database Inspectorでデータを編集できますか?

はい、データ編集はテーブルセルで直接可能です。値をダブルクリックして変更できます。変更は実行中のアプリケーションのデータベースに即座に適用されます。新しいレコードを追加するには、QueryタブからINSERT SQLクエリを使用してください。

Database InspectorはRealmデータベースをサポートしていますか?

いいえ、Database InspectorはRealmがSQLiteを使用しないため、Realmをサポートしていません。Realmのデバッグには、Realm Object Server、Realm Studio、またはアプリ内ログを使用してください。MongoDB Realm SDKの場合は、Realm StudioツールがmacOS、Windows、Linuxで利用可能です。

Database Inspectorからデータベースをエクスポートするには?

Database Inspectorではデータベース全体をエクスポートできます。リスト内のデータベース名を右クリックし、Export Databaseを選択します。.dbファイルがコンピューターに保存されます。表示するには、DB Browser for SQLiteなどの任意のSQLiteブラウザーを使用してください。

Database Inspectorはアプリケーションのパフォーマンスに影響しますか?

Googleによると、オーバーヘッドは最小限です — Database Inspectorは書き込みをブロックせずにWALデータベースファイルを読み取ります。カスタムSQLクエリの実行はデータベースに一時的に負荷をかける可能性がありますが、これは開発者によって制御されます。プロダクションビルドではツールは自動的に無効になります。

まとめ

  • Database Inspectorは、アプリケーションのSQLiteデータベースをリアルタイムで表示および編集するためのAndroid Studio組み込みツールです
  • Roomサポートには、DAOクエリの表示、マイグレーションデバッグ、@Relationと@Embeddedの確認が含まれます
  • SQLクエリ実行はQueryタブから、すべてのSQLite演算子のサポートと履歴保持付きで行えます
  • リアルタイム編集により、セルの値を変更し、実行中のアプリケーションで即座に結果を確認できます
  • データベースエクスポートは.dbファイル形式で、サードパーティツールでの分析や同僚との共有が可能
  • Android Studio 4.1+、Debugビルド、API Level 26+が必要 — ツールがデータベースを表示しない場合はこれらの要件を確認してください
  • ローカルデータストレージに関連する機能の開発時には、定期的に Database Inspectorを使用してください — デバッグが大幅に高速化されます

ターンキー方式のモバイルアプリケーションを開発します

IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。

プロジェクトについて相談

こちらもお読みください