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

リモート構成のパラメーターと条件

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

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

Firebase コンソール、 Admin SDK 、またはRemote Config REST APIを使用して、パラメータの新しいデフォルト値と、アプリ インスタンスのグループをターゲットにするために使用される条件値を作成できます。 Firebase コンソールで構成を更新するたびに、Firebase は新しいバージョンの Remote Config テンプレートを作成して公開します。以前のバージョンが保存されるため、必要に応じて取得またはロールバックできます。これらの操作は、Firebase コンソール、Firebase Admin SDK、および REST API を介して利用できます。詳しくは、 Remote Config テンプレート バージョンの管理で説明されています。

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

条件、ルール、および条件値

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

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

iOS のデフォルト値と Android の条件値を示す Firebase コンソールの「splash_page」パラメータのスクリーン キャプチャ

または、時間条件を使用して、アプリが特別なプロモーション アイテムをいつ表示するかを制御できます。

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

パラメータ値の優先度

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

サーバー側のパラメーター値は、次の優先度リストに従って取得されます

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

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

アプリでは、次の優先度リストに従ってgetメソッドによってパラメーター値が返されます。

  1. 値がバックエンドからフェッチされてアクティブ化された場合、アプリはフェッチされた値を使用します。アクティブ化されたパラメーター値は永続的です。
  2. バックエンドから値が取得されなかった場合、または Remote Config バックエンドから取得された値がアクティブ化されていない場合、アプリはアプリ内のデフォルト値を使用します。

    デフォルト値の取得と設定の詳細については、「 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 つのパラメーターを作成し、それらを「新しいログイン」という名前のグループに整理できます。プレフィックスを追加したり、特別な並べ替えを行う必要はありません。

パラメータ グループは、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オブジェクトには、ネストされた説明とグループ化されたパラメーターのリストを含むグループ キーが含まれます。各グループ キーはグローバルに一意である必要があることに注意してください。

たとえば、次のテンプレート リビジョンからの抜粋では、パラメーター グループ「新しいメニュー」に 1 つのパラメーター、 pumpkin_spice_seasonが追加されています。

{
  "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 に追加するときは、Remote Config ルールでアプリ IDとして公開される属性を定義するバンドル ID または Android パッケージ名を入力します。

この属性は次のように使用します。
  • Apple プラットフォームの場合:アプリのCFBundleIdentifierを使用します。バンドル IDは、Xcode のアプリのプライマリ ターゲットの [全般] タブにあります。
  • Android の場合:アプリのapplicationIdを使用します。アプリケーション レベルのbuild.gradleファイルでapplicationIdを見つけることができます。
アプリ版文字列値の場合:
完全に一致し、
含む、
含まない、
正規表現

数値の場合:
=、≠、>、≥、<、≤

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

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

Apple プラットフォームの場合:アプリのCFBundleShortVersionStringを使用します。

注:以前のバージョンでは CFBundleShortVersionString が送信されないため、Apple アプリが Firebase Apple プラットフォーム SDK バージョン 6.24.0 以降を使用していることを確認してください (リリース ノートを参照)。

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

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

正規表現演算子を使用すると、 RE2形式で正規表現を作成できます。正規表現は、ターゲット バージョン文字列のすべてまたは一部に一致できます。 ^および$アンカーを使用して、ターゲット文字列の先頭、末尾、または全体に一致させることもできます。

ビルド番号文字列値の場合:
完全に一致し、
含む、
含まない、
正規表現

数値の場合:
=、≠、>、≥、<、≤

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

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

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

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

正規表現演算子を使用すると、 RE2形式で正規表現を作成できます。正規表現は、ターゲット バージョン文字列のすべてまたは一部に一致できます。 ^および$アンカーを使用して、ターゲット文字列の先頭、末尾、または全体に一致させることもできます。

プラットホーム== iOS
アンドロイド
ウェブ
オペレーティング·システム==

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

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

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

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

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

このルールは、ブラウザーとそのバージョンが指定されたリストのターゲット値と一致する場合、特定の Web アプリ インスタンスに対してtrueと評価されます。
デバイス カテゴリではないモバイルこのルールは、Web アプリにアクセスするデバイスがモバイルか非モバイル (デスクトップまたはコンソール) かを評価します。このルールの種類は、Web アプリでのみ使用できます。
言語にある1 つ以上の言語を選択します。リストされた言語のいずれかを使用するデバイスにアプリ インスタンスがインストールされている場合、このルールは特定のアプリ インスタンスに対してtrueと評価されます。
国/地域にある1 つ以上の地域または国を選択します。インスタンスがリストされている地域または国のいずれかにある場合、このルールは特定のアプリ インスタンスに対してtrueと評価されます。デバイスの国コードは、リクエスト内のデバイスの IP アドレス、または Firebase Analytics によって決定された国コードを使用して決定されます (Analytics データが Firebase と共有されている場合)。
ユーザー層少なくとも 1 つを含むプロジェクト用に設定した Google アナリティクス オーディエンスのリストから 1 つ以上を選択します。

このルールには、Firebase プロジェクトに関連付けられたアプリを選択するためのアプリ ID ルールが必要です。

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

ユーザー プロパティ文字列値の場合:
含む、
含まない、
完全に一致し、
正規表現

数値の場合:
=、≠、>、≥、<、≤

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

ユーザー プロパティの詳細については、次のガイドを参照してください。

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

正規表現演算子を使用すると、 RE2形式で正規表現を作成できます。正規表現は、ターゲット バージョン文字列のすべてまたは一部に一致できます。 ^および$アンカーを使用して、ターゲット文字列の先頭、末尾、または全体に一致させることもできます。

注:現在、Remote Config 条件の作成時に、自動的に収集されたユーザー プロパティは使用できません。
ランダム パーセンタイルのユーザー<=, > 0~100

このフィールドを使用して、 <=および>演算子を使用してユーザー (アプリ インスタンス) をグループに分割し、アプリ インスタンスのランダム サンプル (サンプル サイズは最小 0.0001%) に変更を適用します。

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

たとえば、アプリのユーザーの重複しない 5% にそれぞれ適用される 2 つの関連条件を作成するには、1 つの条件に<= 5%ルールを含め、別の条件に> 5%ルールと<=ルールの両方を含めることができます。 10%ルール。一部のユーザーが両方のグループにランダムに表示されるようにするには、各条件のルールに異なるキーを使用します。

インポートされたセグメントにあるインポートされたセグメントを 1 つ以上選択します。このルールでは、インポートされたカスタム セグメントを設定する必要があります。
日付時刻ビフォアーアフターデバイスのタイムゾーンまたは「(GMT+11) シドニー時間」などの指定されたタイムゾーンのいずれかで指定された日付と時刻。現在の時刻をデバイスのフェッチ時刻と比較します。
最初のオープンビフォアーアフター指定されたタイムゾーンの指定された日時。

指定された時間範囲内にターゲット アプリを最初に開いたユーザーを照合します。

次の SDK が必要です。

  • Google アナリティクス用の Firebase SDK
  • Apple プラットフォーム SDK v9.0.0+ または Android SDK v21.1.1+ (Firebase BoM v30.3.0+)

インストール IDにあるターゲットに 1 つ以上 (最大 50) のインストール ID を指定します。インストールの ID がコンマ区切りの値のリストにある場合、このルールはそのインストールに対してtrueと評価されます。

インストール ID を取得する方法については、「クライアント識別子を取得する」を参照してください。

パラメータと条件の検索

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

パラメータと条件の制限

Firebase プロジェクト内では、最大 2000 個のパラメーターと最大 500 個の条件を使用できます。パラメータ キーの長さは最大 256 文字で、アンダースコアまたは英字 (AZ、az) で始まる必要があり、数字を含めることもできます。プロジェクト内のパラメーター値文字列の合計の長さは、1,000,000 文字を超えることはできません。

パラメータと条件の変更を表示する

Firebase コンソールから Remote Config テンプレートへの最新の変更を表示できます。個々のパラメーターと条件ごとに、次のことができます。

  • パラメータまたは条件を最後に変更したユーザーの名前を表示します。

  • 変更が同じ日に発生した場合は、変更がアクティブな Remote Config テンプレートに発行されてから経過した分数または時間数を表示します。

  • 変更が 1 日以上前に発生した場合は、アクティブな Remote Config テンプレートに変更が公開された日付を表示します。

パラメータの更新

[Remote Configパラメーター] ページの [最終公開] 列には、各パラメーターを最後に変更したユーザーと、変更の最終公開日が表示されます。

  • グループ化されたパラメーターの変更メタデータを表示するには、パラメーター グループを展開します。

  • 公開日で昇順または降順で並べ替えるには、[最終公開] 列ラベルをクリックします。

条件の更新

[Remote Config Conditions]ページで、条件を最後に変更したユーザーと、各条件の下の [最終変更] の横にある変更日を確認できます。

次のステップ

Firebase プロジェクトの構成を開始するには、Firebase Remote Config プロジェクトのセットアップをご覧ください。