Android 向け Firebase について理解する

Firebase で Android プロジェクトを開発しているときに、なじみのないコンセプトや Firebase 独自のコンセプトに直面することがあります。このページでは、このような質問への回答や、詳細を説明するリソースの紹介を行っています。

このページで扱っていないトピックについて不明点がある場合は、オンライン コミュニティをご覧ください。また、定期的に新しいトピックを追加していますので、このページをチェックして最新情報をご確認ください。

Android Studio 用 Firebase Assistant プラグイン

Firebase Assistant は、Firebase プロジェクトに Android アプリを登録し、Android プロジェクトに必要な Firebase 構成ファイル、プラグイン、依存関係を追加する Android Studio のプラグインです。これらはすべて Android Studio から行えます。

Android スタートガイドのページの手順に沿って、Firebase Assistant を使用してください。[File] > [Check for updates] に移動して、Android Studio と Firebase Assistant の両方で最新バージョンを使用していることを確認してください。

アプリに追加する特定の Firebase プロダクトを選択すると、Firebase Assistant は必要な依存関係を app/build.gradle ファイルで自動的に宣言します。ただし、Firebase Assistant の現在の機能以外の Firebase 機能を使用するには、これらの依存関係を手動で変更する必要がある場合があります。

  • Firebase Android BoM を使用する場合は、モジュール(アプリレベル)の Gradle ファイル(通常は app/build.gradle)の依存関係を更新して、BoM プラットフォームをインポートします。また、各 Firebase ライブラリの依存関係行からバージョンを削除する必要があります。

  • Kotlin 拡張ライブラリを使用する場合は、モジュール(アプリレベル)の Gradle ファイル(通常は app/build.gradle)に追加された依存関係の行を変更して、代わりに ktx バージョンの Firebase ライブラリを使用します。

Google サービス - プラグインと構成ファイル

Firebase を Android プロジェクトに追加する一環として、プロジェクトに google-services プラグインと google-services.json 構成ファイルを追加する必要があります。

Firebase コンソールManagement REST APIFirebase CLI から Firebase を Android プロジェクトに追加する場合は、プラグインと構成ファイルを手動でプロジェクトに追加する必要があります。ただし、Firebase Assistant を使用する場合、これらのタスクは設定時に自動的に実行されます。

Google サービスのプラグインと構成ファイルがどのように連携するかについては、Android のドキュメントをご覧ください。

Firebase Android BoMBill of Materials

Firebase Android BoMBill of Materials)は、1 つのバージョン(BoM のバージョン)のみを指定することで、すべての Firebase ライブラリ バージョンを管理できます。

アプリで Firebase BoM を使用する場合、BoMBoM のバージョンにマッピングされた個々のライブラリ バージョンを自動的に pull します。すべてのライブラリ バージョンの互換性は維持されます。アプリで BoM のバージョンを更新すると、アプリで使用するすべての Firebase ライブラリが、その BoM のバージョンにマッピングされたバージョンに更新されます。

特定の BoM バージョンにマッピングされている Firebase ライブラリ バージョンを確認するには、その BoM バージョンのリリースノートをご覧ください。BoM バージョンにマッピングされているライブラリ バージョンを別の BoM バージョンと比較する必要がある場合は、以下の比較ウィジェットを使用してください。

詳しくは、Gradle の BoM プラットフォームのサポートをご覧ください。

Firebase Android BoM を使用して、モジュール(アプリレベル)の Gradle ファイル(通常は app/build.gradle)で依存関係を宣言する方法は次のとおりです。BoM を使用する場合、依存関係の行にライブラリのバージョンを個別に指定しないでください。

dependencies {
  // Import the BoM for the Firebase platform
  implementation platform('com.google.firebase:firebase-bom:33.3.0')

  // Declare the dependencies for the desired Firebase products without specifying versions
  // For example, declare the dependencies for Firebase Authentication and Cloud Firestore
  implementation 'com.google.firebase:firebase-auth'
  implementation 'com.google.firebase:firebase-firestore'
}

ここでは、Firebase Android BoM の使用に関するよくある質問を紹介します。

Firebase BoM バージョンの比較

Kotlin 拡張(KTX)ライブラリ モジュール

Firebase Kotlin 拡張(KTX)ライブラリ モジュールは、メインの Firebase ライブラリ モジュールの小さなコンパニオンであり、美しく慣用的な Kotlin コードを記述できます。

アプリで KTX ライブラリを使用するには、-ktx の接尾辞を含めるように依存関係を変更します。各 KTX モジュールにはメイン ライブラリ モジュールに対する依存関係が自動的に含まれるため、アプリに両方の依存関係を含める必要はありません。

dependencies {
  // Import the BoM for the Firebase platform (learn more)
  implementation platform('com.google.firebase:firebase-bom:33.3.0')

  // Declare the main module
  implementation 'com.google.firebase:firebase-analytics'

  // Declare the KTX module instead (which automatically has a dependency on the main module)
  implementation 'com.google.firebase:firebase-analytics-ktx'
}

各 KTX モジュールは、メイン モジュールのさまざまな構文拡張を提供します。 たとえば、Analytics KTX モジュールを使用すると、イベントのロギングが簡単になります。

(メイン モジュールを使用)

