GEMINI LABEN
ROBOTICS — 8月31日に停止した ER 1.6 preview には後継があります。Gemini Robotics ER 2 が公開プレビュー中で、通常版とストリーミング版の2種類が提供されていますVIDEO — ER 2 の成功・失敗判定は静止画ではなく生の映像フィード上で動きます。こぼれ・滑り・位置ずれのような、実行の途中で起きる失敗を捉えられる設計ですDEADLINE — 次の期限は9月30日、gemini-omni-flash-preview の廃止です。移行先は8月27日に GA になった gemini-omni-1.1-flash で、残り4週間を切りましたAPIKEY — 残りの標準 API キーは、制限付きのものも含めて9月中に全面停止します。移行先は Google Cloud サービスアカウントに紐付く auth キー形式ですPRICE — Gemini 3.7 Flash の導入価格 $0.75/$3.75 per 1M は12月31日までです。2027年1月1日から $1.50/$7.50 になるため、年を跨ぐ見積もりは2本立てが要りますAUDIO — Gemini 3.5 Transcribe は85言語以上の言語検出、話者ダイアライゼーション、単語単位タイムスタンプ、最大1,000語のカスタム語彙バイアスに対応していますROBOTICS — 8月31日に停止した ER 1.6 preview には後継があります。Gemini Robotics ER 2 が公開プレビュー中で、通常版とストリーミング版の2種類が提供されていますVIDEO — ER 2 の成功・失敗判定は静止画ではなく生の映像フィード上で動きます。こぼれ・滑り・位置ずれのような、実行の途中で起きる失敗を捉えられる設計ですDEADLINE — 次の期限は9月30日、gemini-omni-flash-preview の廃止です。移行先は8月27日に GA になった gemini-omni-1.1-flash で、残り4週間を切りましたAPIKEY — 残りの標準 API キーは、制限付きのものも含めて9月中に全面停止します。移行先は Google Cloud サービスアカウントに紐付く auth キー形式ですPRICE — Gemini 3.7 Flash の導入価格 $0.75/$3.75 per 1M は12月31日までです。2027年1月1日から $1.50/$7.50 になるため、年を跨ぐ見積もりは2本立てが要りますAUDIO — Gemini 3.5 Transcribe は85言語以上の言語検出、話者ダイアライゼーション、単語単位タイムスタンプ、最大1,000語のカスタム語彙バイアスに対応しています
記事一覧/API / SDK
API / SDK/2026-07-14上級

Batch ジョブが『まだ RUNNING です』のまま半日溶けていたとき — 状態別の滞留予算とレコード突合で詰まりを早期に名指しする運用メモ

Gemini Batch API のジョブが 24 時間 SLA の陰で静かに滞留していたとき、状態別の滞留時間予算とレコード数の突合で詰まりと取りこぼしを早期に検知するための計測手順を、運用ログの実測とともに整理します。

Gemini API228Batch API5SLO2オブザーバビリティ3運用12

プレミアム記事

夜間バッチのダッシュボードを朝いちばんに開いたら、ジョブが RUNNING のまま静止していました。投入は前夜の 22 時。もう 11 時間が経っています。けれど Batch API の SLA は「24 時間以内の完了」。監視は 24 時間を閾値に組んであったので、アラートはまだ鳴っていませんでした。

つまり、あと 13 時間、このジョブが本当に生きているのか死んでいるのか分からないまま待つしかない。納品は昼です。間に合いません。

この日の反省は明確でした。SLA を閾値にした監視は、詰まりを「手遅れになってから」しか教えてくれない。必要だったのは、いつもと違う滞留を、いつもの相場と比べて早期に名指しする仕組みでした。ここでは個人開発で運用しているパイプラインを題材に、状態ごとの滞留時間を計測して予算を引き、そこから外れたジョブを前倒しで拾う手順を、運用ログの実測とあわせて残しておきます。私自身、月次と夜間の二つの経路で同じ痛みを繰り返してから、ようやくこの形に落ち着きました。

なぜ 24 時間 SLA を閾値にすると必ず手遅れになるのか

Batch API の 24 時間はあくまで「これ以内には終わらせます」という上限の約束です。実際の完了は、通常負荷なら数分から数十分に収まります。ここに落とし穴があります。

正常なジョブが 20 分で終わる母集団に対して、閾値を 24 時間に置くと、詰まったジョブを検知できるのは「正常時の 70 倍以上遅れてから」になります。相場が 20 分なのに、90 分でも 3 時間でも黙っている監視は、監視として機能していません。

考え方を変えます。SLA は事業側との契約であって、異常検知の閾値ではない。異常検知の閾値は「このジョブが普段どれだけ状態に留まるか」という自分たちの実測分布から引くべきものです。

状態遷移のたびに滞留時間を刻む

まず、ジョブが各状態にどれだけ留まったかを記録します。QUEUED にいた時間、RUNNING にいた時間を、遷移のたびに台帳へ書き込みます。ポーリングのついでに刻むだけなので、追加の負荷はほとんどありません。

# 何を記録するコードか:
# ポーリングごとに状態を観測し、状態が変わった瞬間に
# 「直前の状態に何秒留まったか」を台帳へ追記する
import time, json
from pathlib import Path
from google import genai
 
client = genai.Client(api_key="YOUR_API_KEY")
 
TERMINAL = {"BATCH_STATE_SUCCEEDED", "BATCH_STATE_FAILED", "BATCH_STATE_CANCELLED"}
 
def track_dwell(name: str, ledger_path: str, poll: int = 30):
    prev_state = None
    entered_at = time.time()
    while True:
        job = client.batches.get(name=name)
        state = job.state.name
        now = time.time()
        if prev_state is None:
            prev_state, entered_at = state, now
        elif state != prev_state:
            record = {
                "name": name,
                "from_state": prev_state,
                "dwell_sec": round(now - entered_at, 1),
                "to_state": state,
                "ts": now,
            }
            with open(ledger_path, "a", encoding="utf-8") as f:
                f.write(json.dumps(record) + "\n")
            prev_state, entered_at = state, now
        if state in TERMINAL:
            return
        time.sleep(poll)

ここで大切なのは、状態遷移ログをサンプリング対象に入れないことです。件数が少ないログなので、汎用のサンプリングに巻き込むと、ちょうど欲しかった 1 行が落ちて「記録が無い」状態になりがちです。Batch 関連のログは無条件保存のカテゴリに分けておきます。

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

この記事の続きを読む

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

この記事で得られること
24時間 SLA を閾値にすると手遅れになる理由と、状態別 p95 滞留予算で前倒し検知する設計
提出レコード数と完了レコード数を突合し、静かに落ちた行を数えて可視化するコード
予算ベース検知に切り替えて平均検知リードタイムが改善した社内運用の実測値
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

API / SDK2026-09-01
Gemini の API キーを差し替えても旧キーが勝つ。決め手は読み込み順ではありませんでした
同じ環境変数名を複数の経路が供給していると、キーを差し替えても古い値が残ります。読み込み順を四通り入れ替えた実測と、供給と読み取りを台帳に残す監査シムの実装をまとめました。
API / SDK2026-07-29
出力トークンが17%減ると聞いて、総額はいくら下がるのかを分解した
出力単価16.67%減と出力トークン17%減が重なったとき、総額はいくら下がるのか。Gemini 3.6 Flash への切り替えを単価・数量・交差項に厳密分解し、エージェントループでは削減率がむしろ下がった実行結果と、請求との突き合わせ方をまとめました。
API / SDK2026-07-06
Context Caching を入れたのに Gemini の請求が減らなかったとき — 命中率を計測して立て直す運用メモ
Context Caching を有効化したのに Gemini API の請求がほとんど減らないとき、命中率と書き込みコストの回収点を usage_metadata から計測し、TTL チャーンと断片化を切り分けて段階的に立て直す運用メモです。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →