Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Remote Config のパラメータと条件

Firebase コンソールまたは Remote Config バックエンド API の使用時に、1 つ以上のパラメータ(Key-Value ペア)を定義し、これらのパラメータのアプリ内デフォルト値を指定します。アプリ内デフォルト値は、サーバー側パラメータ値を定義してオーバーライドできます。パラメータキーとパラメータ値は文字列ですが、パラメータ値はアプリで値を使用するときに他のデータ型にキャストできます。

Firebase コンソールまたは Remote Config REST API を使用して、パラメータの新しいデフォルト値を作成できます。また、アプリ インスタンスのグループのターゲット設定に使用する条件値を作成することもできます。Firebase コンソールで構成を更新するたびに、Remote Config テンプレートの新しいバージョンが作成されて公開されます。以前のバージョンは保存されるため、必要に応じて取得またはロールバックできます。これらのオペレーションは、REST API を通じて実行することもできます。

このガイドでは、パラメータ、条件、ルール、条件値について説明します。また、Remote Config サーバーとアプリでのさまざまなパラメータ値の優先順位について説明します。さらには、条件の作成に使用されるルールのタイプについても詳しく説明します。

条件、ルール、条件値

条件は、アプリ インスタンスのグループをターゲットとして設定するために使用されます。条件は 1 つまたは複数のルールで構成され、特定のアプリ インスタンスに対して条件が true と評価されるには、すべてのルールが true と評価される必要があります。ルールの値が定義されていない場合(値が利用できない場合など)は、そのルールは false と評価されます。

たとえば、アプリのスプラッシュ ページを定義するパラメータでシンプルなルール if device_os = Android を使用して、OS の種類に基づいて異なる画像を表示できます。

または、時間条件を使用して、アプリに特別なプロモーション アイテムを表示するタイミングを制御することもできます。

パラメータは、異なる条件を使用する複数の条件値を取ることができ、複数のパラメータが単一プロジェクト内の条件を共有できます。Firebase コンソールの [パラメータ] タブで、各パラメータの条件値の取得率を確認できます。この指標は、過去 24 時間に各値を受け取ったリクエストの割合を示します。

パラメータ値の優先順位

パラメータには複数の条件値が関連付けられる場合があります。次のルールによって、Remote Config サーバーからどの値をフェッチするか、また、特定のタイミングにおいて特定のアプリ インスタンスでどの値を使用するかが決定されます。

サーバー側パラメータ値がフェッチされる優先順位

  1. まず、特定のアプリ インスタンスに対して true と評価される条件があれば、その条件値が適用されます。複数の条件が true と評価される場合は、Firebase コンソール UI に表示される最初の(一番上の)条件が優先され、アプリがバックエンドから値をフェッチするときに、その条件に関連付けられた条件値が提供されます。条件の優先順位は、[条件] タブで条件をドラッグ&ドロップすることにより変更できます。

  2. 条件が true と評価される条件値が存在しない場合は、アプリがバックエンドから値をフェッチすると、サーバー側デフォルト値が提供されます。パラメータがバックエンドに存在しない場合、またはデフォルト値が [アプリ内デフォルト値を使用する] に設定されている場合は、アプリが値をフェッチしても、そのパラメータの値は提供されません。

アプリ内でパラメータ値が get メソッドによって返される優先順位

  1. バックエンドから値がフェッチされ、有効化された場合、アプリはそのフェッチされた値を使用します。有効化されたパラメータ値は永続的です。
  2. バックエンドから値がフェッチされなかった場合、または Remote Config バックエンドからフェッチされた値が有効化されていない場合、アプリはアプリ内デフォルト値を使用します。
  3. アプリ内デフォルト値が設定されていない場合、アプリは静的型の値(int の場合は 0boolean の場合は false など)を使用します。

この図には、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 コンソールの [パラメータ] タブで、パラメータをグループ化できます。グループを作成または変更するには:

  1. [グループを管理] を選択します。
  2. グループに追加するパラメータのチェックボックスをオンにして、[グループに移動] を選択します。
  3. 既存のグループを選択するか、新しいグループを作成します。新しいグループを作成する場合は、名前と説明を入力し、[新しいグループを作成] を選択します。グループを保存した後に [変更を公開] ボタンを使用すると、保存済みのグループを公開できます。

プログラムによってグループを作成する

Remote Config REST API を使用すると、自動的にパラメータ グループを作成して公開できます。REST を十分に理解していて、API に対するリクエストを承認するように設定している場合は、次の手順でグループをプログラムによって管理できます。

  1. 現在のテンプレートを取得します。
  2. パラメータ グループを表す JSON オブジェクトを追加します。
  3. 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 currently pumpkin spice season."
        }
      }
    }
  }
}

条件ルールの種類

Firebase コンソールでサポートされるルールの種類は次のとおりです。Remote Config REST API にも同等の機能があります。詳しくは、条件式リファレンスをご覧ください。

ルールの種類演算子 注意事項
アプリ == Firebase プロジェクトに関連付けられたアプリのアプリ ID のリストから選択します。 アプリを Firebase に追加する場合、iOS バンドル ID または Android パッケージ名を入力します。これらの情報により Remote Config ルールでアプリ ID として公開する属性が決まります。

この属性は、次のように使用します。
  • iOS の場合: アプリの CFBundleIdentifier を使用します。バンドル ID は、Xcode 内のアプリのプライマリ ターゲットの [General] タブにあります。
  • Android の場合: アプリの applicationId を使用します。applicationId はアプリレベルの build.gradle ファイルにあります。
アプリのバージョン 文字列値:
完全一致、
次を含む、
次を含まない、
正規表現

数値:
=、≠、>、≥、<、≤

ターゲットとするアプリのバージョンを指定します。

このルールを使用するには、事前にアプリ ID ルールを使って、Firebase プロジェクトに関連付けられている Android / iOS アプリを選択する必要があります。

iOS の場合: アプリの CFBundleShortVersionString を使用します。

注: iOS アプリで Firebase iOS SDK バージョン 6.24.0 以降を使用していることを確認してください。これより前のバージョンでは CFBundleShortVersionString は送信されません(リリースノートを参照)。

Android の場合: アプリの versionName を使用します。

このルールの文字列の比較では大文字と小文字が区別されます。[完全一致]、[次を含む]、[次を含まない]、[正規表現] のいずれかの演算子を使用する場合は、複数の値を選択できます。

[正規表現] 演算子を使うときは、RE2 形式で正規表現を作成します。正規表現は対象バージョン文字列の全部または一部に一致させることができます。また、対象文字列の先頭、末尾、または全体と一致させるために ^$ アンカーを使うこともできます。

ビルド番号 文字列値:
完全一致、
次を含む、
次を含まない、
正規表現

数値:
=、≠、>、≥、<、≤

ターゲットとするアプリのビルドを指定します。

このルールを使用するには、事前にアプリ ID ルールを使って、Firebase プロジェクトに関連付けられている iOS アプリまたは Android アプリを選択する必要があります。

この演算子は iOS アプリと Android アプリでのみ使用でき、アプリの CFBundleVersion(iOS の場合)または versionCode(Android の場合)に対応します。このルールの文字列の比較では大文字と小文字が区別されます。

[完全一致]、[次を含む]、[次を含まない]、[正規表現] のいずれかの演算子を使用する場合は、複数の値を選択できます。

[正規表現] 演算子を使うときは、RE2 形式で正規表現を作成します。正規表現は対象バージョン文字列の全部または一部に一致させることができます。また、対象文字列の先頭、末尾、または全体と一致させるために ^$ アンカーを使うこともできます。

プラットフォーム == iOS
Android
ウェブ
 
オペレーティング システム ==

ターゲットとするオペレーティング システムを指定します。

このルールを使用するには、事前にアプリ ID ルールを使って、Firebase プロジェクトに関連付けられているウェブアプリを選択する必要があります。

このルールは、特定のウェブアプリ インスタンスに関して、オペレーティング システムとそのバージョンが指定したリストのターゲット値と一致する場合に true と評価されます。
ブラウザ ==

ターゲットとするブラウザを指定します。

このルールを使用するには、事前にアプリ ID ルールを使って、Firebase プロジェクトに関連付けられているウェブアプリを選択する必要があります。

このルールは、特定のウェブアプリ インスタンスに関して、ブラウザとそのバージョンが指定したリストのターゲット値と一致する場合に true と評価されます。
日時 <=、> デバイスのタイムゾーンまたは "(GMT+11) Sydney time" などの指定されたタイムゾーンで指定された日時。 現在の時刻とデバイスで取得された時刻を比較します。
ユーザー(ランダム %) <=、> 0~100

ユーザー(アプリ インスタンス)をグループにセグメント化するために <=> 演算子を使用し、無作為に抽出したアプリ インスタンス(0.0001% 程度のサンプルサイズ)のサンプルに対して変更を適用するには、このフィールドを使用します。

各アプリ インスタンスはプロジェクトで定義されたキーに従って、ランダムな整数または小数に永続的にマッピングされます。別のキーを選択または作成しない限り、ルールではデフォルトのキー(Firebase コンソールでは DEF と表示)が使用されます。[次のキーを使用してユーザーをランダム化] フィールドをクリアすると、デフォルトのキーを使うルールに戻すことができます。複数のルールに単一のキーを使用して、指定したパーセント範囲内の同じアプリ インスタンスを一貫性をもって扱うことができます。または、新しいキーを作成して、指定したパーセント範囲に対応するランダムに割り当てたアプリ インスタンスの新しいグループを選択できます。

たとえば、重複しない 5% のアプリのユーザーにそれぞれ当てはまる 2 つの関連する条件を作成するには、<= 5% というルールを含む条件と、> 5%<= 10% というルールを含む条件を作成します。あるユーザーがどちらのグループにもランダムに現れるようにするには、各条件のルールに対して別々のキーを使用します。

ユーザー層 == プロジェクトで設定した Google アナリティクスのオーディエンスから 1 人または複数のユーザーを選択します。

このルールを使用するには、アプリ ID ルールを使って、Firebase プロジェクトで関連付けられているアプリを選択する必要があります。

注: アナリティクスの多くのオーディエンスは、アプリユーザーの操作に基づくイベントまたはユーザー プロパティによって定義されるため、特定のアプリ インスタンスに対してユーザー層ルールが有効になるまで少し時間がかかる場合があります。

デバイスの地域 / 国 == 1 つまたは複数の地域や国を選択します。 このルールは、特定のアプリ インスタンスが、一覧表示されている地域や国のいずれかにある場合に、そのアプリ インスタンスに対して true と評価します。デバイスの国コードは、リクエスト内のデバイスの IP アドレス、または Firebase 向け Google アナリティクスによって決定された国コード(アナリティクス データが Firebase と共有されている場合)を使用して決定されます。
デバイスの言語 == 1 つまたは複数の言語を選択します。 このルールは、リスト内にあるいずれかの言語を使用するデバイスに特定のアプリ インスタンスがインストールされている場合に、そのアプリ インスタンスに対して true と評価します。
ユーザー プロパティ 文字列値:
次を含む、
次を含まない、
完全一致、
正規表現

数値:
=、≠、>、≥、<、≤

注: クライアントでは、ユーザー プロパティに関する文字列値のみを設定できます。数値演算子を使用する条件の場合、Remote Config は、対応するユーザー プロパティの値を整数または浮動小数点の数値に変換します。
利用可能な Google アナリティクスのユーザー プロパティの一覧から選択します。 ユーザー プロパティを使用してユーザー層の特定のセグメントをカスタマイズする方法については、Remote Config およびユーザー プロパティをご覧ください。

ユーザー プロパティの詳細については、以下のガイドをご覧ください。

[完全一致]、[次を含む]、[次を含まない]、[正規表現] のいずれかの演算子を使用する場合は、複数の値を選択できます。

[正規表現] 演算子を使うときは、RE2 形式で正規表現を作成します。正規表現は対象バージョン文字列の全部または一部に一致させることができます。また、対象文字列の先頭、末尾、または全体と一致させるために ^$ アンカーを使うこともできます。

注: 現在のところ、自動的に収集されるユーザー プロパティを Remote Config 条件の作成に使用することはできません。
インポートしたセグメント == インポートしたセグメントを 1 つ以上選択します。 このルールでは、カスタムのインポートしたセグメントを設定する必要があります。

パラメータと条件の検索

Firebase コンソールで、Remote Config の [パラメータ] タブの上部にある検索ボックスを使用して、プロジェクトのパラメータキー、パラメータ値、条件を検索できます。

パラメータと条件の制限

Firebase プロジェクト内には、最大 2,000 個のパラメータ、最大 500 個の条件を設定できます。パラメータキーの長さは最大 256 文字で、アンダースコアまたはアルファベット (A~Z、a~z)で始める必要があります。数字を使用することもできます。プロジェクト内のパラメータ値文字列の合計長は、800,000 文字以内にする必要があります。

次のステップ

Firebase プロジェクトの構成を開始するには、Firebase Remote Config プロジェクトの設定についての記事をご覧ください。