GEMINI LABEN
NANOLITE — Nano Banana 2 Liteが登場しました。Googleで最も速く、最もコスト効率の高いGemini Imageモデルで、軽量な画像生成を安く回したい用途に向いていますOMNIFLASH — Gemini Omni Flashがpublic previewになりました。ネイティブにマルチモーダルなモデルで、企業や開発者が独自の動的な動画ワークフローを構築できますAGENTS — Managed Agentsが拡張されました。background: trueでサーバー側の非同期実行とポーリング、リモートMCPサーバー連携、対話をまたぐ認証情報のリフレッシュに対応しますMEMORY — Memory BankのIngestEvents APIが一般提供になりました。イベントの取り込みとメモリ生成を分離し、コンテンツを継続的にストリームできますTHROUGHPUT — Provisioned Throughputで、同一モデル・同一リージョンに対して最大7件の保留オーダーを提出できるようになりましたDEPRECATE — 画像生成モデルは8月17日に、Gemini Enterprise Agent PlatformのGrok 4.1系は8月20日に停止される予定ですNANOLITE — Nano Banana 2 Liteが登場しました。Googleで最も速く、最もコスト効率の高いGemini Imageモデルで、軽量な画像生成を安く回したい用途に向いていますOMNIFLASH — Gemini Omni Flashがpublic previewになりました。ネイティブにマルチモーダルなモデルで、企業や開発者が独自の動的な動画ワークフローを構築できますAGENTS — Managed Agentsが拡張されました。background: trueでサーバー側の非同期実行とポーリング、リモートMCPサーバー連携、対話をまたぐ認証情報のリフレッシュに対応しますMEMORY — Memory BankのIngestEvents APIが一般提供になりました。イベントの取り込みとメモリ生成を分離し、コンテンツを継続的にストリームできますTHROUGHPUT — Provisioned Throughputで、同一モデル・同一リージョンに対して最大7件の保留オーダーを提出できるようになりましたDEPRECATE — 画像生成モデルは8月17日に、Gemini Enterprise Agent PlatformのGrok 4.1系は8月20日に停止される予定です
記事一覧/API / SDK
API / SDK/2026-05-21上級

Gemini API × Cloud Pub/Sub によるイベント駆動 AI ワークフロー設計 — 個人開発者の実装メモ

Gemini API を Cloud Pub/Sub のイベント駆動型ワークフローに組み込む実装メモ。アプリレビュー解析パイプラインを題材に、リトライ・デッドレター・冪等性・コスト管理までを個人開発の視点で整理しました。

Gemini API191Cloud Pub/SubCloud Run5イベント駆動2個人開発91本番運用47

プレミアム記事

ここ数ヶ月、6本の壁紙アプリを並行で改修している中で、「ユーザーレビューが届いたら、それを Gemini で分類・要約し、優先度の高いものだけ自分の Slack に流す」という地味な仕組みを作り直していました。最初は Cloud Functions の HTTP トリガーで雑に組んでいたのですが、メッセージの突発的なバーストや Gemini API の一時的なエラーで、何度か「届くべき分析結果が届かない」状態に陥りました。

落ち着いて見直してみると、結局のところ AI ワークフローというのは、外部から流れ込んでくるイベントを LLM で「人間に近い形で読み解いて」次のシステムに橋渡しする仕事だと感じます。そこで核に据えたのが Cloud Pub/Sub でした。ここでは、Gemini API を Cloud Pub/Sub のイベント駆動パイプラインに組み込む際に、私が個人開発の現場でつまずいて学び直したことを、コードと運用設計の両面から書き残しておきます。

なぜ Pub/Sub を AI ワークフローの中心に置くのか

私は 2014 年から個人で iOS / Android アプリを公開してきました。累計のダウンロード数は 5,000 万を超え、その中で「外部のイベントが、なだれのように同時に押し寄せる瞬間」を何度も経験してきました。広告ネットワークから配信レポートが届く時間帯、StoreKit の通知がまとめて届くタイミング、レビューが急に増える App Store のアップデート直後。こうした波を、サービスを止めずに受け止める仕組みは、個人開発でも避けて通れない設計です。

Cloud Pub/Sub は、メッセージの送信側と受信側を非同期に切り離し、配信を少なくとも 1 回保証する Google Cloud のマネージドサービスです。Gemini API のような外部呼び出しを伴うワークフローでは、この「非同期と再送の責任を Google 側に寄せられる」という性質がとても効きます。

  • 送信側(Publisher)は「イベントが発生した」事実だけを投げ込めばよい
  • 受信側(Subscriber)は自分の処理可能なペースでメッセージを引き取れる
  • 失敗時の再配信、デッドレター退避、順序制御を、サブスクリプション設定で宣言的に扱える

Gemini API は、生成タスクによっては 1 回数百ミリ秒から数秒の応答時間を必要とします。Pub/Sub を経由しておくことで、突発的に 100 件のイベントが流れ込んできても、サブスクライバー側のレート制御で着実にさばけるようになります。「すぐに返事できなくてもよい AI 処理」は、ほぼすべて Pub/Sub の上に乗せられると考えてよさそうです。

レビュー解析パイプラインの全体像

具体的なイメージを掴むために、私が実際に運用している「App Store / Google Play のレビュー解析パイプライン」を題材にします。構成はおおむね次のとおりです。

  1. App Store Connect / Google Play Developer API から定期的にレビューを取得する Cloud Run Job
  2. 新しいレビューを 1 件ずつ app-reviews トピックに publish
  3. app-reviews サブスクリプションに紐づく Cloud Run サービスが、Gemini API を呼んで分類・要約・優先度判定
  4. 結果を Firestore に保存し、優先度が高いものだけ別トピック priority-alerts に publish
  5. priority-alerts を受け取ったハンドラが Slack の DM に通知

このうち AI が顔を出すのは 3 番目の段階だけです。残りは Pub/Sub と Cloud Run の組み合わせで素直に書けます。ポイントは、AI 呼び出しを 1 メッセージ 1 推論に分解しておくことです。バッチで 50 件まとめて投げるよりも、結果としてリトライしやすく、コストも見積もりやすくなります。

[Reviews fetcher (Cloud Run Job)]
        │ publish

[app-reviews topic] ──► [Cloud Run service: classifier]
                                   │ (Gemini API)

                          [Firestore: review_analyses]
                                   │ publish (high priority only)

                       [priority-alerts topic] ──► [Slack notifier]


                       [dead-letter topic: review-dlq]

このワークフローを設計するうえで、私は以下の三点を最初に決めました。

  • どのサブスクリプションを Push 型にして、どれを Pull 型にするか
  • メッセージの順序が必要か、それともユーザー単位で並列に処理してよいか
  • リトライをどこで諦めて、デッドレタートピックに退避させるか

これらの判断軸は、Gemini に限らず外部 API を呼ぶ Pub/Sub ワークフローで共通です。

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

この記事の続きを読む

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

この記事で得られること
Pub/Sub から Gemini を呼ぶ Push 型・Pull 型サブスクライバーの選び方と、それぞれの落とし穴を実装コードで示します
推論失敗をデッドレタートピックに退避させ、サイレントな品質低下を起こさないリトライ設計を提示します
Gemini 呼び出しの冪等性確保、メッセージ重複排除、コスト上限ガードまでをひとまとめの設計として整理します
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

API / SDK2026-06-03
Gemini Files API の孤児ファイルを棚卸しする — 多アプリ運用の照合と自動クリーンアップ設計
Files API にアップロードしたファイルは48時間で静かに消えます。多アプリ運用で発生する孤児ファイルとクォータ消費を、自前DBとの照合と定期クリーンアップで統制する本番設計を、壁紙アプリ運営の実装メモとしてまとめました。
API / SDK2026-05-04
Gemini API のコールドスタート 6 秒問題を解決する — Cloud Run・Lambda・Workers の起動最適化設計
Gemini API をサーバレスで動かしたときの最初の1リクエストだけ6秒という体感問題を、Cloud Run・AWS Lambda・Cloudflare Workers それぞれの起動最適化パターンで解決します。実測値・コード例・コスト判断軸まで踏み込んで解説します。
API / SDK2026-07-19
静止画か短い動画か — Nano Banana 2 Lite と Omni Flash のコスト桁差で機能の置き所を決める
壁紙アプリの目玉アセットを静止画にするか短い動画にするかで手が止まったとき、決め手になったのは好みではなくコストの桁でした。Nano Banana 2 Lite と Omni Flash の単価を同じ土俵に並べ、動く意思決定関数まで落とし込みます。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →