>_tech-draft
Firebaseのアイコン
Firebase
動画公開日
タイトル

Dynamically update your Firebase AI Logic app with Remote Config on iOS

再生時間

13分 4秒

Firebase Remote ConfigでAIモデルを動的に制御!アプリ更新なしでリアルタイム更新を実現

ポイント

  • AIを活用したアプリ開発者向けに、Firebase Remote Configがアプリ更新なしでAIモデルやアプリのロジックを遠隔制御する強力な手段であることを紹介します。
  • 本記事では、AIモデルの動的な切り替えを可能にするRemote Configの活用法と、パラメータ定義からアプリでの取得・適用まで具体的な設定手順を解説します。
  • これにより、開発者はリアルタイムで機能を更新し、ABテストを通じてユーザー体験を最適化できる知見を得られます。

Firebase Remote ConfigでAIモデルを動的に制御!アプリ更新なしでリアルタイム更新を実現

はじめに

皆さんは、AIを活用したアプリのロジックをまるでテレビチャンネルのように切り替えられたら、と想像したことはありますか?例えば、使用するAIモデルを瞬時に変更したり、新機能を一部のユーザーにだけABテストしたり、AIアシスタントのシステム指示を変更してより親しみやすい応答にしたり、といったことが可能になるのです。これこそが、FirebaseのAIロジックとRemote Configを組み合わせることで得られる強力な機能です。

アプリの再コンパイルや、長い承認プロセス、待ち時間は一切不要です。代わりに、クラウドから指先一つで即座にコントロールできます。このブログ記事では、FirebaseコンソールでのRemote Configパラメータの定義から、アプリケーション起動時のパラメータ値の取得、さらにはリアルタイムで機能フラグを受け取る方法まで、すべてをセットアップする方法をご紹介します。このコンセプトはAndroidとiOSの両方に適用できますが、iOSでのみ利用可能な非常にクールな機能も一つご紹介します。クラウドからアプリをリモートで制御する方法を見ていきましょう。

Firebase Remote Configとは?

Firebase Remote Configは、ユーザーに新しいバージョンのアプリをダウンロードしてもらうことなく、モバイルアプリやサーバーサイドアプリの動作や外観をリモートで構成できる強力なツールです。これを行うには、まずFirebaseコンソールで設定パラメータを定義します。

設定パラメータの定義

設定パラメータはキーバリューペアであり、ブール値、数値、文字列、さらにはより複雑な設定のためのJSONオブジェクトを保持できます。たとえば、大規模言語モデル(LLM)の「temperature」や「top K」といったパラメータが該当します。

これらの設定パラメータは、アプリケーション起動時など、適切なタイミングで取得できます。アプリ内でパラメータをアクティブ化し、その値を適用します。たとえば、画面のレイアウトやUIの色を変更する場合、ユーザーがその特定の画面にいる間にこれを行うのは、ユーザー体験を損なう可能性があるため避けるべきでしょう。

AIモデル制御の具体例:レシピ生成アプリ

私たちのチームは、ユーザーが提供する食材リストに基づいてAIがレシピを生成するミールプランニングアプリを開発しています。このアプリでは、完成した料理がどのように見えるかをユーザーが視覚化できるように、GeminiやImagineモデルを使用してレシピのリアルな画像を生成しています。

これらの画像は非常に高品質ですが、新しい画像生成モデルが登場し、多くの人々がその性能に驚いているという話を聞きました。そこで、私たちもその新しいモデルをアプリで使いたいと考えています。

課題:モデル更新とアプリの再デプロイ

ソースコード内のモデル名とバージョンを直接置き換えることもできますが、将来に備える必要があります。ソースコードを変更するたびにアプリの新しいバージョンをリリースする必要があり、これには時間がかかりすぎることがあります。

解決策:Remote Configによるモデル名の遠隔制御

そこで、Remote Configを使用してモデル名とバージョンをリモートで制御できるようにします。これにより、アプリ全体を再デプロイすることなく、瞬時に変更を加えることが可能になります。Remote Configは、iOS、Android、Flutter、Unity、C++、Web、さらにはサーバーサイドのサポートも提供するSDKを備えているため、このモデル名の変更は、Remote Configを使用してモデル名を管理するすべてのアプリにシームレスに伝播されます。

補足: Geminiに限らず、LLMモデル名を管理するためにこの戦略を実装することを強くお勧めします。これにより、現在アプリで使用しているモデルが非推奨になった場合でも、新しいバージョンのアプリをリリースすることなく、更新されたモデルバージョンにシームレスに移行できます。

Firebase Remote Configの設定手順

アプリで使用するモデル名をリモートで制御するには、まずFirebaseコンソールでモデル名用の新しいパラメータを定義する必要があります。

1. Firebaseコンソールでのパラメータ定義

  1. Remote Configセクションで、「Client」を選択します。これは、この新しいパラメータをクライアントアプリで使用するためです。
  2. 「Create configuration」をクリックして、新しい構成を作成します。
  3. パラメータの名前を入力し、パラメータタイプが「string」であることを確認します。ここでは「gemini_model_name」などの名前を使用します。
  4. 初期値として「Gemini 2.0 flash preview image generation」を設定します。これは、これまでにアプリで使用してきたモデルです。
  5. 値を保存し、「Publish changes」をクリックして変更を公開します。

2. アプリへのSDK追加と初期化

このサンプルアプリは他のFirebase機能も使用しているため、Firebase SDKはすでに追加されており、Firebaseプロジェクトに接続されています。まだ設定していない場合は、公式ドキュメントを参照してください。

Remote Configをインポートして使用する前に、Xcodeのアプリのメインターゲットにライブラリを追加する必要があります。

その後、Firebase Remote Configをインポートし、Remote Configインスタンスを初期化できます。

import FirebaseRemoteConfig

func setupRemoteConfig() {
    let remoteConfig = RemoteConfig.remoteConfig()

    // 本番環境では3600秒(1時間)を推奨し、スロットリングを防ぐ
    // 開発中はデバッグのため、より低い値を設定しても良い
    let settings = RemoteConfigSettings()
    settings.minimumFetchInterval = 0 // 開発中は0に設定
    remoteConfig.configSettings = settings

    // ... 他の初期化処理
}

3. アプリ内デフォルトパラメータの設定

ユーザーが初めてアプリを起動したときにオフラインであってもアプリが正しく動作するように、アプリ内デフォルトパラメータを設定することが重要です。これには2つの方法があります。

  1. コード内でデフォルトパラメータを定義する:
    remoteConfig.setDefaults(fromPlist: