第19回|Firebase導入②:Realtime DatabaseとFirestore入門[AI]
⚙️ 準備と環境設定
前回の記事でFirebaseプロジェクトを作成し、Android Studio Otterとの連携を完了しました。本記事では、Firebaseのデータ保存機能である Realtime Database と Cloud Firestore を使ったデータの保存・取得方法を学びます。KotlinとJetpack Composeでの実装例も紹介し、AI支援での自動コード生成も活用する手順を解説します。
![第19回|Firebase導入②:Realtime DatabaseとFirestore入門[AI] 1 Android Studio Otter](https://zesys.net/blog/wp-content/uploads/2025/11/ChatGPT-Image-2025年11月10日-18_51_43-300x200.png)
1. Firebase Realtime Databaseの準備
Firebase Consoleで対象プロジェクトを開き、左側メニューから「Realtime Database」を選択します。「データベースを作成」をクリックし、ロケーションを選択後に「開始」を押します。ルールは初期状態ではテストモードにして、全員が読み書き可能な状態で開始できます。後でセキュリティルールを設定することを推奨します。
2. Cloud Firestoreの準備
同様に「Firestore Database」を選択し、「データベースを作成」します。開始方法は「テストモード」を選び、ロケーションを指定します。Firestoreは構造化されたドキュメント型データベースで、より高度なクエリが可能です。
🤖 Geminiによる支援の使い方
Gemini AIを活用すると、Realtime DatabaseやFirestoreのKotlinコード生成が簡単です。例えば、次のようなプロンプトを入力することで、保存・読み込み・リスナー登録までのコードを自動生成できます。
// Gemini プロンプト例
"ComposeアプリでRealtime Databaseにメッセージを保存して表示するKotlinコードを生成して"
AIが生成したコードは、そのままAndroid Studioにコピーして利用可能です。また、Firestore用のコレクション操作やクエリも自動生成できます。
💡 Kotlinでの実装例
以下に、Realtime DatabaseとFirestoreの基本的な操作例を示します。
1. Realtime Databaseにデータを保存する例
val database = Firebase.database
val messagesRef = database.getReference("messages")
fun sendMessage(message: String) {
messagesRef.push().setValue(message)
}
説明:Firebase Realtime Databaseの参照を取得し、`push().setValue()` で新しいメッセージを追加しています。
2. Realtime Databaseのデータを取得する例
messagesRef.addValueEventListener(object : ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot) {
val messages = snapshot.children.map { it.getValue(String::class.java) ?: "" }
println(messages)
}
override fun onCancelled(error: DatabaseError) {
println("Error: ${error.message}")
}
})
説明:データが変更されるたびに `onDataChange` が呼ばれ、最新のメッセージリストを取得できます。
3. Firestoreにデータを保存する例
val firestore = Firebase.firestore
val messagesCollection = firestore.collection("messages")
fun addMessageFirestore(message: String) {
val data = hashMapOf("text" to message, "timestamp" to System.currentTimeMillis())
messagesCollection.add(data)
.addOnSuccessListener { println("Message added successfully") }
.addOnFailureListener { e -> println("Error adding message: $e") }
}
説明:Firestoreではコレクションにドキュメントを追加し、タイムスタンプを付与しています。
4. Firestoreからデータを取得する例
messagesCollection.orderBy("timestamp")
.addSnapshotListener { snapshot, e ->
if (e != null) {
println("Listen failed: $e")
return@addSnapshotListener
}
val messages = snapshot?.documents?.map { it.getString("text") ?: "" } ?: emptyList()
println(messages)
}
説明:リアルタイムでデータの変化を監視し、最新のメッセージを取得できます。
🧩 FirebaseまたはCloudとの連携
FirebaseのデータベースとAndroid Studioを正しく連携させるには、以下の手順を確認してください:
- google-services.json の配置:`app/`ディレクトリに配置
- Gradle設定:`firebase-bom` と各種依存関係を追加
- 初期化:アプリ起動時に `FirebaseApp.initializeApp(this)` を呼び出す
- 権限設定:Realtime DatabaseとFirestoreのセキュリティルールを本番環境用に設定
この手順で、Kotlin Composeアプリからリアルタイムデータベース操作が可能になります。
📘 まとめ
第19回では、Firebase Realtime DatabaseとFirestoreの基本操作を紹介しました。Kotlinサンプルコードを中心に、データ保存・取得・リスナー登録方法を解説し、Gemini AIを使った自動コード生成も活用しました。次回以降は、認証(Authentication)やCloud Storageとの連携方法も実践的に学ぶことができます。
「※本ブログはこの一文以外は、AIによる記載です。内容にウソが含まれている可能性がありますので、ご注意ください。写真もAIで作成しています。」