Remote Config のパラメータと条件


クライアントとサーバー両方のユースケースにテンプレートを構成できます。クライアント テンプレートは、Android、Apple、ウェブ、Unity、Flutter、C++ アプリなど、Remote Config 用の Firebase クライアント SDK を実装するアプリ インスタンスに提供されます。サーバー固有のテンプレートの Remote Config パラメータと値は、Firebase Admin Node.js SDK v12.1.0 以降を使用する Remote Config 実装(Cloud Run と Cloud Functions を含む)に提供されます。

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 と評価されます。

たとえば、大規模言語モデル(LLM)モデル名とバージョン文字列を定義するパラメータを作成し、カスタム シグナル ルールに基づいて異なるモデルからのレスポンスを提供できます。このユースケースでは、ほとんどのリクエストを処理するために安定したモデル バージョンをデフォルト値として使用し、カスタム シグナルを使用して試験運用版モデルを使用してテスト クライアント リクエストに応答できます。

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

パラメータ値の優先順位

Firebase Admin SDK を使用してサーバーアプリで Remote Config を使用する場合は、テンプレート全体をフェッチして読み込み、クライアント リクエストごとに適切なパラメータ値をオンデマンドで抽出します。パラメータには複数の条件値が関連付けられる場合があります。

次のルールによって、特定の時点でテンプレートの評価中にどの値が割り当てられるかが決まります。

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

  2. 条件が true と評価される条件値が存在しない場合、テンプレートの評価時に Remote Config のデフォルト値が提供されます。パラメータがテンプレートに存在しない場合、またはデフォルト値が [アプリ内デフォルト値を使用する] に設定されている場合、テンプレートが評価されても、そのパラメータの値は提供されません。

サーバーアプリで Remote Config テンプレートを読み込んで評価する方法については、サーバー環境で 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 コンソールの [パラメータ] タブで、パラメータをグループ化できます。グループを作成または変更するには:

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

条件ルールの種類

サーバー アプリケーションの Remote Config テンプレートは、次の条件タイプをサポートしています。

ユーザー(ランダム %)

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

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

シード値を変更しない限り、ルールではデフォルトのキー(Firebase コンソールでは [シードを編集] と表示されます)が使用されます。[シード] フィールドをクリアすると、ルールでデフォルトのキーを使用するように戻すことができます。

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

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

ランダムな割合の条件をアプリケーションに追加する方法については、サーバー アプリケーションを構成するをご覧ください。

カスタム シグナル

Firebase Admin Node.js SDK 12.5.0 以降では、カスタム シグナル条件タイプを使用して、アプリで定義した任意の条件と照合できます。これにより、クライアント リクエストごとにサーバー レスポンスを調整できます。

たとえば、生成 AI を使用して特定のプラットフォーム用にチューニングされたさまざまなモデルでレスポンスを作成するサーバーアプリを開発している場合は、次のようにします。

  1. prompt パラメータと model_name パラメータを Remote Config サーバー テンプレートに追加します。
  2. ターゲットとするプラットフォームごとに、値が platform のカスタム シグナルを追加します。
  3. サーバー固有の Remote Config テンプレートにデフォルト値を追加し、定義したプラットフォーム条件ごとに条件値を追加します。
  4. platform カスタム シグナルを設定して使用するように、アプリケーション コードを更新します。

これで、アプリはテンプレートの評価中に適切なプロンプトとモデルを抽出し、それらを使用して各クライアントにカスタマイズされたレスポンスを返すことができます。

次のルールタイプを使用して、Firebase コンソールでカスタム シグナルを作成できます。

演算子のカテゴリ 演算子 価値
テキスト 完全一致、次を含む、次を含まない、正規表現を含む

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

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

数字 <, <=, =, !=, >, >= 小数点の両側に 10 桁以下の数値。
バージョン <, <=, =, !=, >, >= 一致するバージョン番号を表す数値(2.1.0 など)。

カスタム シグナルをアプリケーションに追加する方法については、サーバー アプリケーションを構成するをご覧ください。

パラメータと条件の検索

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 [条件] ページでは、その条件を最後に変更したユーザーとその変更日を、各条件の下の [最終更新日] の横で確認できます。

次のステップ

Remote Config を使用するように Firebase プロジェクトとサーバーアプリを構成するには、サーバー環境で Remote Config を使用するをご覧ください。