GEMINI LABEN
VIDS — Gemini OmniがGoogle Vidsに直接組み込まれました。テキストで指示するだけでスタイル変更・カラーグレーディング・背景ノイズ除去まで扱えますHOME — Gemini for Homeの会話メモリ保持が15分に延びました。直前の指示を言い直さずに追加の依頼ができますLIVE — Gemini Liveが第1世代のGoogle Home MiniとNest Hubでも使えるようになりました。Nest Camの7月アップデートも順次展開中ですDOCS — Google DocsのGeminiによる文書作成・編集が11言語追加されました。Workspaceのデータを踏まえた文脈つきの支援が受けられますLOGS — 7月6日から、対応するInteractions API呼び出しの開発者ログをAI Studioのダッシュボードで確認できるようになりましたSAATHI — Geminiを用いた教育者向けWebアプリATL Saathiが、インドの100校でパイロット提供されていますVIDS — Gemini OmniがGoogle Vidsに直接組み込まれました。テキストで指示するだけでスタイル変更・カラーグレーディング・背景ノイズ除去まで扱えますHOME — Gemini for Homeの会話メモリ保持が15分に延びました。直前の指示を言い直さずに追加の依頼ができますLIVE — Gemini Liveが第1世代のGoogle Home MiniとNest Hubでも使えるようになりました。Nest Camの7月アップデートも順次展開中ですDOCS — Google DocsのGeminiによる文書作成・編集が11言語追加されました。Workspaceのデータを踏まえた文脈つきの支援が受けられますLOGS — 7月6日から、対応するInteractions API呼び出しの開発者ログをAI Studioのダッシュボードで確認できるようになりましたSAATHI — Geminiを用いた教育者向けWebアプリATL Saathiが、インドの100校でパイロット提供されています
記事一覧/API / SDK
API / SDK/2026-06-12上級

深夜のポーリングをやめる — Gemini Batch API を Webhook 駆動に作り替えた設計記録

Gemini Batch API の完了監視を 60 秒間隔のポーリングから Webhook 駆動へ移行した実作業の記録です。static/dynamic の使い分け、署名検証、実測値をまとめました。

Gemini API194Batch API5Webhook3イベント駆動2運用設計10Python38

プレミアム記事

明け方 4 時のサーバーログを眺めていて、手が止まりました。

夜間に流している Gemini Batch API のジョブはとっくに終わっているのに、結果の取り込みが始まったのは 58 秒後。理由は単純で、完了確認のポーリングが 60 秒間隔だったからです。

ログの大半は「まだ終わっていません」という応答の記録でした。一晩分をざっと数えると、status 確認の GET だけで 1,000 回を超えています。仕事をしていない通信が、ログの約 90% を占めている状態。

2026 年 5 月に Gemini API へ Webhooks が正式に入ったのを機に、この監視層を作り替えることにしました。本稿はその実作業の記録です。

ポーリング監視の実測コスト

作り替えの前に、現状を数字で押さえておきます。私の夜間パイプラインは、個人開発しているアプリの App Store・Google Play 向け説明文と、アプリ内テキストの多言語ローカライズ文言を Batch API でまとめて生成するもので、毎晩 3 ジョブを流しております。

  • ポーリング間隔: 60 秒
  • 1 ジョブの平均所要時間: 約 2 時間(Batch API はベストエフォートのため夜によって大きく揺れます)
  • 一晩の GET 回数: 約 120 回 × 3 ジョブ × リトライ込みで 約 1,080 回
  • 完了から検知までの遅延: 平均 30 秒、最悪 60 秒

GET 自体は無料に近いとはいえ、cron とポーリングスクリプトという「動き続ける部品」を一つ抱えることになります。実際、過去にはポーリング側の例外処理の不備で監視だけが静かに死んでいた朝がありました。ジョブは成功しているのに結果が取り込まれていない。あの空振りの感覚は、いまも指先に残っております。

static と dynamic、どちらで受けるか

Gemini API の Webhook には 2 種類あります。最初にここの設計判断を誤ると後で作り直しになるため、丁寧に整理します。

static webhook はプロジェクト単位の登録です。webhooks.create で一度エンドポイントを登録すると、購読したイベント(batch.succeededbatch.failed など)がプロジェクト全体から飛んできます。署名は対称鍵(signing secret)の HMAC 方式。

dynamic webhook はジョブ単位の指定です。batches.createwebhook_config に URI を渡すと、そのジョブの完了通知だけが届きます。署名は JWKS による非対称鍵方式で、user_metadata に任意のルーティング情報を載せられます。

私の環境では次のルールに落ち着きました。

  1. 定常の夜間バッチ → static。エンドポイントが固定で、Slack 通知やデータベース更新のような「全ジョブ共通の後処理」に繋がるため
  2. 臨時・実験ジョブ → dynamicuser_metadata{"job_group": "experiment"} のような目印を載せ、本番の後処理に混ざらないよう専用エンドポイントで受けるため

逆にしないことが肝心だと感じております。臨時ジョブのために static の購読を増やすと、レシーバー側の分岐が際限なく育ちます。

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

この記事の続きを読む

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

この記事で得られること
一晩あたり約 1,080 回あった status 確認の GET をゼロにした移行手順と、移行後も薄いフォールバックポーリングを残した判断基準
static webhook と dynamic webhook をジョブの性質でどう使い分けるか — 私の環境で固まった具体的な振り分けルール
standardwebhooks ライブラリによる署名検証・5 分の replay 対策・webhook-id での重複排除まで含めた、そのまま動く Flask レシーバーの実装
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

API / SDK2026-04-02
Gemini API の月額5万円を8,400円まで下げた運用設計 — キャッシュ・モデル使い分け・Batch API の組み合わせ方
Gemini API の月額費用を52,000円から8,400円まで下げた実装と運用の記録です。暗黙・明示キャッシュの使い分け、Flash/Pro の自動ルーティング、Batch API への移行、usage_metadata による実測まで、本番で動かしているコードとともに整理します。
API / SDK2026-07-18
Managed Agent の長時間走行がサンドボックス再生成で消える前に — チェックポイントと冪等リジュームの設計
Managed Agents のサンドボックスは再生成されます。40分走った処理が振り出しに戻る前に、進捗を外部へ逃がすチェックポイントと、副作用を二度実行しない冪等リジュームを設計します。SQLite で動く実装つき。
API / SDK2026-07-16
Gemini にスクリーンショットを採点させたら、全部78〜85点だった — 絶対スコアを捨ててペア比較に切り替えるまで
Gemini Vision に App Store スクリーンショットを100点満点で採点させると、良い案も崩した案も78〜85点に潰れます。弁別能を実測して絶対スコアを捨て、位置バイアスを除いたペア比較でランキングを作るまでの実装記録です。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →