Firebase Remote Config API の概要

Firebase Remote Config API を使うと、アプリのアップデートをユーザーにダウンロードしてもらわなくても、アプリの動作と外観を簡単に変更することができます。この概要では、以下について説明します。

  • Remote Config API の主な機能
  • Remote Config Library と API アーキテクチャ

Remote Config について詳しくは、Remote Config の概要をご覧ください。

Remote Config API の主な機能

Remote Config API には次の機能が実装されています。

  • 新しいパラメータ値の適用をアプリ側で制御。 パラメータ値の変更はアプリの動作と外観に影響します。そのため、API 設計には、バックグラウンドでフェッチした値をキャッシュに保存して、その値をアプリが適切なタイミングで有効化できるようにするシングルトン オブジェクトが実装されています。
  • アプリ内デフォルト パラメータ値。 すべての Remote Config パラメータのアプリ内デフォルト値をアプリ内で設定します。これらの値は、端末がネットワークに接続されていなくても、すぐにアプリで使用できます。アプリ内デフォルト値を取得するときと同じ方法で、フェッチされて有効化された値を取得します。
  • 効率的な値のフェッチと適用。Remote Config サーバーからの値のフェッチと有効化は安全かつ効率的に繰り返し行うことができます。そのため、コールバックをリッスンしたり、フェッチ済みの値の有効化が安全かどうかを判断したりするロジックをアプリに追加する必要はありません。実際に、パラメータ値をフェッチするリクエストを送信し、ユーザーがアプリを起動するたびに(またはそれ以上の頻度で)フェッチ済みのパラメータ値を有効化するアプリを作成できます。値のフェッチまたは有効化ができない場合、アプリはアプリ内デフォルト値を使用します。このとき、フェッチ リクエストや activateFetched の呼び出しによるパフォーマンスへの影響はほとんどありません。

Remote Config Library

Remote Config API アーキテクチャの基盤となるのが Remote Config Library です。Remote Config Library はシングルトン クラス(iOS では FIRRemoteConfig、Android では FirebaseRemoteConfig)を実装します。Remote Config オブジェクトは次の目的で使用します。

  • デフォルト値を設定する。 アプリを意図したとおりに動作させるために Remote Config サーバーでパラメータを管理(または作成)する必要はありません。アプリには Remote Config パラメータを必要に応じていくつでも設定し、アプリ内デフォルト値を作成することができます。後から Remote Config サーバー上にパラメータを作成することによって、アプリのパラメータの一部をオーバーライドできます。
  • パラメータ値をフェッチ、保存、管理する。 Remote Config オブジェクトにはパラメータ値の格納場所が 3 つあります。Default Config(アプリ内デフォルト値を格納)、Active Configget メソッドを使うアプリが使用できる値を格納)、Fetched Config(Remote Config サーバーから直近にフェッチされた値を格納)です。
  • Active Config を更新する Fetched Config を有効にする。 Fetched Config を有効にすると、Fetched Config 内のパラメータ値が Active Config にコピーされます。これにより、直近に取得された値がアプリで使用できるようになります。

API のアーキテクチャ

次の図は、アプリと Remote Config 間の通信方法を示しています。

次の表は、アプリと Remote Config Library 間の通信方法をさらに詳しく説明したものです。

メソッドとプロパティ 備考
Remote Config オブジェクト取得メソッド:

   iOS: remoteConfig
   Android: getInstance()

ステップ 1: アプリがこれらのメソッドを呼び出して Remote Config オブジェクトを作成します(または永続ストレージから Remote Config オブジェクトを復元します)。オブジェクトを新しく作成した場合、Fetched Config、Active Config、Default Config は最初は空で、パラメータ値は含まれていません。

注: StrictMode を使って Android アプリをテストする場合、アプリ作成時の getInstance() の初回呼び出しでは、ローカル ファイルから読み取りが行われることにご注意ください。StrictMode ディスク読み取りエラーが発生しないようにするには、この初回呼び出しを UI スレッドで行わないようにする必要があります。後続の getInstance() 呼び出しではメモリから読み取りが行われるため、呼び出しを UI スレッドで行ってもエラーは発生しません。Google Play に公開したアプリケーションで StrictMode を有効化したままにしないでください。

Default Config 設定メソッド:

   iOS: setDefaults:
   Android: setDefaults()
ステップ 2: アプリがこれらのメソッドを呼び出して Default Config に値を設定します。 アプリが新しい Remote Config オブジェクトから値を取得しようとしたときに、その値が Active Config にまだ存在していない場合、代わりに Default Config から値が提供されます。
フェッチ メソッド:

   iOS:
   fetchWithCompletionHandler:
   fetchWithExpirationDuration:completionHandler:
   Android: fetch()
アプリがこれらのメソッドを使って Remote Config サーバーを呼び出し、Fetched Config に保存されている新しいパラメータ値を取得します。

: fetch メソッドを使用しても、アプリの動作や外観に即座に影響するわけではありません。
有効化メソッド:

   iOS: activateFetched
   Android: activateFetched()
アプリが Fetched Config を有効化すると、Fetched Config に保存されている値が Active Config にコピーされます。
取得(型)メソッド:

   iOS: configValueForKey:
   Android: getLong()getString() など
アプリがこれらのメソッドを呼び出して Active Config からパラメータ値を取得します。
構成設定メソッド:

   iOS: initWithDeveloperModeEnabled:
   Android: setConfigSettings()
カスタム設定を行うときに使用します。現在のところ、運用中のアプリで許可されている以上の頻度でアプリ デベロッパーがアプリデータを更新できるようにする設定のためにのみ使用されます。詳しくは、iOS キャッシュAndroid キャッシュについての記事をご覧ください。
情報メソッドとプロパティ:

   iOS: lastFetchStatusallKeysWithPrefix:
   Android: getConfigSettings()getLastFetchStatus()getKeysByPrefix()
アプリがこれらのメソッドを使用して Remote Config オブジェクトに関する情報を取得します。これらのメソッドはアプリ開発時のデバッグで使用できます。

Remote Config API について詳しくは、以下の記事をご覧ください。

Remote Config とアプリの統合については、Android での Remote Config の使用iOS での Remote Config の使用の記事をご覧ください。

フィードバックを送信...