ANTIGRAVITY LABEN
記事一覧/Agents & Manager
Agents & Manager/2026-06-17上級

Managed Agents の無人バッチを再実行で壊さない — 冪等性とチェックポイントの設計

Antigravity 2.0 の Managed Agents API で夜間バッチを組むと、途中失敗からの再実行が必ず問題になります。二重実行で投稿が重複した失敗を起点に、冪等キー・チェックポイントストア・再開ロジックの実装を、個人開発の運用実数値とともに共有します。

antigravity365マルチエージェント36冪等性6バッチ処理2運用設計14Managed Agents5信頼性4

プレミアム記事

深夜2時に走らせていた記事生成バッチが、3件目の処理中に Managed Agent のセッションタイムアウトで落ちました。翌朝それに気づいて、何も考えずに同じバッチを再実行しました。結果、最初の2件が二重に投稿され、サイト側で同一スラッグの衝突が起きていました。原因は単純で、私のバッチが「どこまで終わったか」をどこにも記録していなかったことにあります。

Antigravity 2.0 の Managed Agents API は、サンドボックス内でエージェントが自律的に計画・コード実行・ファイル操作を進めてくれます。手元のマシンを占有せずに長時間タスクを回せるのは大きな利点です。ただ、その「手元を離れて走る」性質こそが、途中失敗を日常的な前提に変えます。個人開発で複数のアプリと複数サイトを一人で回していると、夜間の無人バッチは欠かせません。だからこそ、落ちても安全に再実行できる設計が、機能の華やかさよりも先に必要でした。

「成功か失敗か」の二択で考えると必ず壊れる

ローカルで対話的にエージェントを動かしているうちは、途中で止まっても自分が見ています。どこで止まったかが分かるので、手で続きを指示できます。Managed Agents の無人実行では、この「見ている人間」がいません。

無人バッチが落ちる原因は、エージェント側のバグだけではありません。セッションのタイムアウト、レート制限、ネットワークの一時切断、サンドボックスの再起動など、こちらに非がない中断が定常的に起こります。つまり、バッチは「全部成功」か「全部失敗」のどちらかに収束するのではなく、「N件中3件目まで成功した状態で中断」という中途半端な状態で止まるのが普通です。

ここで再実行を「最初からやり直し」として設計してしまうと、すでに成功した処理がもう一度走ります。投稿・課金・メール送信のように外部へ副作用を出す処理では、これがそのまま事故になります。

冪等キーを「自然キー」から作る

事故を防ぐ第一歩は、各処理単位に冪等キー(idempotency key)を与えることです。冪等キーとは、「同じ入力なら何度実行しても1回分の結果に収束する」ことを保証するための識別子です。

私が最初にやって失敗したのは、ランダムな UUID を冪等キーにしたことでした。再実行のたびに新しい UUID が振られるので、まったく冪等になっていませんでした。冪等キーは、入力内容から決定的に導出する「自然キー」にするのが要点です。

import { createHash } from "node:crypto";
 
// 処理対象を表す最小の入力
interface Job {
  site: string;       // "antigravitylab"
  category: string;   // "agents"
  slug: string;       // 記事スラッグ
}
 
// 入力から決定的に導出する冪等キー。
// 同じ Job なら何度呼んでも同じキーになる。
function idempotencyKey(job: Job): string {
  const canonical = `${job.site}:${job.category}:${job.slug}`;
  return createHash("sha256").update(canonical).digest("hex").slice(0, 32);
}

ポイントは、キーの材料に「いつ実行したか」「何回目の試行か」を一切含めないことです。時刻や試行回数を混ぜた瞬間、再実行で別キーになり、冪等性は崩れます。キーは「何を処理するか」だけから作ります。

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

この記事の続きを読む

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

この記事で得られること
再実行しても二重投稿を起こさない冪等キーの設計と、チェックポイントストアの全実装コード(TypeScript)を取得できます
部分失敗から未処理分だけを再開する resume ロジックと、排他ロックで多重起動を防ぐ実装の落とし穴が分かります
深夜バッチの失敗率を約12%から0.4%へ下げた、再試行とアラートの運用ルールを数値とともに学べます
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

連携・プラグイン2026-06-16
クラウドに出した夜間バッチが「昨日と違う結果」になる — 再現性を守る入力契約とスナップショット設計
Managed Agents API でバッチをクラウドのエフェメラルワーカーに出すと、手元では当たり前だった環境の前提が消えます。同じ入力でも結果がぶれる原因を、環境スナップショット・入力契約・シード固定の三層で押さえる設計と実装を共有します。
Agents & Manager2026-06-17
どのエージェントがいくら使ったかを会計する — タスク別コスト帰属の設計
月末の請求は1つの数字でも、Gemini 3.5 Flash で複数エージェントを走らせていると、どのタスクが費用を食ったかが見えません。予算で止めるガードとは別に、使用量をタスク別・サイト別の原価へ帰属させる会計設計を、個人運用の実装と数値で共有します。
Agents & Manager2026-06-17
並行エージェントの動きを後から辿る — 構造化ログとスパンで作る可観測性
Antigravity 2.0 のデスクトップで複数エージェントを並行させると、どれが何をしているか追えなくなります。混線する print デバッグを捨て、run_id と span で実行を後から辿れるようにする可観測性の設計を、個人運用の実装と数値で共有します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →