GEMINI LABEN
SUNSET — 画像生成モデルの停止まで残り6日です。imagen-4.0 系と Gemini 3 Image 系が8月17日に止まりますMIGRATE — 移行先として gemini-3.1-flash-image が案内されています。generate_images から generate_content への書き換えが必要ですCHECK — 移行後に同じプロンプトで同じ絵が出る保証はありません。必要な生成物は停止前に確保しておく判断が要りますCLASSROOM — 8月17日は Gemini in Classroom のモバイル提供が始まる日でもあります。web は8月10日に全年齢の学生へ広がりましたDEPRECATION — Grok 4.1 ファミリーの停止は8月20日、gemini-robotics-er-1.6-preview は8月31日で、後継は er-2 系ですCHANGELOG — Gemini API の changelog は7月30日が最新のままです。直近の大きな変更は Gemini 3.6 Flash と 3.5 Flash-Lite の GA ですSUNSET — 画像生成モデルの停止まで残り6日です。imagen-4.0 系と Gemini 3 Image 系が8月17日に止まりますMIGRATE — 移行先として gemini-3.1-flash-image が案内されています。generate_images から generate_content への書き換えが必要ですCHECK — 移行後に同じプロンプトで同じ絵が出る保証はありません。必要な生成物は停止前に確保しておく判断が要りますCLASSROOM — 8月17日は Gemini in Classroom のモバイル提供が始まる日でもあります。web は8月10日に全年齢の学生へ広がりましたDEPRECATION — Grok 4.1 ファミリーの停止は8月20日、gemini-robotics-er-1.6-preview は8月31日で、後継は er-2 系ですCHANGELOG — Gemini API の changelog は7月30日が最新のままです。直近の大きな変更は Gemini 3.6 Flash と 3.5 Flash-Lite の GA です
記事一覧/開発ツール
開発ツール/2026-03-30上級

Firebase Genkit × Gemini API 本番運用ノート — 個人開発アプリで動かして気づいた設計と落とし穴

Firebase Genkit と Gemini API を個人開発アプリのレビュー要約バックエンドで 1 ヶ月動かした運用ノート。Flow / Tool の設計、Cloud Functions と Cloud Run の使い分け、コストとレイテンシの実測値、公式にない 7 つの落とし穴をまとめました。

Firebase Genkit2Gemini API207RAG15Cloud FunctionsCloud Run5エージェント15本番環境6AI開発8

プレミアム記事

Firebase Genkit を、自分が長年運営している個人開発アプリ群のバックエンドに組み込み始めたのは 2026 年に入ってからでした。最初に動かしたのは、レビュー本文を要約してダッシュボードに流す小さな Flow です。これだけのことで、それまで Cloud Functions に書いていた「Gemini を叩く → トークン制限を見ながら結果を整形 → ロギングして DB に保存」という 80 行ほどのコードが、Genkit の defineFlow ひとつで完結してしまい、しばらく茫然としていました。

個人開発でバックエンドを触るとき、判断の軸はだいたい 2 つに絞られます。ユーザーを何秒待たせるか、そして月末の請求がいくらになるか。広告収益で固定費を回している構成では、この 2 つはどちらも直接的に効いてきます。

ですから Genkit を評価するときも、機能の豊富さより先に「この 2 つの数字がどう動くか」だけを見ていました。以下は、そのレビュー要約 Flow を 1 ヶ月本番で回しながら取った記録です。Flow の設計、Tool の組み立て、RAG、デプロイ、セキュリティといった基本パターンに加えて、公式ドキュメントには書かれていない「実際にハマったところ」と、コスト・レイテンシの実測値も載せています。

ひとつ先に断っておきます。実測を取ったのは 2026 年 4 月です。その後モデルのラインナップが入れ替わり、同じ「Flash」という名前でも単価が変わりました。数字をそのまま持ち回ると足をすくわれるので、後半に「実測値をモデル世代の入れ替わりから守る」という節を置いてあります。

Firebase Genkit とは:概念と利点

Firebase Genkit は、AI アプリケーション開発を加速するための統合フレームワークです。従来の LLM 統合では、PromptTemplate、Chain、Agent といった概念が分散していましたが、Genkit は Flow という統一された抽象化により、これらを効率的に管理します。

Genkit の中核概念

Flow: 入力と出力が型安全に定義された AI 処理のユニット。JavaScript/TypeScript での記述により、ランタイム型チェックと IDE サポートが得られます。Flow は以下の特性を持ちます。

  • ストリーミング対応: LLM の出力をリアルタイムで配信でき、エンドユーザーの UX 向上に直結
  • トレーシング: 自動的にすべての API 呼び出しと中間結果が記録され、本番デバッグが容易
  • 再利用可能: 複数の Flow から同じ子 Flow を呼び出し、DRY 原則を遵守

Tool: Flow から呼び出されるアクション。API 呼び出し、データベースアクセス、外部システム連携など。Gemini は Tool calling により、自律的に必要な Tool を選択・実行できます。

Prompt: テンプレート化された入力の定義。変数の注入、System Prompt の設定、Few-shot 例の埋め込みなど。

Embedder と Retriever: RAG(Retrieval Augmented Generation)実装の基盤。Embedder は テキストをベクトル化し、Retriever は類似度検索により関連ドキュメントを取得します。

セットアップ:Gemini 2.5 Pro/Flash との統合

Genkit をプロジェクトに導入するまでの手順を説明します。

# Node.js 18+ が必要
npm init -y
npm install firebase-genkit @genkit-ai/gemini

初期化スクリプト:

// genkit.ts
import { genkit } from 'genkit';
import { googleAI } from '@genkit-ai/googleai';
 
// モデル ID は 1 箇所に閉じ込め、環境変数で差し替えられるようにしておく
export const MODELS = {
  pro:   googleAI.model(process.env.GEMINI_PRO_MODEL   ?? 'gemini-2.5-pro'),
  flash: googleAI.model(process.env.GEMINI_FLASH_MODEL ?? 'gemini-2.5-flash'),
} as const;
 
const ai = genkit({
  plugins: [googleAI({ apiKey: process.env.GEMINI_API_KEY })],
  model: MODELS.pro,  // デフォルトモデル
});
 
export default ai;

モデル ID を 1 箇所に閉じ込める

最初は、プラグインがエクスポートしているモデル定数をそのまま各 Flow に import していました。動きはしますが、モデルを差し替えるときに Flow の数だけ import 文を書き換えることになります。Flow が 20 本を超えたあたりから、実装の時間より「この Flow だけ古いモデルのままではないか」を確認する時間のほうが長くなりました。

いまは上のように MODELS という 1 つのオブジェクトに閉じ込め、実際の ID は環境変数から入れています。ステージングだけ新しいモデルに向ける、といった切り替えがコード変更なしで済みます。あとで触れるコストの再計算をするときも、「どの Flow がどの ID を使っていたか」が 1 ファイルを見れば分かります。

以降のコード例はすべて、この MODELS を import している前提で書いています。

環境構成のポイント:

API キーは環境変数で管理します。本番環境では Secret Manager を使用し、ローカル開発では .env.local に記載します。API キーのプレースホルダーは YOUR_GEMINI_API_KEY とします。

// 複数環境への対応
const apiKey = process.env.GEMINI_API_KEY || process.env.LOCAL_API_KEY;
if (!apiKey) {
  throw new Error('GEMINI_API_KEY not found');
}

Pro 側は推論の深さ、Flash 側はレイテンシと単価、というのが基本的な分かれ目です。

ただし、この関係は世代をまたぐと綺麗に保たれません。後半で数字を並べますが、3.x 系の Flash は 2.5 系の Flash より単価が高く設定されています。「Flash と名前が付いていれば安い」という前提でコードを書いていると、モデルを上げた翌月の請求で驚くことになります。モデル名は性能の目印であって、価格の目印ではないと考えておくのが安全です。

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
個人開発アプリのレビュー要約バックエンドを Firebase Genkit + Gemini 2.5 Flash で 1 ヶ月動かした、コスト・レイテンシ・p95 の実測値
公式ドキュメントに書かれていない 7 つの落とし穴(Cold Start 35〜45秒・concurrency=1 デフォルト・runFlow 入れ子計上・Secret Manager 課金・Flow 名衝突・トレース PII・streamCallback バックプレッシャー)
Cloud Functions と Cloud Run の使い分けマトリクスと、モデル世代が入れ替わったあとに実測コストを読み直すための計算スクリプト
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Gemini Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

開発ツール2026-04-22
Gemini API × Cloud Tasks で作る非同期AIジョブキュー — タイムアウトとリトライを設計から解く
Cloud Run のタイムアウトと Gemini API のレート制限に挟まれて落ちる同期実装から、Cloud Tasks を軸にした非同期ジョブキュー設計へ移行する実践ガイドです。リトライ・DLQ・進捗通知まで本番で通る形で解説します。
API / SDK2026-05-05
Gemini RAGの選び方 2026 — シンプル・Advanced・Agenticの3パターンを実装で比べた
Gemini APIを使ったRAG実装の3パターン(シンプル・Advanced・Agentic)を実際のコードで比較。ユースケース別の選択基準と、最初にどこから始めるべきかを解説します。
開発ツール2026-08-05
テストは緑のまま、本番だけが止まる — 録画フィクスチャがモデル停止を隠す構造と freshness gate
録画済みAPIレスポンスで回るテストスイートは、モデル停止をすり抜けます。6件全部緑のまま404になる構造を最小構成で再現し、cassette走査のfreshness gateを実装・実測しました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →