まだ追加していない場合は、Firebase を Android プロジェクトに追加します。
データベースを作成する
Firebase コンソールの [Realtime Database] セクションに移動します。既存の Firebase プロジェクトを選択するよう求められます。データベース作成ワークフローに従います。
Firebase セキュリティ ルールの開始モードを選択します。
- テストモード
モバイルおよびウェブ クライアント ライブラリを使用する場合に適していますが、すべてのユーザーがデータを読み取り、上書きできます。テストが終わったら、Firebase Realtime Database セキュリティ ルールを理解するを確認してください。
Web SDK、Apple SDK、Android SDK を使用する場合は、テストモードを選択します。
- ロックモード
モバイルおよびウェブ クライアントからのすべての読み書きを拒否します。認証されたアプリケーション サーバーは引き続きデータベースにアクセスできます。
データベースのロケーションを選択します。
データベースのロケーションに応じて、新しいデータベースの URL は次のいずれかの形式になります。
(DATABASE_NAME.firebaseio.com
us-central1
のデータベースの場合) (他のすべてのロケーションのデータベースの場合)DATABASE_NAME.REGION.firebasedatabase.app
[完了] をクリックします。
Realtime Database を有効にすると、Cloud API Manager で API も有効になります。
アプリに Realtime Database SDK を追加する
モジュール(アプリレベル)の Gradle ファイル(通常は<project>/<app-module>/build.gradle.kts
または <project>/<app-module>/build.gradle
)に、Realtime Database Android ライブラリの依存関係を追加します。ライブラリのバージョニングの制御には、Firebase Android 部品構成表(BoM)を使用することをおすすめします。
Kotlin+KTX
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:32.3.1")) // Add the dependency for the Realtime Database library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-database-ktx") }
Firebase Android 部品構成表を使用すると、アプリは常に互換性のあるバージョンの Firebase Android ライブラリを使用します。
(代替方法)BoM を使用せずに Firebase ライブラリの依存関係を追加する
Firebase BoM を使用しない場合は、依存関係の行でそれぞれの Firebase ライブラリのバージョンを指定する必要があります。
アプリで複数の Firebase ライブラリを使用する場合は、すべてのバージョンの互換性を確保するため、BoM を使用してライブラリのバージョンを管理することを強くおすすめします。
dependencies { // Add the dependency for the Realtime Database library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-database-ktx:20.2.2") }
Java
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:32.3.1")) // Add the dependency for the Realtime Database library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-database") }
Firebase Android 部品構成表を使用すると、アプリは常に互換性のあるバージョンの Firebase Android ライブラリを使用します。
(代替方法)BoM を使用せずに Firebase ライブラリの依存関係を追加する
Firebase BoM を使用しない場合は、依存関係の行でそれぞれの Firebase ライブラリのバージョンを指定する必要があります。
アプリで複数の Firebase ライブラリを使用する場合は、すべてのバージョンの互換性を確保するため、BoM を使用してライブラリのバージョンを管理することを強くおすすめします。
dependencies { // Add the dependency for the Realtime Database library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-database:20.2.2") }
Realtime Database セキュリティ ルールを構成する
Realtime Database には宣言型のルール言語が用意されているため、データの構造化方法、インデックスの作成方法、データの書き込みと読み取りの許可を定義できます。
データベースに書き込む
getInstance()
を使用してデータベースのインスタンスを取得し、書き込み先の場所を参照します。
Kotlin+KTX
// Write a message to the database val database = Firebase.database val myRef = database.getReference("message") myRef.setValue("Hello, World!")
Java
// Write a message to the database FirebaseDatabase database = FirebaseDatabase.getInstance(); DatabaseReference myRef = database.getReference("message"); myRef.setValue("Hello, World!");
このように、Java オブジェクトを含むさまざまなデータ型をデータベースに保存できます。オブジェクトを保存すると、ゲッターからのレスポンスはこの場所の子として保存されます。
データベースから読み込む
アプリデータをリアルタイムで更新するには、作成した参照に ValueEventListener
を追加する必要があります。
このクラス内の onDataChange()
メソッドはリスナーがアタッチされたときに 1 回トリガーされます。さらに、データ(子も含む)が変更されると、そのたびに再びトリガーされます。
Kotlin+KTX
// Read from the database myRef.addValueEventListener(object : ValueEventListener { override fun onDataChange(dataSnapshot: DataSnapshot) { // This method is called once with the initial value and again // whenever data at this location is updated. val value = dataSnapshot.getValue<String>() Log.d(TAG, "Value is: $value") } override fun onCancelled(error: DatabaseError) { // Failed to read value Log.w(TAG, "Failed to read value.", error.toException()) } })
Java
// Read from the database myRef.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { // This method is called once with the initial value and again // whenever data at this location is updated. String value = dataSnapshot.getValue(String.class); Log.d(TAG, "Value is: " + value); } @Override public void onCancelled(@NonNull DatabaseError error) { // Failed to read value Log.w(TAG, "Failed to read value.", error.toException()); } });
ProGuard を構成する(省略可)
アプリで ProGuard と一緒に Firebase Realtime Database を使用する場合、難読化後にモデル オブジェクトをどのようにシリアル化および逆シリアル化するかを検討する必要があります。DataSnapshot.getValue(Class)
または DatabaseReference.setValue(Object)
を使用してデータの読み込みと書き込みを行うには、proguard-rules.pro
ファイルにルールを追加する必要があります。
# Add this global rule
-keepattributes Signature
# This rule will properly ProGuard all the model classes in
# the package com.yourcompany.models.
# Modify this rule to fit the structure of your app.
-keepclassmembers class com.yourcompany.models.** {
*;
}
ProGuard に関してご不明な点や問題がある場合は、Guardsquare コミュニティ フォーラムを利用して、専門家のサポートを求めてください。
リリース準備
アプリをリリースする前に、リリース チェックリストに従って、アプリの準備が整っているかを確認することをおすすめします。
App Check を有効にして、自分のアプリだけがデータベースにアクセスできるようにしてください。
次のステップ
- Realtime Database でデータを構造化する方法を学習します。
- 複数のデータベース インスタンスにデータをスケーリングします。
- データの読み取りと書き込みを行います。
- Firebase コンソールでデータベースを表示します。