クライアントとサーバーの両方のユースケース用のテンプレートを構成できます。クライアント テンプレートは、Android、Apple、ウェブ、Unity、Flutter、C++ アプリなど、Remote Config 用の Firebase クライアント SDK を実装するアプリ インスタンスに提供されます。サーバー固有のテンプレートの Remote Config のパラメータと値は、次のサーバー環境を使用する Remote Config 実装(Cloud Run と Cloud Functions を含む)に提供されます。
- Firebase Admin Node.js SDK v12.1.0 以降
- Firebase Admin Python SDK v6.7.0 以降
- Firebase Admin Go SDK(v4.17.0 以降)
- Firebase Admin Java SDK(v9.7.0 以降)
Firebase コンソールまたは Remote Config バックエンド API を使用する場合は、1 つ以上のパラメータ(Key-Value ペア)を定義し、これらのパラメータのアプリ内デフォルト値を指定します。アプリ内デフォルト値は、パラメータ値を定義してオーバーライドできます。パラメータキーとパラメータ値は文字列ですが、パラメータ値はアプリで値を使用するときに他のデータ型にキャストすることができます。
Firebase コンソール、Admin SDK、または Remote Config REST API を使用して、パラメータの新しいデフォルト値を作成できます。また、アプリ インスタンスのグループのターゲット設定に使用する条件値を作成することもできます。Firebase コンソールで構成を更新するたびに、Firebase は Remote Config テンプレートの新しいバージョンを作成してパブリッシュします。以前のバージョンは保存されるため、必要に応じて取得またはロールバックできます。これらのオペレーションは、Firebase コンソール、Firebase Admin SDK、REST API で行うことができます。詳細については、Remote Config テンプレートのバージョンを管理するをご覧ください。
このガイドでは、パラメータ、条件、ルール、条件値について説明します。また、Remote Config バックエンドとアプリでのさまざまなパラメータ値の優先順位について説明します。さらには、条件の作成に使用されるルールのタイプについても詳しく説明します。
条件、ルール、条件値
条件は、アプリ インスタンスのグループをターゲットとして設定するために使用されます。条件は 1 つまたは複数のルールで構成され、特定のアプリ インスタンスに対して条件が true と評価されるには、すべてのルールが true と評価される必要があります。ルールの値が定義されていない場合(値が利用できない場合など)は、そのルールは false と評価されます。
たとえば、アプリのスプラッシュ ページを定義するパラメータでルール if device_os = Android を使用して、OS の種類に基づいて異なる画像を表示できます。

または、時間条件を使用して、アプリに特別なプロモーション アイテムを表示するタイミングを制御することもできます。
パラメータは、異なる条件を使用する複数の条件値を取ることができ、複数のパラメータが単一プロジェクト内の条件を共有できます。Firebase コンソールの [パラメータ] タブで、各パラメータの条件値の取得率を確認できます。この指標は、過去 24 時間に各値を受け取ったリクエストの割合を示します。
パラメータ値の優先順位
パラメータには複数の条件値が関連付けられる場合があります。次のルールによって、Remote Config テンプレートからどの値をフェッチするか、また、特定のタイミングにおいて特定のアプリ インスタンスでどの値を使用するかが決定されます。
- まず、特定のクライアント リクエストに対して - trueと評価される条件があれば、その条件値が適用されます。複数の条件が- trueと評価される場合は、Firebase コンソール UI に表示される最初の(一番上の)条件が優先され、アプリがバックエンドから値をフェッチするときに、その条件に関連付けられた条件値が提供されます。条件の優先順位は、[条件] タブで条件をドラッグ&ドロップすることにより変更できます。
- 条件が - trueと評価される条件値が存在しない場合は、アプリがバックエンドから値をフェッチすると、Remote Config のデフォルト値が提供されます。パラメータがバックエンドに存在しない場合、またはデフォルト値が [アプリ内デフォルト値を使用する] に設定されている場合は、アプリが値をフェッチしても、そのパラメータの値は提供されません。
アプリ内でパラメータ値が get メソッドによって返される優先順位
- バックエンドから値がフェッチされ、有効化された場合、アプリはそのフェッチされた値を使用します。有効化されたパラメータ値は永続的です。
- バックエンドから値がフェッチされなかった場合、または Remote Config バックエンドからフェッチされた値が有効化されていない場合、アプリはアプリ内デフォルト値を使用します。 - デフォルト値の取得と設定の詳細については、Remote Config テンプレートのデフォルトをダウンロードするをご覧ください。 
- アプリ内デフォルト値が設定されていない場合、アプリは静的型の値( - intの場合は- 0、- booleanの場合は- falseなど)を使用します。
次の図は、Remote Config バックエンドとアプリ内でパラメータ値の優先順位がどのように決定されるかについて概要を示しています。

