Android(Kotlin) で Firebase Firestore を使ってデータを取得するまで
今回は、Android(Kotlin) で Firestore を使ってデータを取得するまでの手順を簡単に紹介したいと思います🚀
前提条件
- APIレベル16(Jelly Bean) 以降が対象
- Gradle 4.1 以降
- Jetpack(AndroidX) を使用
- 新規 Firebase プロジェクト作成済み
- Android アプリも登録済み
手順
それでは、作業していきましょう👷♀️
Firebase に Android アプリを登録する際に取得した
google-services.json
を Android プロジェクトのapp
ディレクトリに入れます(フォルダのペインを Android から Project に変更してドラックアンドドロップ)。プロジェクトレベルの Gradle ファイルに、Google サービスプラグインを含めるために必要なルールと、maven リポジトリを組み込む必要があるそうです。
buildscript { repositories { // Check that you have the following line (if not, add it): google() // Google's Maven repository maven { url "https://maven.google.com" } } dependencies { // ... // Add the following line: classpath 'com.google.gms:google-services:4.3.4' // Google Services plugin } } allprojects { // ... repositories { // Check that you have the following line (if not, add it): google() // Google's Maven repository maven { url "https://maven.google.com" } // ... } }
apply plugin: 'com.android.application' // Add the following line: apply plugin: 'com.google.gms.google-services' // Google Services plugin android { // ... }
- 同様に、アプリレベル Gradle ファイルに依存関係を宣言します。Firebase Android BoM を使用することで、BoM のバージョンを指定するだけで、Firebase ライブラリの全てのバージョンを管理することができるようになるそうです🧑🔧
dependencies { implementation platform('com.google.firebase:firebase-bom:26.1.0') implementation 'com.google.firebase:firebase-analytics-ktx' implementation 'com.google.firebase:firebase-firestore:21.2.1' compile 'com.android.support:multidex:1.0.1' }
次に
Sync now
を実行して、Gradle ファイルの変更を同期します。これで Firestore が使えるようになりました。実際に、Firestore を使ってみます。
val db = FirebaseFirestore.getInstance() db.collection("countries") .get() .addOnSuccessListener { val countries = it.toObjects(CountryItem::class.java) for (document in countries) { Log.i("Hoge", "name: ${document.name}, description: ${document.description}") } } .addOnFailureListener { Log.w("Hoge", "Error getting documents.", it) } //.. data class CountryItem(val name: String = "", val description: String = "")
toObjects
を使用することで、SnapShot を簡単にオブジェクトに変換することができます。また、使用するクラスにはデフォルトコンストラクタが必要みたいです✍️
参考
- https://firebase.google.com/docs/android/setup?hl=ja
- https://firebase.google.com/docs/firestore/quickstart?hl=ja#kotlin
- https://qiita.com/morayl/items/c14741ebf17b7c9e4e8b