Google は、黒人コミュニティのための人種的公平の促進に取り組んでいます。詳細をご覧ください。

Firebase Remote Config を使ってみる

Firebase Remote Config を使ってアプリ内パラメータを定義し、その値をクラウドで更新できます。これにより、アプリのアップデートを配布しなくてもアプリの外観や動作を変更できます。このガイドでは、作業を開始するための手順について説明し、サンプルコードを示します(すべてのサンプルコードは firebase/quickstart-js GitHub リポジトリからクローンを作成またはダウンロードできます)。

Remote Config をアプリに追加する

  1. ウェブ用の Firebase SDK をインストールします。

  2. Remote Config シングルトン オブジェクトを作成します。

    ウェブ バージョン 9

    import { getRemoteConfig } from "firebase/remote-config";
    
    const remoteConfig = getRemoteConfig();

    ウェブ バージョン 8

    const remoteConfig = firebase.remoteConfig();

    このオブジェクトは、アプリ内デフォルト パラメータ値の保存、更新されたパラメータ値の Remote Config バックエンドからのフェッチ、フェッチされた値がアプリで使用できるようになるタイミングの制御に使用されます。

  3. 最小フェッチ間隔を設定します。

    ウェブ バージョン 9

    remoteConfig.settings.minimumFetchIntervalMillis = 3600000;

    ウェブ バージョン 8

    remoteConfig.settings.minimumFetchIntervalMillis = 3600000;

    開発時には、比較的短い最小フェッチ間隔を設定することをおすすめします。詳細については、スロットル処理をご覧ください。

アプリ内デフォルト パラメータ値を設定する

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

ウェブ バージョン 9

remoteConfig.defaultConfig = {
  "welcome_message": "Welcome"
};

ウェブ バージョン 8

remoteConfig.defaultConfig = {
  "welcome_message": "Welcome"
};

アプリ内で使うパラメータ値を取得する

ここまでの手順で、パラメータ値を Remote Config オブジェクトから取得できるようになりました。後でバックエンドに値を設定し、フェッチして有効化すると、それらの値をアプリで使用できるようになります。アプリ内パラメータ値を取得するには、getValue() メソッドを呼び出します。このとき、引数としてパラメータキーを指定します。

ウェブ バージョン 9

import { getValue } from "firebase/remote-config";

const val = getValue(remoteConfig, "welcome_messsage");

ウェブ バージョン 8

const val = remoteConfig.getValue("welcome_messsage");

パラメータ値を設定する

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

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

値をフェッチして有効にする

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

1 回の呼び出しで値をフェッチして有効化する場合は、次の例のように fetchAndActivate() を使用します。

ウェブ バージョン 9

import { fetchAndActivate } from "firebase/remote-config";

fetchAndActivate(remoteConfig)
  .then(() => {
    // ...
  })
  .catch((err) => {
    // ...
  });

ウェブ バージョン 8

remoteConfig.fetchAndActivate()
  .then(() => {
    // ...
  })
  .catch((err) => {
    // ...
  });

これらの更新されたパラメータ値はアプリの動作と外観に影響するので、スムーズなユーザー エクスペリエンスを実現するタイミング(次にユーザーがアプリを開いたときなど)でフェッチ済みの値を有効化する必要があります。詳細と例については、Remote Config の読み込み方法をご覧ください。

スロットル処理

アプリが短期間に何度もフェッチすると、フェッチ呼び出しが抑制される可能性があります。このような場合、SDK は FETCH_THROTTLE エラーをスローします。 このエラーをキャッチして、指数バックオフ モード(後続のフェッチ リクエスト間隔をより長くする)で再試行することをおすすめします。

アプリの開発中は、開発とテストを繰り返すためのイテレーションがすばやくできるように、頻繁なキャッシュの更新(1 時間に何度も)が必要となることがあります。多数の開発者がいるプロジェクトで迅速なイテレーションに対応するには、アプリ内で最小フェッチ間隔(Settings.minimumFetchIntervalMillis)を小さく設定したプロパティを一時的に追加します。

Remote Config のデフォルトのフェッチ間隔は 12 時間であり、本番環境で推奨されるフェッチ間隔もこの値です。この場合、実際にフェッチ呼び出しが行われた回数に関係なく、12 時間の期間内で構成がバックエンドから複数回フェッチされることはありません。具体的には、次の順で最小フェッチ間隔が決定されます。

  1. Settings.minimumFetchIntervalMillis 内のパラメータ。
  2. デフォルト値(12 時間)。

次のステップ

Remote Config のユースケースに関する詳細な情報が必要な方は、主要なコンセプトと高度な戦略に関する以下のドキュメントをご覧ください。