val analytics = FirebaseAnalytics.getInstance();
val bundle = Bundle();
bundle.putString(FirebaseAnalytics.Param.ITEM_ID, id);
bundle.putString(FirebaseAnalytics.Param.ITEM_NAME, name);
bundle.putString(FirebaseAnalytics.Param.CONTENT_TYPE, "image");
analytics.logEvent(FirebaseAnalytics.Event.SELECT_ITEM, bundle);

(代わりに KTX モジュールを使用)

firebaseAnalytics.logEvent(FirebaseAnalytics.Event.SELECT_ITEM) {
    param(FirebaseAnalytics.Param.ITEM_ID, id)
    param(FirebaseAnalytics.Param.ITEM_NAME, name)
    param(FirebaseAnalytics.Param.CONTENT_TYPE, "image")
}

Firebase MLApp Indexing 以外のすべての Firebase プロダクトは、KTX モジュールを提供しています。

KTX モジュールについては、API リファレンス ドキュメントをご覧ください。

機能モジュールと Play Feature Delivery

2021 年 5 月(Firebase BoM v28.0.0)以降、ベース アプリケーション モジュールとは別にインストールされる動的機能モジュール内で Firebase Android SDK を使用できます。

動的機能モジュールのサポートを有効にするには、ベース モジュールの build.gradle ファイルに次の依存関係を追加します。

dependencies {
  implementation 'com.google.firebase:firebase-dynamic-module-support:16.0.0-beta03'
}

これで動的モジュールのサポートが追加され、Firebase SDK の依存関係(Firebase BoM の有無を問わず)をアプリの機能モジュールに追加して通常どおり使用できます。

たとえば、アプリケーションで Realtime Database を使用して特定のリアルタイム機能を実行する場合は、firebase-database 依存関係を、ベース モジュールではなく機能モジュールの build.gradle に追加できます。これにより、ほとんどのユーザーにとってダウンロード サイズが小さくなります。

機能モジュール内で Firebase SDK を使用する場合は、次の点に注意してください。

  • Analytics first_open イベントに依存する Dynamic LinksFirebase In-App Messaging などのプロダクトを動的機能モジュール内で使用する場合、このイベントを見逃す可能性があります。

  • Cloud FirestoreAuthentication を一緒に使用する場合は、両方を同じモジュールに含める必要があります。それが不可能な場合は、AuthenticationCloud Firestore よりに読み込まれるようにしてください。そうしないと、一部の Cloud Firestore オペレーションで認証状態が正しくなくなる可能性があります。

  • firebase-crashlytics-ndk を動的機能モジュールの依存関係として使用する場合は、Crashlytics NDK のドキュメントの説明に沿って、アプリの build.gradle ファイルで unstrippedNativeLibsDir プロパティを設定する必要があります。

機能モジュールと Play Feature Delivery について詳しくは、Play Feature Delivery の概要をご覧ください。

Google サービス Gradle プラグイン、Google Play 開発者サービス、Google Play ストアの違い

Google、Firebase、Android のエコシステムのいくつかの部分でよく似た名前が使用されている場合があります。それぞれについて簡単に説明します。

Google サービス Gradle プラグイン
ビルド時に実行され、アプリが Firebase と Google API にアクセスするための適切な構成になっていることを確認するための Gradle プラグイン(com.google.gms.google-services
このような名前にもかかわらず、このプラグインは Google Play 開発者サービス(次のエントリを参照)とは無関係で、ランタイム時のアプリの機能に影響を与えません。
このプラグインは、Firebase の設定の一環としてアプリに追加される google-services.json ファイルの処理も行います。詳細については、Google サービス Gradle プラグインをご覧ください。
Google Play 開発者サービス
Android デバイスで実行され、Google マップや Google ログインなど、いくつかの一般的な Google API をデバイス上のアプリに提供する、不可視のバックグラウンド サービス
こうした一般的な API を単一のサービスに一元化することで、他のアプリのサイズを縮小できます。また、OS をアップデートしなくても、セキュリティ アップデートや機能拡張を自動的に受信できます。詳しくは、Google Play 開発者サービスをご覧ください。
Google Play ストア
Android デバイスにアプリ、映画、書籍などをダウンロードするためのストア
デベロッパーは、Google Play Console を使用してアプリの配布やリリースなどを管理します。デバイスに Google Play ストアがある場合、そのデバイスは Google Play 開発者サービス(前のエントリを参照)も実行しています。詳しくは、デベロッパー向け Google Play ストアをご覧ください。
Google Play Games サービス
モバイルゲーム デベロッパー向けの API セット
詳しくは、Google Play Games サービスと、Firebase を Google Play Games サービス プロジェクトに統合する方法をご覧ください。

Firebase Android SDK のオープンソース リソース

Firebase はオープンソース開発をサポートしているため、コミュニティへの貢献やフィードバックが推奨されています。

Firebase Android SDK

ほとんどの Firebase Android SDK は、一般公開されている Firebase GitHub リポジトリでオープンソース ライブラリとして開発されています。現在、すでに開発された残りの限定公開の Firebase ライブラリを一般公開 GitHub に移行する作業が進められています。

クイックスタート サンプル

Firebase には、Android の Firebase API のほとんどのクイックスタート サンプルのコレクションがあります。これらのクイックスタートは、一般公開されている Firebase GitHub クイックスタート リポジトリで確認できます。

各クイックスタートを Android Studio プロジェクトとして開き、モバイル デバイスや仮想デバイス(AVD)で実行できます。また、Firebase SDK を使用するためのサンプルコードとして、このクイックスタートを使用することもできます。

その他のトピック