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 の種類に基づいて異なる画像を表示できます。
または、時間条件を使用して、アプリが特別なプロモーション アイテムをいつ表示するかを制御できます。
パラメータは、異なる条件を使用する複数の条件値を持つことができ、パラメータはプロジェクト内で条件を共有できます。 Firebase コンソールの[パラメーター] タブで、各パラメーターの条件値のフェッチ率を表示できます。このメトリクスは、過去 24 時間に各値を受け取ったリクエストの割合を示します。
パラメータ値の優先度
パラメータには、関連付けられた複数の条件値が含まれる場合があります。次のルールは、Remote Config サーバーからフェッチされる値と、特定の時点で特定のアプリ インスタンスで使用される値を決定します。
サーバー側のパラメーター値は、次の優先度リストに従って取得されます
最初に、特定のアプリ インスタンスに対して
true
と評価される条件がある場合、条件値が適用されます。複数の条件がtrue
と評価された場合、Firebase コンソール UI に表示される最初 (一番上) の条件が優先され、アプリがバックエンドから値をフェッチするときに、その条件に関連付けられた条件値が提供されます。 [条件] タブで条件をドラッグ アンド ドロップして、条件の優先順位を変更できます。true
と評価される条件を持つ条件値がない場合、アプリがバックエンドから値をフェッチするときに、サーバー側のデフォルト値が提供されます。パラメータがバックエンドに存在しない場合、またはデフォルト値がUse in-app defaultに設定されている場合、アプリが値をフェッチするときにそのパラメータに値は提供されません。
アプリでは、次の優先度リストに従ってget
メソッドによってパラメーター値が返されます。
- 値がバックエンドからフェッチされてアクティブ化された場合、アプリはフェッチされた値を使用します。アクティブ化されたパラメーター値は永続的です。
バックエンドから値が取得されなかった場合、または Remote Config バックエンドから取得された値がアクティブ化されていない場合、アプリはアプリ内のデフォルト値を使用します。
デフォルト値の取得と設定の詳細については、「 Remote Config テンプレートのデフォルトをダウンロードする」を参照してください。
アプリ内の既定値が設定されていない場合、アプリは静的な型の値 (
int
の場合は0
、boolean
の場合は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 コンソールの [パラメータ] タブでパラメータをグループ化できます。グループを作成または変更するには:
- [グループの管理] を選択します。
- 追加するパラメーターのチェックボックスを選択し、 [グループに移動] を選択します。
- 既存のグループを選択するか、名前と説明を入力して新しいグループを作成し、[新しいグループの作成]を選択します。グループを保存したら、[変更を公開] ボタンを使用して公開できます。
プログラムでグループを作成する
Remote Config REST APIは、パラメータ グループを作成および公開するための自動化された方法を提供します。 REST に精通しており、API へのリクエストを承認するように設定されている場合は、次の手順を実行してグループをプログラムで管理できます。
- 現在のテンプレートを取得する
- パラメータ グループを表す JSON オブジェクトを追加する
- 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 パッケージ名を入力します。 この属性は次のように使用します。
|
アプリ版 | 文字列値の場合: 完全に一致し、 含む、 含まない、 正規表現 数値の場合: =、≠、>、≥、<、≤ | ターゲットとするアプリのバージョンを指定します。 このルールを使用する前に、アプリ 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 条件の作成時に、自動的に収集されたユーザー プロパティは使用できません。 |
ランダムなパーセンテージのユーザー | Slider (Firebase コンソール内。REST APIは<= 、 > 、およびbetween 演算子を使用します)。 | 0~100 | このフィールドを使用して、アプリ インスタンスのランダム サンプル (サンプル サイズは最小 .0001%) に変更を適用し、スライダー ウィジェットを使用してランダムにシャッフルされたユーザー (アプリ インスタンス) をグループに分割します。 各アプリ インスタンスは、そのプロジェクトで定義されたシードに従って、ランダムな整数または小数に永続的にマップされます。 シード値を変更しない限り、ルールはデフォルトのキー (Firebase コンソールでは編集シードとして表示) を使用します。 Seedフィールドをクリアすることで、デフォルトのキーを使用するルールに戻すことができます。 特定のパーセンテージ範囲内で同じアプリ インスタンスに一貫して対処するには、条件全体で同じシード値を使用します。または、新しいシードを指定して、特定のパーセンテージ範囲に対してランダムに割り当てられたアプリ インスタンスの新しいグループを選択します。 たとえば、アプリのユーザーの重複しない 5% にそれぞれ適用される 2 つの関連条件を作成するには、1 つの条件を 0% から 5% のパーセンテージに一致するように構成し、別の条件を 5% から 5% の範囲に一致するように構成できます。 10%。一部のユーザーが両方のグループにランダムに表示されるようにするには、各条件内のルールに異なるシード値を使用します。 | インポートされたセグメント | にある | インポートされたセグメントを 1 つ以上選択します。 | このルールでは、インポートされたカスタム セグメントを設定する必要があります。 |
日付時刻 | ビフォアーアフター | デバイスのタイムゾーンまたは「(GMT+11) シドニー時間」などの指定されたタイムゾーンのいずれかで指定された日付と時刻。 | 現在の時刻をデバイスのフェッチ時刻と比較します。 |
最初のオープン | ビフォアーアフター | 指定されたタイムゾーンの指定された日時。 | 指定された時間範囲内にターゲット アプリを最初に開いたユーザーを照合します。 次の SDK が必要です。
|
インストール 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 プロジェクトのセットアップをご覧ください。