パラメータ値のデータ型
Remote Config では、パラメータごとにデータ型を選択できます。テンプレートの更新前に、すべての Remote Config 値がその型に照らし合わせて検証されます。データ型の格納と取得は getRemoteConfig リクエストで行われます。
サポートされているデータ型は次のとおりです。
- String
- Boolean
- Number
- JSON
Firebase コンソールの UI では、パラメータキーの横にあるプルダウンでデータ型を選択できます。REST API では、パラメータ オブジェクト内の value_type フィールドを使用して型を設定できます。
パラメータ グループ
Remote Config を使用すると、パラメータをグループ化して UI を整理し、ユーザビリティを向上させることができます。
たとえば、新しいログイン機能をリリースする際に、3 種類の認証タイプを有効または無効にする必要があるとします。この場合、Remote Config を使用して、それぞれの認証タイプを必要に応じて有効にする 3 つのパラメータを作成し、これらのパラメータを「New login」という名前のグループにまとめると、接頭辞の追加や特殊な並び替えが不要になります。
パラメータ グループを作成するには、Firebase コンソールまたは Remote Config REST API を使用します。作成した各パラメータ グループには、Remote Config テンプレートで一意の名前が付けられます。パラメータ グループを作成する際は、次の点にご注意ください。
- 各パラメータが属することができるグループは常に 1 つのみです。また、パラメータがグループに属していても、パラメータキーはすべてのパラメータで一意でなければなりません。
- パラメータ グループ名の長さは 256 文字に制限されています。
- REST API と Firebase コンソールの両方を使用する場合は、公開時にパラメータ グループを処理するように REST API ロジックを更新してください。
Firebase コンソールを使用してパラメータ グループを作成または変更する
Firebase コンソールの [パラメータ] タブで、パラメータをグループ化できます。グループを作成または変更するには:
- [グループを管理] を選択します。
- グループに追加するパラメータのチェックボックスをオンにして、[グループに移動] を選択します。
- 既存のグループを選択するか、新しいグループを作成します。新しいグループを作成する場合は、名前と説明を入力し、[新しいグループを作成] を選択します。グループを保存した後に [変更を公開] ボタンを使用すると、保存済みのグループを公開できます。
プログラムによってグループを作成する
Remote Config REST API を使用すると、自動的にパラメータ グループを作成して公開できます。REST を十分に理解していて、API に対するリクエストを承認するように設定している場合は、次の手順でグループをプログラムによって管理できます。
- 現在のテンプレートを取得します。
- パラメータ グループを表す JSON オブジェクトを追加します。
- HTTP PUT リクエストを使用してパラメータ グループを公開します。
parameterGroups オブジェクトにグループキーが含まれ、グループ化されたパラメータの説明とリストがネストされます。各グループキーはグローバルに一意である必要があります。
次の例は、pumpkin_spice_season パラメータのみが含まれるパラメータ グループ「new menu」を追加するテンプレート リビジョンからの抜粋です。
{
  "parameters": {},
  "version": {
    "versionNumber": "1",
    …
  },
  "parameterGroups": {
    "new menu": {
      "description": "New Menu",
      "parameters": {
        "pumpkin_spice_season": {
          "defaultValue": {
            "value": "true"
          },
          "description": "Whether it's pumpkin spice season."
        }
      }
    }
  }
}
カスタム シグナル条件
カスタム シグナル条件値を使用すると、アプリで定義して送信する任意のシグナルを、Remote Config のシグナルに基づいて作成した条件と照合できます。これにより、アプリまたはクライアントサイドのエクスペリエンスを調整できます。
カスタム シグナル条件は、次のクライアント環境で使用できます。
- iOS: v11.8.0 以降
- Android: v22.1.0 以降(Firebase BoM v33.8.0 以降)
- ウェブ: v11.2.0 以降
- Flutter: Flutter BoM バージョン 3.6.0 以降
たとえば、ホーム画面にバナーを表示するチケット販売アプリを開発しているとします。クライアントサイドのカスタム シグナル条件を使用すると、ユーザーの位置情報や興味 / 関心に基づいてこれらのバナーをカスタマイズできます。次の操作を実行できます。
- banner_image_urlと- banner_linkを Remote Config クライアント テンプレートに追加します。これらは、バナーの画像と、この画像に関連付けられたイベントページを表します。
- アプリからカスタム シグナルの値を cityとpreferred_event_categoryに設定します。
- クライアント固有の Remote Config テンプレートにデフォルト値を追加し、前の手順で設定したカスタム シグナルに基づいて条件値を作成します。
- クライアント固有の Remote Config テンプレートにデフォルト値を追加し、定義した条件ごとに条件値を追加します。
- カスタム シグナル条件を設定して使用するように、アプリケーション コードを更新します。
これで、アプリは Remote Config サーバーからこれらのパラメータをフェッチするときに、適切な banner_image_url と banner_link をダウンロードできるようになります。
上限
カスタム シグナル条件を作成する場合は、次の制限に従う必要があります。
- カスタム シグナルの数: アプリ インスタンスごとに最大 100 個のカスタム シグナルを作成できます。カスタム シグナルの値を null に設定すると、カスタム シグナルを未設定にできます。
- カスタム シグナル名: 各カスタム シグナル名は最大 250 文字です。
- カスタム シグナル値: 各カスタム シグナル値は最大 500 文字です。正規表現を使用する場合、最大文字数は 250 文字です。
条件ルールの種類
Firebase コンソールでサポートされるルールの種類は次のとおりです。Remote Config REST API にも同等の機能があります。詳しくは、条件式リファレンスをご覧ください。
| ルールの種類 | 演算子 | 値 | 注 | 
| アプリ | == | Firebase プロジェクトに関連付けられたアプリのアプリ ID のリストから選択します。 | アプリを Firebase に追加する場合、バンドル ID または Android パッケージ名を入力します。これらの情報により Remote Config ルールでアプリ ID として公開する属性が決まります。 この属性は、次のように使用します。 
 | 
| アプリのバージョン | 文字列値: 完全一致、 次を含む、 次を含まない、 正規表現を含む 数値: <、<=、=、!=、>、>= | ターゲットとするアプリのバージョンを指定します。 このルールを使用するには、事前にアプリ ID ルールを使って、Firebase プロジェクトに関連付けられている Android アプリまたは Apple アプリを選択する必要があります。 | Apple プラットフォームの場合: アプリの CFBundleShortVersionString を使用します。 注: Apple アプリが Firebase Apple プラットフォーム SDK バージョン 6.24.0 以降を使用していることを確認してください。CFBundleShortVersionString はそれより前のバージョンでは送信されません(リリースノートを参照)。 Android の場合: アプリの versionName を使用します。 このルールの文字列の比較では大文字と小文字が区別されます。[完全一致]、[次を含む]、[次を含まない]、[正規表現を含む] の演算子を使用する場合は、複数の値を選択できます。 [正規表現を含む] 演算子を使用する場合は、正規表現を RE2 形式で作成できます。正規表現は対象バージョン文字列の全部または一部に一致させることができます。また、対象文字列の先頭、末尾、または全体と一致させるために ^ と $ アンカーを使うこともできます。 | 
| ビルド番号 | 文字列値: 完全一致、 次を含む、 次を含まない、 正規表現 数値: =、≠、>、≥、<、≤ | ターゲットとするアプリのビルドを指定します。 このルールを使用するには、事前にアプリ ID ルールを使って、Firebase プロジェクトに関連付けられている Apple アプリまたは Android アプリを選択する必要があります。 | この演算子は Apple アプリと Android アプリでのみ使用でき、アプリの CFBundleVersion(Apple の場合)または versionCode(Android の場合)に対応します。このルールの文字列の比較では大文字と小文字が区別されます。 [完全一致]、[次を含む]、[次を含まない]、[正規表現を含む] の演算子を使用する場合は、複数の値を選択できます。 [正規表現を含む] 演算子を使用する場合は、正規表現を RE2 形式で作成できます。正規表現は対象バージョン文字列の全部または一部に一致させることができます。また、対象文字列の先頭、末尾、または全体と一致させるために ^ と $ アンカーを使うこともできます。 | 
| プラットフォーム | == | iOS Android ウェブ | |
| オペレーティング システム | == | ターゲットとするオペレーティング システムを指定します。 このルールを使用するには、事前にアプリ ID ルールを使って、Firebase プロジェクトに関連付けられているウェブアプリを選択する必要があります。 | このルールは、特定のウェブアプリ インスタンスに関して、オペレーティング システムとそのバージョンが指定したリストのターゲット値と一致する場合に trueと評価されます。 | 
| ブラウザ | == | ターゲットとするブラウザを指定します。 このルールを使用するには、事前にアプリ ID ルールを使って、Firebase プロジェクトに関連付けられているウェブアプリを選択する必要があります。 | このルールは、特定のウェブアプリ インスタンスに関して、ブラウザとそのバージョンが指定したリストのターゲット値と一致する場合に trueと評価されます。 | 
| デバイス カテゴリ | 等しい、等しくない | モバイル | このルールは、ウェブアプリにアクセスするデバイスがモバイルかモバイル以外(パソコンまたはコンソール)かを評価します。このルールタイプはウェブアプリでのみ使用できます。 | 
| 言語 | 次の中に含まれる | 1 つまたは複数の言語を選択します。 | このルールは、リスト内にあるいずれかの言語を使用するデバイスに特定のアプリ インスタンスがインストールされている場合に、そのアプリ インスタンスに対して trueと評価します。 | 
| 国 / 地域 | 次の中に含まれる | 1 つまたは複数の地域や国を選択します。 | このルールは、特定のアプリ インスタンスが、一覧表示されている地域や国のいずれかにある場合に、そのアプリ インスタンスに対して trueと評価します。デバイスの国コードは、リクエスト内のデバイスの IP アドレス、または Firebase 向け Google アナリティクスによって決定された国コード(アナリティクス データが Firebase と共有されている場合)を使用して決定されます。 | 
| ユーザー オーディエンス | 次を 1 つ以上含む | プロジェクトで設定した Google Analytics オーディエンスのリストから 1 人または複数のユーザーを選択します。 | このルールを使用するには、アプリ ID ルールを使って、Firebase プロジェクトで関連付けられているアプリを選択する必要があります。 注: Analytics の多くのオーディエンスは、アプリユーザーの操作に基づくイベントまたはユーザー プロパティによって定義されるため、特定のアプリ インスタンスに対してユーザー層ルールが有効になるまで少し時間がかかる場合があります。 | 
| ユーザー プロパティ | 文字列値: 次を含む、 次を含まない、 完全一致、 正規表現を含む 数値: =、≠、>、≥、<、≤ 注: クライアントでは、ユーザー プロパティに関する文字列値のみを設定できます。数値演算子を使用する条件の場合、Remote Config は、対応するユーザー プロパティの値を整数または浮動小数点の数値に変換します。 | 利用可能な Google Analytics ユーザー プロパティのリストから選択します。 | ユーザー プロパティを使用してユーザー層の特定のセグメントをカスタマイズする方法については、Remote Config およびユーザー プロパティをご覧ください。 ユーザー プロパティの詳細については、以下のガイドをご覧ください。 [完全一致]、[次を含む]、[次を含まない]、[正規表現を含む] の演算子を使用する場合は、複数の値を選択できます。 [正規表現を含む] 演算子を使用する場合は、正規表現を RE2 形式で作成できます。正規表現は対象バージョン文字列の全部または一部に一致させることができます。また、対象文字列の先頭、末尾、または全体と一致させるために ^ と $ アンカーを使うこともできます。注: Remote Config 条件の作成時に、自動的に収集されるユーザー プロパティを使用することはできません。 | 
| ユーザー(ランダム %) | Firebase コンソールでスライダーを使用。REST API では <=、>、between演算子を使用。 | 0~100 | このフィールドを使用して、アプリ インスタンスのランダムなサンプル(0.0001% 程度のサンプルサイズ)に対して変更を適用します。ランダムにシャッフルされたユーザー(アプリ インスタンス)をグループにセグメント分割するにはスライダー ウィジェットを使用します。 各アプリ インスタンスはプロジェクトで定義されたシードに従って、ランダムな整数または小数に永続的にマッピングされます。 シード値を変更しない限り、ルールではデフォルトのキー(Firebase コンソールでは [シードを編集] と表示されます)が使用されます。[シード] フィールドをクリアすると、ルールでデフォルトのキーを使用するように戻すことができます。 指定したパーセンテージ範囲で同じアプリ インスタンスを一貫性をもって扱うには、複数の条件で同じシード値を使用します。新しいシードを指定すると、指定されたパーセンテージ範囲でランダムに割り当てられるアプリ インスタンスの新しいグループを選択できます。 たとえば、重複しない 5% のアプリのユーザーにそれぞれ適用される 2 つの関連する条件を作成するには、1 つの条件を 0%~5% のパーセンテージに対応するように構成し、別の条件を 5%~10% の範囲に対応するように構成します。同じユーザーが両方のグループにランダムで含まれることを許可するには、それぞれの条件のルールで異なるシード値を使用します。 | 
| インポートしたセグメント | 次の中に含まれる | インポートしたセグメントを 1 つ以上選択します。 | このルールでは、カスタムのインポートしたセグメントを設定する必要があります。 | 
| 日時 | 前、後 | デバイスのタイムゾーンまたは "(GMT+11) Sydney time" などの指定されたタイムゾーンで指定された日時。 | 現在の時刻とデバイスで取得された時刻を比較します。 | 
| 初回起動 | 前、後 | 指定されたタイムゾーンで指定された日時。 | 指定された期間内に最初に対象のアプリを起動したユーザーと一致します。 次の SDK が必要です。 
 | 
| インストール ID | 次の中に含まれる | ターゲットとするインストール ID を 1 つ以上指定します(最大 50 個)。 | このルールは、インストールの ID が値のカンマ区切りリストに含まれている場合に、そのインストールに対して trueと評価します。インストール ID を取得する方法については、クライアント ID を取得するをご覧ください。 | 
| ユーザーが存在する | (演算子なし) | 現在のプロジェクト内におけるすべてのアプリのすべてのユーザーが対象になります。 | この条件ルールは、アプリやプラットフォームに関係なく、プロジェクト内のすべてのユーザーと一致させる場合に使用します。 | 
| カスタム シグナル | 文字列値: 次を含む、 次を含まない、 完全一致、 正規表現を含む 数値: =、≠、>、≥、<、≤ バージョン値: =、≠、>、≥、<、≤ | このルールの文字列の比較では大文字と小文字が区別されます。[完全一致]、[次を含む]、[次を含まない]、[正規表現を含む] の演算子を使用する場合は、複数の値を選択できます。[正規表現を含む] 演算子を使用する場合は、正規表現を RE2 形式で作成できます。正規表現は対象バージョン文字列の全部または一部に一致させることができます。また、対象文字列の先頭、末尾、または全体と一致させるために ^ と $ アンカーを使うこともできます。クライアント環境では、次のデータ型がサポートされています。 
 一致するバージョン番号を表す数値(2.1.0 など)。 | 使用するカスタム シグナル条件と条件式の詳細については、カスタム シグナル条件と条件を作成するために使用される要素をご覧ください。 | 
検索のパラメータと条件
Firebase コンソールで、Remote Config の [パラメータ] タブの上部にある検索ボックスを使用して、プロジェクトのパラメータキー、パラメータ値、条件を検索できます。
パラメータと条件の制限
Firebase プロジェクト内には、最大 3,000 個のパラメータ、最大 2,000 個の条件を設定できます。パラメータキーの長さは最大 256 文字で、アンダースコアまたはアルファベット(A~Z、a~z)で始める必要があります。数字を使用することもできます。プロジェクト内のパラメータ値文字列の合計長は、1,000,000 文字以内にする必要があります。
パラメータと条件の変更を表示する
Remote Config テンプレートに対する最新の変更は、Firebase コンソールで確認できます。個々のパラメータと条件ごとに、次のことが可能です。
- パラメータまたは条件を最後に更新したユーザーの名前を確認します。 
- 変更が同じ日に行われた場合は、アクティブな Remote Config テンプレートに変更を公開してから経過した分数または時間数を表示します。 
- 変更が過去 1 日以上前に行われた場合は、変更がアクティブな Remote Config テンプレートに公開された日付を表示します。 
パラメータの変更履歴
Remote Config の [パラメータ] ページでは、[最終公開日] 列に、各パラメータを最後に変更したユーザーと、変更の最終公開日が表示されます。
- グループ化されたパラメータの変更メタデータを表示するには、パラメータ グループを展開します。 
- 公開日で昇順または降順で並べ替えるには、[最終公開日] 列ラベルをクリックします。 
条件の変更履歴
Remote Config の [条件] ページでは、その条件を最後に変更したユーザーとその変更日を、各条件の下の [最終更新日] の横で確認できます。