Remote Config テンプレートは、Firebase プロジェクト用にユーザーが作成する、JSON 形式のパラメータと条件のサーバーサイド セットです。このテンプレートは Firebase コンソールを使用して変更や管理を行うことができます。Firebase コンソールの [パラメータ] タブと [条件] タブには、テンプレートの内容がグラフィカルに表示されます。Remote Config バックエンド API または Firebase CLI を使用して構成の変更や管理を行うこともできます。
テンプレート ファイルの例を次に示します。
{
"conditions": [
{
"name": "ios",
"expression": "device.os == 'ios'"
}
],
"parameters": {
"welcome_message": {
"defaultValue": {
"value": "Welcome to this sample app"
},
"conditionalValues": {
"ios": {
"value": "Welcome to this sample iOS app"
}
}
},
"welcome_message_caps": {
"defaultValue": {
"value": "false"
}
},
"header_text": {
"defaultValue": {
"useInAppDefault": true
}
}
},
"version": {
"versionNumber": "28",
"updateTime": "2020-05-14T18:39:38.994Z",
"updateUser": {
"email": "user@google.com"
},
"updateOrigin": "CONSOLE",
"updateType": "INCREMENTAL_UPDATE"
}
}
パラメータを更新するたびに新しいバージョンの Remote Config テンプレートが作成されます。前のテンプレートは、必要に応じて再取得またはロールバックできるバージョンとして保存されます。バージョン番号は、Remote Config によって保存された初期値から順に増えていきます。例に示すとおり、すべてのテンプレートに version
フィールドがあり、その特定のバージョンに関するメタデータが含まれています。
Firebase コンソール、Firebase CLI、または Remote Config バックエンド API を使用すれば、次のバージョン管理タスクを行うことができます。
- 保存されているすべてのテンプレート バージョンの一覧表示
- 特定のバージョンの再取得
- 特定のバージョンへのロールバック
Remote Config テンプレートを管理するときは、有効期限のしきい値に注意してください。アプリで現在使用されているアクティブな Remote Config テンプレートが期限切れになることはありません。しかし、更新によって Remote Config テンプレートが置き換えられた場合、以前のバージョンは 90 日間だけ保存され、その後は有効期限が切れて取得できなくなります。また、保存できるバージョンの合計数は 300 個までです。これらの制限を超えてテンプレートの保存やロールバックが必要となる場合は、手動で保存してください。
Remote Config テンプレートのバージョンを管理する
このセクションでは、Remote Config テンプレートのバージョンを管理する方法について説明します。プログラムでテンプレートを作成、変更、保存する方法について詳しくは、プログラムで Remote Config を変更するをご覧ください。
保存されているすべての Remote Config テンプレートのバージョンを一覧表示する
保存されているすべての Remote Config テンプレート バージョンの一覧を取得できます。次に例を示します。
Node.js
function listAllVersions() {
admin.remoteConfig().listVersions()
.then((listVersionsResult) => {
console.log("Successfully fetched the list of versions");
listVersionsResult.versions.forEach((version) => {
console.log('version', JSON.stringify(version));
});
})
.catch((error) => {
console.log(error);
});
}
Java
ListVersionsPage page = FirebaseRemoteConfig.getInstance().listVersionsAsync().get(); while (page != null) { for (Version version : page.getValues()) { System.out.println("Version: " + version.getVersionNumber()); } page = page.getNextPage(); } // Iterate through all versions. This will still retrieve versions in batches. page = FirebaseRemoteConfig.getInstance().listVersionsAsync().get(); for (Version version : page.iterateAll()) { System.out.println("Version: " + version.getVersionNumber()); }
REST
curl --compressed -D headers -H "Authorization: Bearer <var>token</var>" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/<var>my-project-id</var>/remoteConfig:listVersions
Firebase コンソール
[Parameters] タブで、右上に表示される時計アイコンを選択します。[変更履歴] ページが開き、保存されているすべてのテンプレート バージョンが右側のリストメニューに一覧表示されます。
保存されているバージョンごとに表示される詳細情報には、変更の発生理由(コンソール、REST API、ロールバックのいずれかによる変更、またはテンプレートの強制保存による増分変更)が含まれます。
Firebase CLI
firebase remoteconfig:versions:list
返されるバージョンの数を制限するには、--limit
オプションを使用します。すべてのバージョンを取得するには 0 を渡します。
テンプレートのリストには、保存されているすべてのバージョンのメタデータが含まれます。メタデータには、アップデートの時刻、作成したユーザー、コンソールと REST API のどちらを使用して作成されたかなどが含まれます。バージョン要素の例を次に示します。
{
"versions": [{
"version_number": "6",
"update_time": "2018-05-12T02:38:54Z",
"update_user": {
"email": "jane@developer.org",
},
"description": "One small change on the console",
"origin": "CONSOLE",
"update_type": "INCREMENTAL_UPDATE"
}]
Remote Config テンプレートの特定のバージョンを取得する
保存されている特定のバージョンの Remote Config テンプレートを取得できます。次に例を示します。
Node.js
テンプレートの最新バージョンを取得するには、引数なしで getTemplate()
を渡します。特定のバージョンを取得するには、getTemplateAtVersion()
を使用します。
// Get template version: 6
admin.remoteConfig().getTemplateAtVersion('6')
.then((template) => {
console.log("Successfully fetched the template with ETag: " + template.etag);
})
.catch((error) => {
console.log(error);
});
Java
Template template = FirebaseRemoteConfig.getInstance().getTemplateAtVersionAsync(versionNumber).get(); // See the ETag of the fetched template. System.out.println("Successfully fetched the template with ETag: " + template.getETag());
REST
curl --compressed -D headers -H "Authorization: Bearer <var>token</var>" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/<var>my-project-id</var>/remoteConfig?version_number=6
URL パラメータ ?version_number
は GET
オペレーションでのみ有効です。これを使用してアップデートのバージョン番号を指定することはできません。?version_number
パラメータがない同様の get リクエストを使用すると、現在アクティブなテンプレートが取得されます。
Firebase コンソール
デフォルトでは、[変更履歴] タブの詳細ペインに、現在アクティブなテンプレートが表示されます。一覧内の別のバージョンの詳細情報を表示するには、右のメニューからそのバージョンを選択します。
現在選択されているバージョンと保存されている別のバージョンの詳細な差分を表示するには、選択されていないバージョンのコンテキスト メニューにカーソルを合わせて、[選択したバージョンと比較] を選択します。
Firebase CLI
firebase remoteconfig:get -v VERSION_NUMBER
オプションで、-o, FILENAME
で指定したファイルに出力を書き込むことができます。
保存されている特定の Remote Config テンプレート バージョンにロールバックする
保存されている任意のバージョンのテンプレートにロールバックできます。次に例を示します。
Node.js
// Roll back to template version: 6
admin.remoteConfig().rollback('6')
.then((template) => {
console.log("Successfully rolled back to template version 6.");
console.log("New ETag: " + template.etag);
})
.catch((error) => {
console.log('Error trying to rollback:', e);
})
Java
try { Template template = FirebaseRemoteConfig.getInstance().rollbackAsync(versionNumber).get(); System.out.println("Successfully rolled back to template version: " + versionNumber); System.out.println("New ETag: " + template.getETag()); } catch (ExecutionException e) { if (e.getCause() instanceof FirebaseRemoteConfigException) { FirebaseRemoteConfigException rcError = (FirebaseRemoteConfigException) e.getCause(); System.out.println("Error trying to rollback template."); System.out.println(rcError.getMessage()); } }
REST
保存されている Remote Config テンプレートにロールバックするには、カスタム メソッド :rollback
を使用し、適用する特定のバージョンをリクエスト本文に指定して HTTP POST を発行します。次に例を示します。
curl --compressed -D headers -H "Authorization: Bearer <var>token</var>" -H "Content-Type: application/json" -X POST https://firebaseremoteconfig.googleapis.com/v1/projects/<var>my-project-id</var>/remoteConfig:rollback -d '{"version_number": 6}'
レスポンスには、アクティブになった保存済みテンプレートの内容と、その新しいバージョンのメタデータが含まれます。
Firebase コンソール
[変更履歴] ページでロールバック可能な以前のテンプレート バージョンを選択すると、そのバージョンにロールバックするためのオプション ボタンがページの右上に表示されます。そのバージョンにロールバックし、すべてのアプリとユーザーに対してすぐにその値を使用する必要がある場合のみ、このボタンをクリックして確定してください。
Firebase CLI
firebase remoteconfig:rollback -v VERSION_NUMBER
このロールバック操作を行うと、実際には新しい番号のバージョンが作成されることに注意してください。たとえば、バージョン 10 からバージョン 6 にロールバックすると、実際にはバージョン 6 の新しいコピーが作成されます。この新しいコピーは元のバージョンと同じですが、バージョン番号が 11 であるという点のみ異なります。有効期限が切れていないと仮定すると、元のバージョン 6 は保存されたままで、バージョン 11 がアクティブなテンプレートになります。
Remote Config テンプレートのデフォルトをダウンロードする
アプリが常にインターネットに接続しているとは限らないため、すべての Remote Config パラメータに対してクライアントサイド アプリのデフォルト値を構成する必要があります。また、アプリのクライアントのデフォルト値と Remote Config バックエンドのデフォルトのパラメータ値は、時間の経過とともに変化する可能性があるため、定期的に同期する必要があります。
このセクションの最後にあるプラットフォーム別のリンクで説明しているように、これらのデフォルト値をアプリ内で手動で設定できます。または、このプロセスを効率化するために、アクティブな Remote Config テンプレート内のすべてのパラメータとそれらのデフォルト値に関する Key-Value ペアのみを含むファイルをダウンロードすることもできます。後者の場合、このファイルをプロジェクトに組み込み、それらの値をインポートするようにアプリを構成できます。
これらのファイルは、Android アプリの場合は XML 形式、iOS アプリの場合はプロパティ リスト(plist)形式、ウェブアプリの場合は JSON 形式でダウンロードできます。
アプリと Remote Config バックエンドが常に同期されるように、新しいアプリのリリース前には Remote Config のデフォルトを定期的にダウンロードすることをおすすめします。
テンプレートのデフォルトを含むファイルをダウンロードするには:
REST
curl --compressed -D headers -H "Authorization: Bearer token -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:downloadDefaults?format=file_format'
ダウンロードするファイル形式に応じて、format
値として XML
、PLIST
、または JSON
を使用します。
Firebase コンソール
- [Parameters] タブで メニューを開き、[デフォルト値をダウンロード] を選択します。
- メッセージが表示されたら、ダウンロードするファイル形式に対応するラジオボタンをクリックし、[ファイルをダウンロード] をクリックします。
Remote Config のデフォルト値をアプリにインポートする方法については、以下をご覧ください。