Remote Config のパラメータと条件

クライアントとサーバーの両方のユースケース向けにテンプレートを構成できます。クライアント テンプレートは、Firebase SDK を実装しているすべてのアプリ インスタンスに提供されます。 Remote Config のクライアント SDK(Android、Apple、Web、Unity など) Flutter、C++ のアプリなどです。Remote Config 個のパラメータと値: サーバー固有のテンプレートは Remote Config の実装に提供されます。 (Cloud Run と Cloud Functions を含む)で Firebase Admin を使用している Node.js SDK v12.1.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:

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

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

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

パラメータ値の優先順位

パラメータには複数の条件値が関連付けられる場合があります。「 次のルールにより、Remote Config から取得する値が決まります。 どの値が特定の時点で特定のアプリ インスタンスで使用されているか time:

パラメータ値は、以下の優先順位リストに従ってフェッチされます

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

  2. 条件が true と評価される条件値がない場合、 Remote Config のデフォルト値は、アプリが 値を取得できます。パラメータがバックエンドに存在しない場合、または デフォルト値は [Use in-app default] に設定されており、値はありません。 アプリが値をフェッチするときに、そのパラメータに指定された値が使用されます。

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

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

    デフォルト値の取得と設定の詳細については、Remote Config テンプレートのデフォルトをダウンロードするをご覧ください。

  3. アプリ内デフォルト値が設定されていない場合、アプリは静的型の値(int の場合は 0boolean の場合は false など)を使用します。

この図は、パラメータの優先順位の付け方を Remote Config バックエンドとアプリ内:

上記の順序付きリストで説明されているフローを示す図

パラメータ値のデータ型

Remote Config では、パラメータごとにデータ型を選択できます。 テンプレートの前に、その型に対してすべての Remote Config 値を検証します 更新されますデータ型は getRemoteConfig に保存され、返されます。 リクエストできます。

サポートされているデータタイプは次のとおりです。

  • String
  • Boolean
  • Number
  • JSON

Firebase コンソール UI では、データ型を次から選択できます。 プルダウンを使ってみましょう。REST API では、パラメータ オブジェクト内の value_type フィールドを使用して型を設定できます。

パラメータ グループ

Remote Config を使用すると、パラメータをグループ化して、より整理されたものにすることができます。 ユーザビリティの向上です

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

次の例は、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."
        }
      }
    }
  }
}

条件ルールの種類

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

ルールの種類 オペレーター
アプリ == Firebase プロジェクトに関連付けられたアプリのアプリ ID のリストから選択します。 Firebase にアプリを追加する際に、バンドル ID または Android パッケージ名で、App ID として公開される属性を Remote Config 個のルール。

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

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

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

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

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

注: Apple アプリで Firebase Apple プラットフォーム SDK を使用していることを確認してください。 バージョン 6.24.0 以降のバージョンである必要があります。これは、CFBundleShortVersionString がバージョン 6.24.0 以降で (リリースノートをご覧ください)。

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 オーディエンスの多くはイベントまたは ユーザー プロパティ(アプリユーザーのアクションに基づく)がありますが、 [User in audience] ルールが特定のアプリに適用されるまで時間がかかる 構成されます

ユーザー プロパティ 文字列値:
次を含む、
次を含まない、
完全一致、
正規表現

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

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

ユーザー プロパティについて詳しくは、次のガイドをご覧ください。 <ph type="x-smartling-placeholder">

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

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

注: 自動収集されるユーザー プロパティ Remote Config 条件を作成する場合は使用できません。
ユーザー(ランダム %) Firebase コンソールでスライダーを使用。REST API では <=>between 演算子を使用。 0~100

このフィールドを使用して、アプリ インスタンスのランダムなサンプル(0.0001% 程度のサンプルサイズ)に対して変更を適用します。ランダムにシャッフルされたユーザー(アプリ インスタンス)をグループにセグメント分割するにはスライダー ウィジェットを使用します。

各アプリ インスタンスはプロジェクトで定義されたシードに従って、ランダムな整数または小数に永続的にマッピングされます。

ルールではデフォルトのキー(編集 Firebase コンソールなど)に表示されます。ルールを次の宛先に返すことができます。 [Seed] フィールドをクリアして、デフォルトの鍵を使用します。

指定したパーセンテージ範囲で同じアプリ インスタンスを一貫性をもって扱うには、複数の条件で同じシード値を使用します。新しいシードを指定すると、指定されたパーセンテージ範囲でランダムに割り当てられるアプリ インスタンスの新しいグループを選択できます。

たとえば、重複しない 5% のアプリのユーザーにそれぞれ適用される 2 つの関連する条件を作成するには、1 つの条件を 0%~5% のパーセンテージに対応するように構成し、別の条件を 5%~10% の範囲に対応するように構成します。同じユーザーが両方のグループにランダムで含まれることを許可するには、それぞれの条件のルールで異なるシード値を使用します。

インポートしたセグメント 次の中に含まれる インポートしたセグメントを 1 つ以上選択します。 このルールでは、カスタムのインポートしたセグメントを設定する必要があります。
日時 前、後 デバイスのタイムゾーンまたは "(GMT+11) Sydney time" などの指定されたタイムゾーンで指定された日時。 現在の時刻とデバイスで取得された時刻を比較します。
初回起動 前、後 指定されたタイムゾーンで指定された日時。

指定された期間内に最初に対象のアプリを起動したユーザーと一致します。

以下の SDK が必要です。

  • Google Analytics 向け Firebase SDK
  • Apple プラットフォーム SDK v9.0.0 以降または Android SDK v21.1.1 以降 (Firebase BoM v30.3.0 以降)
インストール ID 次の中に含まれる ターゲットとするインストール ID を 1 つ以上指定します(最大 50 個)。 このルールは、インストールの ID が値のカンマ区切りリストに含まれている場合に、そのインストールに対して true と評価します。

インストール ID を取得する方法については、クライアント ID を取得するをご覧ください。
ユーザーが存在する (演算子なし) 現在のプロジェクト内におけるすべてのアプリのすべてのユーザーが対象になります。

この条件ルールは、アプリやプラットフォームに関係なく、プロジェクト内のすべてのユーザーと一致させる場合に使用します。

パラメータと条件を検索

プロジェクトのパラメータキー、パラメータ値、条件を検索できる Firebase コンソールから [Remote Config パラメータ] タブの上部にある検索ボックスが表示されます。

パラメータと条件の制限

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

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

Remote Config テンプレートの最新の変更を確認できます Firebase コンソールで管理できます。個々のパラメータと条件ごとに、次のことが可能です。

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

  • 同じ日内に変更が行われた場合は、分数または 変更がアクティブなインスタンスにパブリッシュされてからの経過時間。 Remote Config テンプレート。

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

パラメータの更新

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

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

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

条件の更新

Remote Config [条件] ページでは、 最後に条件を変更したユーザーと変更日が表示されます 各条件の下にある [最終更新日] の横に表示されます。

次のステップ

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