CLAUDE LABEN
APPLY — ant CLI v1.30.0 に ant apply が入りました。エージェント・環境・スキル・メモリストア・デプロイメントを、リポジトリのファイルから作成・更新できますLOCKFILE — 書き出される claude-lock.json は必ずコミットしてください。忘れると、実行のたびに同じリソースが新しく作られていきますPLAN — ant apply は適用の前に計画を表示し、承認を挟みます。CI で無人実行するなら、この承認をどう扱うかを先に決めておくことですPRICING — Claude Sonnet 5 の 3 ドル / 15 ドルへの値上げは実施されていません。導入価格の 2 ドル / 10 ドルがそのまま標準価格になりましたSOURCE — 価格と版番号は二次ニュースに誤りが混じります。platform.claude.com のリリースノートで裏を取ってから書くようにしていますBETA — Agent Skills と Skills API はベータを抜け、skills-2025-10-02 ヘッダが不要になりました。Files API はヘッダの有無でレスポンス形式が変わる点に注意ですAPPLY — ant CLI v1.30.0 に ant apply が入りました。エージェント・環境・スキル・メモリストア・デプロイメントを、リポジトリのファイルから作成・更新できますLOCKFILE — 書き出される claude-lock.json は必ずコミットしてください。忘れると、実行のたびに同じリソースが新しく作られていきますPLAN — ant apply は適用の前に計画を表示し、承認を挟みます。CI で無人実行するなら、この承認をどう扱うかを先に決めておくことですPRICING — Claude Sonnet 5 の 3 ドル / 15 ドルへの値上げは実施されていません。導入価格の 2 ドル / 10 ドルがそのまま標準価格になりましたSOURCE — 価格と版番号は二次ニュースに誤りが混じります。platform.claude.com のリリースノートで裏を取ってから書くようにしていますBETA — Agent Skills と Skills API はベータを抜け、skills-2025-10-02 ヘッダが不要になりました。Files API はヘッダの有無でレスポンス形式が変わる点に注意です
記事一覧/Claude Code
Claude Code/2026-06-19上級

スケジュール生成が無音で不発に終わったことを、外側から気づく仕組み

exit 0 で終わったのに成果物がゼロだった——そんな無音の不発を、ジョブ自身のログではなく外部のハートビート台帳と地の事実から検知する設計を、個人開発で複数サイトを自動運用している立場からまとめました。

Claude Code250automation55scheduled tasksobservability15reliability15

プレミアム記事

ある朝、いつものように更新ログを開いたら、前夜に走るはずだった生成ジョブの行が一つだけ抜けていました。エラーログには何も残っていません。終了コードを確認しても 0 です。つまり「成功した」ことになっているのに、記事は一本も増えていない。git の履歴にも、その時刻のコミットがありません。

この「成功したのに何も生まれていない」状態が、いちばん厄介でした。落ちてくれたほうがまだ気づけます。静かに不発に終わり、しかも本人は成功したつもりでいる。個人開発で複数のサイトを夜間に順番に処理していると、こうした無音の不発がたまに混ざります。今日は、それを外側から気づくための仕組みを書いておきます。

「成功」と「成果」は別物だという前提に立つ

私たちはつい、終了コードを成果の証明だと思ってしまいます。けれど exit 0 が保証するのは「最後のコマンドがエラーを返さなかった」ことだけです。途中で生成対象が見つからず、何も作らずに正常終了する経路は、いくらでもあります。

私の場合、原因はだいたい次のどれかでした。参照データの cat が誤ったパスを叩いて空を返し、題材が決まらないまま静かに抜けたこと。ディスクが詰まっていて clone が途中で諦め、それでも後続が形だけ走ったこと。モデルの一時停止で生成が空振りし、push する中身が無かったこと。どれも個別のバグではなく、「不発でも成功扱いになる」という同じ構造を共有しています。

ですから監視の目標は「ジョブが落ちたか」ではありません。「期待した成果物が、本当に生まれたか」です。この一点に絞ると、設計はずいぶん素直になります。

なぜジョブ自身のログを信用できないのか

最初に手を出したくなるのは、ジョブの最後に「完了しました」とログを書くことです。私もそうしました。けれど、これは効きません。

無音の不発が起きるのは、たいてい本流から外れた経路を通ったときです。そして「完了ログを書く」処理は、本流の末尾に置かれています。つまり、ログを取りこぼす状況と、成果物を取りこぼす状況は、同じ根を持っています。失敗したときに限って、失敗を知らせる行も書かれない。自己申告は、いちばん必要な瞬間に黙るのです。

この気づきが設計の出発点になりました。観測する主体を、ジョブの外に出す。ジョブが自分について語る言葉ではなく、ジョブとは独立した第三者が見える事実だけを根拠にする。そう決めると、何を記録すべきかが見えてきます。

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

この記事の続きを読む

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

この記事で得られること
exit 0 でも成果がゼロになる無音の不発を、git show で打刻する JSONL ハートビート台帳で記録する方法
「不在こそが信号」というデッドマンズスイッチの考え方と、期待集合 ⊆ 観測集合を曜日別に照合する Python コード
TZ=Asia/Tokyo で揃える運用と、3週間で無音不発2件・空打ち1件を平均15分で原因特定した実測
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

Claude Code2026-07-14
push先がいつの間にか一つ増えていた — /commit-push-pr が origin 以外のリモートへも押し始めた変更に、許可リストで蓋をする
7月14日の更新で /commit-push-pr が origin に加えて設定済みの push リモートへも自動で押すようになりました。便利な一方、ミラーやバックアップ用の第二リモートを持つ環境では、意図しない push が静かに増えます。どのリモートへ押し得るかを棚卸しし、許可リスト外の push を pre-push フックで止め、無人実行でも安全に回す設計を実装込みで整理しました。
Claude Code2026-07-10
PreCompact と SessionEnd で長時間セッションの決定事項を引き継ぐ
自動コンパクションで消えるのは会話ではなく「なぜそう決めたか」です。PreCompact / SessionEnd / SessionStart の3フックで決定ログを外部ファイルへ退避し、次のセッションへ確実に手渡す実装を、動くコードと実測値つきで解説します。
Claude Code2026-07-07
検知はできても、鳴りすぎて気づけなくなった — 個人運用のアラートを一通の『起こす価値のある報せ』に絞るまで
無音の不発を検知できるようにした途端、今度は通知が鳴りすぎて麻痺しました。事象ではなく行動を単位にアラートを畳み、ヒステリシスと静音時間、段階的エスカレーションで『起こす価値のある報せ』だけを残すまでの設計メモです。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます