Communityコーディング&開発github.com

Firebase AI Logic の基本

Firebase AI Logic(旧 Vertex AI for Firebase)をモバイルアプリやウェブアプリ(Android、iOS、Web、Flutter)に統合し、クライアントコードからGeminiモデルを呼び出します。テキスト生成、マルチモーダル入力、チャット、ストリーミング、構造化出力、ハイブリッドオンデバイス推論、App Check保護、Remote Configによるモデル切り替えなどの機能を追加する際に使用します。

Firebase AI Logic の基本 とは?

このスキルは、Firebase AI Logic(旧称 Vertex AI for Firebase)を使用して、モバイルアプリやウェブアプリ(Android、iOS、Web、Flutter)に生成AI機能を追加するための包括的なガイドです。開発者は専用のバックエンドを管理することなく、クライアントサイドSDKから直接Geminiモデルを呼び出せます。テキスト生成、マルチモーダル入力(画像、音声、動画、PDF)、チャットセッション、ストリーミング応答、構造化出力(JSON)、テキスト読み上げ(TTS)、画像生成、検索グラウンディングなど、幅広い機能をカバーしています。また、Firebase App Checkによるセキュリティ保護や、Remote Configを使った動的なモデル名の変更など、本番環境に必要な高度な設定も含まれています。セットアップ手順は、Firebase CLIによるプロビジョニングからプラットフォーム固有のSDK初期化まで詳細に説明されており、各プラットフォームのリファレンスコードも提供されています。

対応~Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/momabrouk18-eng/Website/tree/HEAD/.agents/skills/firebase-ai-logic-basics

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Firebase AI Logic の基本 は何をしますか?

概要

Firebase AI Logic は Firebase のプロダクトであり、開発者がクライアントサイド SDK を使用してモバイルアプリやウェブアプリに生成 AI を追加できるようにします。アプリは Firebase AI Logic を介して直接 Gemini モデルを呼び出すことができ、専用のバックエンドを管理する必要はありません。Firebase AI Logic は以前は「Vertex AI for Firebase」と呼ばれていました。

次の 2 つの Gemini API プロバイダをサポートしています:

  • Gemini Developer API: プロトタイピングに最適な無料枠と、本番環境向けの従量課金制を備えています。
  • Agent Platform Gemini API(旧称 Vertex AI): エンタープライズグレードの本番環境対応に最適で、Blaze 料金プランが必要です。

デフォルトでは Gemini Developer API を使用し、アプリケーションで必要な場合にのみ Agent Platform Gemini API(旧称 Vertex AI)を使用してください。


セットアップと初期化

前提条件

  • 開始する前に、ユーザーが構築したいプラットフォーム(Android、iOS、Web、Flutter)を特定してください。
  • プラットフォームがサポートされていない場合は、Firebase Docs でアプリケーション向け AI Logic の設定方法を学ぶようにユーザーを誘導し、このリンクを共有してください(https://firebase.google.com/docs/ai-logic/get-started)。
  • 以下の Firebase CLI コマンドはすべてのプラットフォームで npx を介して実行されるため、Node.js 20+ と npm が必要です。firebase-basics スキルを使用してそれらを確認し、Firebase CLI にログインしてください。Node.js がない場合やバージョン 20 より古い場合は、そのスキルの説明に従ってインストールするようユーザーに依頼してください。sudo apt-get などを使用してシステムパッケージを自分でインストールしないでください。ユーザーの同意なしにマシンを変更することになります。

1. Firebase AI Logic のプロビジョニング(すべてのプラットフォーム)

Firebase CLI を使用して、Firebase プロジェクトに Firebase AI Logic をプロビジョニングします:

  1. Firebase ディレクトリ(firebase.json があるディレクトリ)にいることを確認します。

  2. 意図した Firebase プロジェクトに対して Firebase CLI コマンドを実行していることを確認します。このコマンドを実行すると、アクティブなプロジェクトに「current」と表示されます:

    npx -y firebase-tools@latest projects:list
    
  3. 現在の Firebase プロジェクトに、ターゲットプラットフォーム用の Firebase アプリが少なくとも 1 つ登録されていることを確認します:

    npx -y firebase-tools@latest apps:list
    
  4. Firebase プロジェクトに Firebase AI Logic をプロビジョニングします:

    npx -y firebase-tools@latest init ailogic
    

    このコマンドにより、Firebase プロジェクトで Gemini Developer API が有効になります。

[!WARNING] 重要: Firebase AI Logic のプロビジョニングは必須です すべてのプラットフォーム(Android、iOS、Web、Flutter)において、アプリですでに Firebase を使用している場合でも、npx -y firebase-tools@latest init ailogic を実行してサービスをプロビジョニングする必要があります。GoogleService-Info.plist、google-services.json、firebase_options.dart の設定ファイルはクライアント設定のみを処理し、Firebase AI Logic サービスを有効にしないため、PERMISSION_DENIED エラーが発生します。

自分で init ailogic を実行できない場合(Node.js がない、Firebase CLI にログインしていないなど)でも、スキップしないでください。Firebase AI Logic サービスがプロビジョニングされるまで、アプリの Gemini モデルへのリクエストは失敗します。ユーザーにプロジェクトディレクトリでこのコマンドを実行するよう伝え、最終的なサマリーに含めてください:

npx -y firebase-tools@latest init ailogic

2. SDK の追加とアプリ内でのサービスの初期化

SDK の依存関係の追加とサービスの初期化はプラットフォーム固有です。コードを記述する前に、初期化コードリファレンス にリストされているターゲットプラットフォームのリファレンスを読んでください。

詳しくは Firebase AI Logic 入門 を参照してください。


コア機能

[!WARNING] 重要: 現在のモデル名を使用してください: 常に Firebase AI Logic モデルドキュメント で現在サポートされているモデル名を確認してください。gemini-2.0-pro や gemini-2.0-flash など、廃止された古いモデルは使用しないでください。

テキストのみの生成

マルチモーダル(テキスト + 画像/音声/動画/PDF 入力)

Firebase AI Logic を使用すると、Gemini モデルはアプリから直接画像ファイルを分析できます。これにより、キャプションの作成、画像に関する質問への回答、オブジェクトの検出、画像の分類などの機能が可能になります。画像以外にも、Gemini は音声、動画、PDF などの他のメディアタイプをインラインデータとして MIME タイプとともに渡すことで分析できます。20 メガバイトを超えるファイル(インラインデータとして HTTP 413 エラーが発生する可能性があります)の場合は、Cloud Storage for Firebase に保存し、その URL を Gemini Developer API に渡してください。

チャットセッション(複数ターン)

startChat を使用して履歴を自動的に維持します。

ストリーミング応答

結果の一部が到着したときに表示することでユーザーエクスペリエンスを向上させるには(タイピングエフェクトなど)、generateContent の代わりに generateContentStream を使用して、結果をより速く表示します。

テキスト読み上げ(TTS)生成

カスタム音声バックエンドなしで、クライアントデバイス上で直接音声を生成します。Firebase AI Logic は専用の Gemini TTS モデルを使用した音声合成をサポートしています:

  • サポートされているモデル: gemini-3.1-flash-tts-preview
  • 機能:
    • 単一話者ボイスパーソナの選択(voiceName)および SpeechConfig / MultiSpeakerVoiceConfig を使用した複数話者(最大 2 人の異なる話者)のダイアログ
    • responseModalities を audio に設定することで直接音声応答を取得
    • generateContentStream を使用した低遅延再生のためのストリーミング音声応答
    • 音声指示([Audio Profile: ...]、[Scene: ...]、[Director's Note: ...])および感情タグ([whispers]、[laughs]、[slowly])
    • 24 kHz 16 ビットリニア PCM(audio/l16)または WAV コンテナ形式(audio/x-wav)のクライアントサイドでのデコードと再生

実装の詳細、ストリーミングパターン、iOS(Swift)、Android(Kotlin)、Web 向けのコピー&ペースト可能なコードスニペットについては、テキスト読み上げ(TTS)生成ガイド を参照してください。

Nano Banana による画像生成

[!WARNING] 現在の画像モデル名を使用してください: 常に Firebase AI Logic モデルドキュメント で現在サポートされている画像生成(Nano Banana)モデル名を確認してください。

  • アップグレードされた Blaze 従量課金プランが必要です。

組み込みの googleSearch ツールによる検索グラウンディング


サポートされているプラットフォームとフレームワーク

サポートされているプラットフォームとフレームワークには、Android 向け Kotlin と Java、iOS 向け Swift、ウェブアプリ向け JavaScript、Flutter 向け Dart、Unity 向け C Sharp が含まれます。

高度な機能

構造化出力(JSON)

応答に対して特定の JSON スキーマを強制します。

オンデバイス AI(ハイブリッド)

ハイブリッド推論は、オンデバイスモデルが利用可能な場合はそれを使用してプロンプトを実行し、そうでない場合はクラウドホストモデルにフォールバックします(またはその逆)。可用性とセットアップ手順はプラットフォームによって異なります。詳細は ハイブリッドおよびオンデバイスドキュメント を参照してください。各プラットフォームのガイドへのリンクがあります。


セキュリティと本番環境

Firebase App Check

[!WARNING] 重要な安全要件: AI Logic を安全に使用するには、アプリに App Check を設定する必要があります。これにより、不正なクライアントが API クォータを使用したり、バックエンドリソースにアクセスしたりするのを防ぎます。

セットアップ手順については、Firebase AI Logic の App Check を参照してください。各プラットフォームは独自のアテステーションプロバイダを使用するため、ターゲットプラットフォームの手順に従ってください。

ローカル開発と CI/CD のための App Check デバッグトークン

App Check アテステーションプロバイダ(Play Integrity や DeviceCheck など)はエミュレータ、シミュレータ、CI 環境を拒否するため、開発とテスト中は App Check デバッグトークン を使用して標準のアテステーションをバイパスする必要があります。

[!WARNING] 重要: デバッグトークンをハードコードしたりコミットしたりしないでください App Check デバッグトークンを使用すると、クライアントはアテステーションをバイパスし、正当なデバイスなしでバックエンドリソースにアクセスできます。これらはプライベートシークレットとして扱ってください。デバッグトークンをバージョン管理にコミットしたり、クライアントコード(Web、Android、iOS、Flutter)に生のトークン文字列をハードコードしたりしないでください。 常にローカル環境変数、gitignored されたローカル設定、または CI シークレットを介して注入してください。トークンが漏洩した場合は、Firebase コンソールですぐに失効させてください。

ローカル開発(自動生成)
  1. アプリのコードで App Check プロバイダがデバッグファクトリを使用するように設定します。API はプラットフォーム固有です。プラットフォームリファレンスの App Check セクション、または上記の App Check ドキュメントを参照してください。
  2. エミュレータ/ローカルホストでアプリを実行します。
  3. ランタイムデバッガコンソール / Logcat ログで生成された UUID を探します:
    • 例: AppCheck debug token: "123a4567-b89c-12d3-e456-789012345678"
  4. このトークンを Firebase コンソールの セキュリティ > App Check > アプリ > デバッグトークンを管理 で登録します。

💡 ヒント(デバッグトークンの変更を防ぐ): シミュレータやエミュレータのリセット、新規インストール、ブラウザデータのクリアにより、SDK が新しいデバッグトークンを生成し、再度登録する必要が生じる場合があります。ハードコードせずに安定したデバッグトークンを維持するには、プラットフォームリファレンスの App Check セクションを参照してください。

CI/CD パイプライン(事前プロビジョニング)
  1. Firebase コンソールの セキュリティ > App Check > アプリ > デバッグトークンを管理 で新しいデバッグトークンを生成して登録します。
  2. このトークン文字列を CI システムの暗号化されたシークレットとして追加します(例:APP_CHECK_DEBUG_TOKEN)。
  3. テスト実行中にこのシークレットを環境変数として SDK に渡すようにビルドを設定します。

Firebase Remote Config

モデル名(特定のモデルバージョン文字列など)をハードコードする必要はありません。Firebase Remote Config を使用すると、新しいクライアントコードをデプロイせずにモデルバージョンを動的に更新できます。モデル名をリモートで変更する を参照してください。


初期化コードリファレンス

  • Android(Kotlin)

  • iOS(Swift)

    • Gemini API プロバイダ: Gemini Developer API
    • リファレンス: ios_setup.md
  • Web モジュラー API

  • Flutter(Dart)

    • Gemini API プロバイダ: Gemini Developer API
    • リファレンス: flutter_setup.md

[!WARNING] 重要: 現在のモデル名を使用してください: 常に Firebase AI Logic モデルドキュメント で現在サポートされているモデル名を確認してください。gemini-2.0-pro や gemini-2.0-flash など、廃止された古いモデルは使用しないでください。

リファレンス

Android(Kotlin)SDK 使用パターン iOS SDK コード例と使用パターン Web SDK のセットアップ、コード例、使用パターン

Flutter SDK コード例と使用パターン クライアントサイドテキスト読み上げ(TTS)生成

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

関連スキル