CLAUDE LABEN
VERSION — 8月10日に v2.1.227 が出ていました。新機能はなく、プラン判定と CI まわりの不具合修正が中心ですAUTO — 8月14日の既定化まで残り2日です。Pro・Max・Team で Claude Code の auto モードが既定で有効になりますCI — claude-code-action で allowed_non_write_users を指定すると GitHub ホストランナー上の Bash が全て失敗していた問題が直りましたBILLING — 期限切れトークンで開始したセッションが加入プランを取り違え、Max 利用者に使用クレジットの有効化を促していた不具合も解消していますSUNSET — 旧 Workbench と実験的プロンプトツール API の廃止は8月17日で、残り5日ですPRICE — Sonnet 5 のプロモ価格 $2/$10 per Mtok は8月31日までで、9月1日から $3/$15 per Mtok になりますVERSION — 8月10日に v2.1.227 が出ていました。新機能はなく、プラン判定と CI まわりの不具合修正が中心ですAUTO — 8月14日の既定化まで残り2日です。Pro・Max・Team で Claude Code の auto モードが既定で有効になりますCI — claude-code-action で allowed_non_write_users を指定すると GitHub ホストランナー上の Bash が全て失敗していた問題が直りましたBILLING — 期限切れトークンで開始したセッションが加入プランを取り違え、Max 利用者に使用クレジットの有効化を促していた不具合も解消していますSUNSET — 旧 Workbench と実験的プロンプトツール API の廃止は8月17日で、残り5日ですPRICE — Sonnet 5 のプロモ価格 $2/$10 per Mtok は8月31日までで、9月1日から $3/$15 per Mtok になります
記事一覧/API & SDK
API & SDK/2026-06-25上級

前の実行が終わらないうちに次が走り出すとき — リースとフェンシングトークンで定期エージェントの多重起動を抑える

毎朝の定期実行が前回の処理を追い越して二重に走り出す問題を、リースとフェンシングトークンで抑える設計を解説します。素朴なロックが破れる瞬間の分析から、任意ストア上の最小リース実装、副作用直前のトークン検証、上限付きキャッチアップまで、運用で固めた既定値とともに実装コード付きで整理しました。

Claude Agent SDK13スケジュール実行3分散ロック本番運用36設計5

プレミアム記事

「まだ前の処理が走っているのに、もう次が始まっている」。Dolice Labs で4サイトの記事を毎日決まった時刻に生成している仕組みを眺めていて、ある朝そう気づきました。

きっかけは、Claude Code の API 上限が引き上げられて、それまで余裕を持って空けていた実行間隔を少し詰めたことでした。間隔を 45 分に縮めた直後、たまたま生成が長引いた回があり、前の実行がまだ後片付けをしている最中に、次の cron が新しいプロセスを立ち上げていました。記事が二重に push されかけて、git の履歴を見て手が止まりました。

定期実行は「時刻が来たら走る」だけの素朴な仕組みに見えて、実は前の自分とすれ違う瞬間に弱点を抱えています。今日は、その多重起動をどう抑えるかを、素朴なロックが破れる瞬間からフェンシングトークンまで、私が実際に置いている実装とともに辿っていきます。

なぜ「前を追い越して」次が走り出すのか

cron や Cowork のスケジュールは「この時刻に開始する」ことだけを約束します。「前の実行が終わってから開始する」とは、どこにも書かれていません。

ふだんは生成が間隔より十分速いので、すれ違いは起きません。ところが本番では、API の一時的な遅延、リトライ、巨大な記事の生成、ネットワークの揺らぎ。どれか一つが噛み合うと、一回の実行が間隔を食い破ります。

すると次の起動はためらいなく走ります。両者は同じリポジトリを clone し、同じ slug を選びかけ、同じファイルに書き込もうとします。片方が git push に成功し、もう片方が rebase で衝突する。運が悪いと、わずかに違う本文の記事が二本生まれます。

この問題の核心は、二つの実行が「自分のほかに誰かいる」ことを知らない点にあります。だから、まず互いの存在を知らせる仕組みが要ります。

まず素朴なロックを置く(そして、それが破れる瞬間)

最初に思いつくのは、開始時にフラグを立てて、終了時に下ろす方法です。

// 素朴版 — これは本番では破れます
async function runOnce(store, jobId, body) {
  if (await store.read(jobId)) {
    return { ran: false, reason: "locked" };
  }
  await store.write(jobId, { running: true });
  try {
    await body();
  } finally {
    await store.write(jobId, null); // 解放
  }
}

短時間なら、これで多くのすれ違いは防げます。私も最初はこの形でした。

けれども、二つの穴が残ります。

一つ目は、解放されないロックです。実行が途中でクラッシュしたり、VM ごと落ちたりすると、finally に辿り着けません。フラグは立ったまま残り、翌日からすべての実行が「locked」で弾かれます。無人で回す仕組みでは、これに気づくのが数日後になります。私自身、AdMob のレポートを毎朝取得するジョブで、これに似た固まり方を経験しました。

二つ目は、もっと厄介です。ロックを持っているはずの実行が、実はとっくに死んでいるのに、OS から見ると「まだ生きている」状態。あるいは、長く一時停止していたプロセスが、誰かに見捨てられた後でふと目覚めて、最後の書き込みだけを実行してしまう状態。フラグの有無だけでは、この「ゾンビ」を止められません。

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

この記事の続きを読む

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

この記事で得られること
実行間隔より生成が長引いたときに多重起動を止める、TTL付きリースロックの最小実装(TypeScript・任意ストア対応)
期限切れの実行が遅れて書き込む事故を、書き込み先でフェンシングトークンを検証して止める設計と落とし穴
障害復帰後の取りこぼしを上限1スロットで畳む、キャッチアップ方針と実測の重複スキップ率(全実行の約2%)
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

API & SDK2026-07-08
無人エージェントの挙動変更を、フィーチャーフラグで少しずつ試す設計
無人で走るエージェントのプロンプトや挙動を一度に全変更すると、劣化が朝まで見えません。フィーチャーフラグで一部の実行にだけ新挙動を割り当て、品質を見てから広げる設計と、決定論的バケット・自動ロールバック・監査証跡の実装を紹介します。
API & SDK2026-06-02
自律エージェントの破壊的操作に事前条件・事後条件の契約ゲートを付ける
スキーマも型も通るのに中身が壊れている——自律エージェントのもっともらしい失敗を、事前条件・事後条件の契約ゲートで止める設計です。tryGuard・commitGuard・rollbackの構造、TypeScriptでの実装、スナップショットによる安全な巻き戻し、既存エージェントへの後付け手順まで紹介します。
API & SDK2026-05-31
再現できないエージェント障害をなくす設計 — 決定論的リプレイとイベントソーシング
深夜に一度だけ失敗した自律エージェントの障害は、そのまま再実行しても再現できません。モデル出力やツール入出力といった非決定の境界をイベントログに記録し、決定論的にリプレイして原因を特定する設計を、スキーマ定義から録音再生ラッパー、実行単位のコスト配賦まで実装コードとともに解説します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →