Firebase Summit で発表されたすべての情報をご覧ください。Firebase を使用してアプリ開発を加速し、自信を持ってアプリを実行する方法を紹介しています。詳細

Firebase RemoteConfigを使い始める


Firebase Remote Config を使用して、アプリでパラメーターを定義し、クラウドでその値を更新して、アプリの更新を配布せずにアプリの外観と動作を変更できます。このガイドでは、開始するための手順を順を追って説明し、いくつかのサンプル コードを提供します。これらはすべて、 firebase/quickstart-android GitHub リポジトリから複製またはダウンロードできます。

ステップ 1: アプリに Firebase と Remote Config SDK を追加する

  1. まだ行っていない場合は、 Firebase を Android プロジェクトに追加します

  2. Remote Config の場合、ユーザー プロパティとオーディエンスに対するアプリ インスタンスの条件付きターゲティングには、Google アナリティクスが必要です。プロジェクトでGoogle アナリティクスが有効になっていることを確認してください。

  3. モジュール (アプリレベル) の Gradle ファイル(通常は<project>/<app-module>/build.gradle ) で、Remote Config Android ライブラリの依存関係を追加します。ライブラリのバージョン管理には、 Firebase Android BoMを使用することをお勧めします。

    また、アナリティクスの設定の一環として、Google アナリティクス用の Firebase SDK をアプリに追加する必要があります。

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:31.1.0')
    
        // Add the dependencies for the Remote Config and Analytics libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-config'
        implementation 'com.google.firebase:firebase-analytics'
    }
    

    Firebase Android BoMを使用すると、アプリは常に互換性のあるバージョンの Firebase Android ライブラリを使用します。

    (代替) BoM を使用せずに Firebase ライブラリの依存関係を追加する

    Firebase BoM を使用しないことを選択した場合は、依存関係の行で各 Firebase ライブラリ バージョンを指定する必要があります。

    アプリで複数のFirebase ライブラリを使用する場合は、BoM を使用してライブラリ バージョンを管理することを強くお勧めします。これにより、すべてのバージョンに互換性が確保されます。

    dependencies {
        // Add the dependencies for the Remote Config and Analytics libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-config:21.2.0'
        implementation 'com.google.firebase:firebase-analytics:21.2.0'
    }
    

    Kotlin+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:31.1.0')
    
        // Add the dependencies for the Remote Config and Analytics libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-config-ktx'
        implementation 'com.google.firebase:firebase-analytics-ktx'
    }
    

    Firebase Android BoMを使用すると、アプリは常に互換性のあるバージョンの Firebase Android ライブラリを使用します。

    (代替) BoM を使用せずに Firebase ライブラリの依存関係を追加する

    Firebase BoM を使用しないことを選択した場合は、依存関係の行で各 Firebase ライブラリ バージョンを指定する必要があります。

    アプリで複数のFirebase ライブラリを使用する場合は、BoM を使用してライブラリ バージョンを管理することを強くお勧めします。これにより、すべてのバージョンに互換性が確保されます。

    dependencies {
        // Add the dependencies for the Remote Config and Analytics libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-config-ktx:21.2.0'
        implementation 'com.google.firebase:firebase-analytics-ktx:21.2.0'
    }
    

ステップ 2: Remote Config シングルトン オブジェクトを取得する

Remote Config オブジェクト インスタンスを取得し、頻繁な更新を可能にする最小フェッチ間隔を設定します。

Java

FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
        .setMinimumFetchIntervalInSeconds(3600)
        .build();
mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);

Kotlin+KTX

val remoteConfig: FirebaseRemoteConfig = Firebase.remoteConfig
val configSettings = remoteConfigSettings {
    minimumFetchIntervalInSeconds = 3600
}
remoteConfig.setConfigSettingsAsync(configSettings)

シングルトン オブジェクトは、アプリ内の既定のパラメーター値を保存し、更新されたパラメーター値をバックエンドから取得し、取得した値をアプリでいつ利用できるようにするかを制御するために使用されます。

開発中は、最小フェッチ間隔を比較的低く設定することをお勧めします。詳細については、スロットリングを参照してください。

ステップ 3: アプリ内のデフォルト パラメータ値を設定する

Remote Config オブジェクトでアプリ内の既定のパラメーター値を設定して、Remote Config バックエンドに接続する前にアプリが意図したとおりに動作し、バックエンドで何も設定されていない場合に既定値を使用できるようにすることができます。

  1. アプリのres/xmlフォルダーに格納されているMapオブジェクトまたはXML リソース ファイルを使用して、一連のパラメーター名と既定のパラメーター値を定義します。 Remote Config クイックスタート サンプル アプリは、 XML ファイルを使用してデフォルトのパラメーター名と値を定義します。

    Remote Config バックエンド パラメータ値をすでに設定している場合は、すべてのデフォルト値を含む生成された XML ファイルをダウンロードして、アプリのres/xmlディレクトリに保存できます。

    休み

    curl --compressed -D headers -H "Authorization: Bearer token -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:downloadDefaults?format=XML -o remote_config_defaults.xml
    

    Firebase コンソール

    1. [パラメーター] タブで、[ メニュー] を開き、[既定値のダウンロード] を選択します。

    2. プロンプトが表示されたら、 Android 用の .xml を有効にし、[ファイルのダウンロード] をクリックします。

  2. 次のように、 setDefaultsAsync(int)を使用してこれらの値を Remote Config オブジェクトに追加します。

    Java

    mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);

    Kotlin+KTX

    remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)

ステップ 4: アプリで使用するパラメーター値を取得する

これで、Remote Config オブジェクトからパラメーター値を取得できます。バックエンドで値を設定し、フェッチしてアクティブ化すると、それらの値をアプリで使用できます。それ以外の場合は、 setDefaultsAsync(int)を使用して構成されたアプリ内パラメーター値を取得します。これらの値を取得するには、パラメーター キーを引数として指定して、アプリが期待するデータ型にマップする以下のメソッドを呼び出します。

ステップ 5: Remote Config バックエンドでパラメーター値を設定する

Firebase コンソールまたはRemote Config バックエンド APIを使用して、目的の条件付きロジックまたはユーザー ターゲティングに従って、アプリ内の値をオーバーライドする新しいサーバー側のデフォルト値を作成できます。このセクションでは、これらの値を作成する Firebase コンソールの手順について説明します。

  1. Firebase コンソールで、プロジェクトを開きます。
  2. メニューから [ Remote Config ] を選択して、Remote Config ダッシュボードを表示します。
  3. アプリで定義したパラメーターと同じ名前のパラメーターを定義します。パラメータごとに、デフォルト値を設定できます (対応するアプリ内デフォルト値を最終的にオーバーライドします)。また、条件値も設定できます。詳細については、 Remote Config のパラメーターと条件を参照してください。

ステップ 6: 値を取得してアクティブ化する

  1. Remote Config バックエンドからパラメータ値をフェッチするには、 fetch()メソッドを呼び出します。バックエンドで設定した値はすべて取得され、Remote Config オブジェクトに保存されます。
  2. 取得したパラメーター値をアプリで使用できるようにするには、 activate()メソッドを呼び出します。

    1 回の呼び出しで値を取得して有効化したい場合は、 fetchAndActivate()リクエストを使用して Remote Config バックエンドから値を取得し、アプリで利用できるようにすることができます。

    Java

    mFirebaseRemoteConfig.fetchAndActivate()
            .addOnCompleteListener(this, new OnCompleteListener<Boolean>() {
                @Override
                public void onComplete(@NonNull Task<Boolean> task) {
                    if (task.isSuccessful()) {
                        boolean updated = task.getResult();
                        Log.d(TAG, "Config params updated: " + updated);
                        Toast.makeText(MainActivity.this, "Fetch and activate succeeded",
                                Toast.LENGTH_SHORT).show();
    
                    } else {
                        Toast.makeText(MainActivity.this, "Fetch failed",
                                Toast.LENGTH_SHORT).show();
                    }
                    displayWelcomeMessage();
                }
            });

    Kotlin+KTX

    remoteConfig.fetchAndActivate()
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                val updated = task.result
                Log.d(TAG, "Config params updated: $updated")
                Toast.makeText(this, "Fetch and activate succeeded",
                    Toast.LENGTH_SHORT).show()
            } else {
                Toast.makeText(this, "Fetch failed",
                    Toast.LENGTH_SHORT).show()
            }
            displayWelcomeMessage()
        }

これらの更新されたパラメーター値はアプリの動作と外観に影響を与えるため、ユーザーが次にアプリを開いたときなど、ユーザーのスムーズなエクスペリエンスを保証する時点でフェッチされた値をアクティブ化する必要があります。詳細と例については、 Remote Config の読み込み方法をご覧ください。

スロットリング

アプリが短期間にフェッチする回数が多すぎると、フェッチ呼び出しが調整され、SDK はFirebaseRemoteConfigFetchThrottledExceptionを返します。 SDK バージョン 17.0.0 より前では、制限は 60 分のウィンドウで 5 つのフェッチ リクエストでした (新しいバージョンではより寛容な制限があります)。

アプリの開発中は、構成を非常に頻繁に (1 時間に何回も) フェッチしてアクティブ化し、アプリの開発とテストを迅速に繰り返すことができます。最大 10 人の開発者がいるプロジェクトの迅速なイテレーションに対応するために、アプリでFirebaseRemoteConfigSettingsオブジェクトを低い最小フェッチ間隔 ( setMinimumFetchIntervalInSeconds ) で一時的に設定できます。

Remote Config のデフォルトの最小取得間隔は 12 時間です。これは、実際に行われた取得呼び出しの数に関係なく、12 時間のウィンドウ内で複数回バックエンドから構成が取得されることはないことを意味します。具体的には、最小フェッチ間隔は次の順序で決定されます。

  1. fetch(long)のパラメータ
  2. FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long)のパラメーター
  3. デフォルト値の 12 時間

最小フェッチ間隔をカスタム値に設定するには、 FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long)を使用します。

Next steps

If you haven't already, explore the Remote Config use cases , and take a look at some of the key concepts and advanced strategies documentation, including: