CLAUDE LABEN
ENTERPRISE — Claude Enterpriseに詳細な管理分析・モデル単位のエンタイトルメント・支出アラートが追加されましたDEVICES — Team・Enterprise向けにTrusted Devicesが加わり、リモートでClaude Codeを操作する前にデバイス検証を必須化できますCODE — Claude Codeに組織既定モデル・読みやすいセッション名・クリックできる添付ファイルが加わりましたMODEL — Claude Sonnet 5が全プランの既定モデルで、導入価格は100万トークンあたり入力$2・出力$10(8月31日まで)ですFABLE 5 — 輸出規制解除により7月1日からClaude Fable 5が全世界で提供再開、新しいサイバーセキュリティ分類器も追加されましたLIMITS — Claude Codeの週次利用上限は7月13日まで50%引き上げ、Claude Scienceの応募は7月15日までですENTERPRISE — Claude Enterpriseに詳細な管理分析・モデル単位のエンタイトルメント・支出アラートが追加されましたDEVICES — Team・Enterprise向けにTrusted Devicesが加わり、リモートでClaude Codeを操作する前にデバイス検証を必須化できますCODE — Claude Codeに組織既定モデル・読みやすいセッション名・クリックできる添付ファイルが加わりましたMODEL — Claude Sonnet 5が全プランの既定モデルで、導入価格は100万トークンあたり入力$2・出力$10(8月31日まで)ですFABLE 5 — 輸出規制解除により7月1日からClaude Fable 5が全世界で提供再開、新しいサイバーセキュリティ分類器も追加されましたLIMITS — Claude Codeの週次利用上限は7月13日まで50%引き上げ、Claude Scienceの応募は7月15日までです
記事一覧/Claude Code
Claude Code/2026-07-06上級

夜間ジョブのコミットが追えなくなった — Claude Code の可読なセッション名で無人実行に相関キーを通す

複数リポジトリで夜間ジョブを無人実行していると、翌朝のコミットがどの実行から生まれたのか分からなくなります。Claude Code の可読なセッション名を相関キーとして設計し、コミット・ログ・セッションを一本の糸でつなぐ実装を、実測値とともに共有します。

Claude Code183セッション管理4無人運用4個人開発96トレーサビリティ

プレミアム記事

先週の朝、いつものように git のログを眺めていて、手が止まりました。ある壁紙アプリのリポジトリに、前夜のジョブが書いたはずの変更履歴が入っていて、そこに古いバージョン番号が紛れ込んでいたのです。

問題そのものは小さなものです。厄介だったのは「どの実行がこれを書いたのか」がまるで分からなかったことでした。私自身、いくつかの個人開発アプリのリポジトリに対して、依存更新・変更履歴の下書き・Crashlytics のクラッシュ要約・AdMob メディエーション設定の点検といった細かな作業を、深夜に Claude Code のヘッドレス実行でまとめて走らせています。多い夜は12セッション。セッションを識別する手がかりは不透明な UUID だけで、コミットメッセージにも実行の身元は残っていませんでした。

結局、ログのタイムスタンプとコミットの時刻を突き合わせて犯人の実行を特定するのに、15分ほどかかりました。原因の修正よりも、原因の実行を探すほうが長かったのです。

Claude Code に読みやすいセッション名が入ったことで、この状況は設計しなおせます。鍵は「名前を、意味を持った一本の糸にする」ことでした。

名前を相関キーにするという考え方

セッション名を単なる表示上の飾りとして扱うと、翌朝には何の助けにもなりません。私が変えたのは、名前を 相関キー(correlation key) として設計したことです。相関キーとは、あとから別々の記録同士を突き合わせるための、共通の見出しのことです。

私が採用したキーの形はこうです。

要素役割
アプリ名wallpaper-zenどのリポジトリの作業か
タスク種別changelog-draft何をする実行か
JST 日付20260706いつの夜間バッチか
短いランダム値a1b2c3d4同分実行の衝突回避

つなぐと wallpaper-zen-changelog-draft-20260706-a1b2c3d4 になります。この一本の文字列を、セッション名・コミット・ログファイルの三か所すべてに同じ形で刻む。それだけで、どこか一点から残り二点へ辿れるようになります。追跡が考古学ではなく grep になる、という設計です。

実行ラッパーで相関キーを組み立てる

まず、夜間ジョブを1本起動するたびに相関キーを生成し、セッション名として渡すラッパーを用意します。

#!/usr/bin/env bash
# run-nightly.sh — 1つの夜間ジョブを可読な相関キー付きで実行する
set -euo pipefail
 
APP="$1"        # 例: wallpaper-zen
TASK="$2"       # 例: changelog-draft
 
# 相関キー = アプリ-タスク-JST日付-短いランダム値
# タイムゾーンは必ず明示する。素の date は UTC 基準で、深夜の実行だと前日にずれる
DATE_JST="$(TZ=Asia/Tokyo date +%Y%m%d)"
SHORT="$(head -c4 /dev/urandom | od -An -tx1 | tr -d ' \n')"
export CC_SESSION_NAME="${APP}-${TASK}-${DATE_JST}-${SHORT}"
 
LOG_DIR="$HOME/nightly-logs/${DATE_JST}"
mkdir -p "$LOG_DIR"
LOG="${LOG_DIR}/${CC_SESSION_NAME}.log"
 
echo "[$(TZ=Asia/Tokyo date +%H:%M:%S)] start ${CC_SESSION_NAME}" | tee -a "$LOG"
 
# Claude Code をヘッドレスで実行し、可読なセッション名としてこのキーを渡す。
# セッション名を指定できるオプションに CC_SESSION_NAME を渡すのが要点です。
# もしお使いのバージョンでセッション名を直接指定できなくても、
# 後述のコミットトレーラーとログ側にキーを刻めば相関は完成します。
claude -p "$(cat "prompts/${TASK}.md")" \
  --session-name "$CC_SESSION_NAME" \
  2>&1 | tee -a "$LOG"
 
echo "[$(TZ=Asia/Tokyo date +%H:%M:%S)] done ${CC_SESSION_NAME}" | tee -a "$LOG"

ここでの肝は二つあります。ひとつは、ログのファイル名そのものを相関キーにしていること。もうひとつは、CC_SESSION_NAME を環境変数として渡していることです。この環境変数が、次のコミットフックへの橋渡しになります。

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

この記事の続きを読む

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

この記事で得られること
アプリ名・タスク・JST日付・短いランダム値からなる相関キーの設計と、素の date が引き起こす日付ずれの回避策
prepare-commit-msg フックでコミットにセッション名を刻み、コミットからログまで grep 1回で辿る trace スクリプト
追跡時間が約15分から20秒台へ短縮した実測と、キー衝突・タイムゾーンでつまずいた具体的な対処
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

Claude Code2026-07-06
同意ダイアログより先に広告SDKを初期化していた — Claude Code で ATT と AdMob の順序を直す
起動と同時に広告SDKを開始すると、ATT の同意が取れる前に IDFA が空のまま初期化され、フィルレートは正常なのに計測だけが薄くなります。散らばった初期化順序を Claude Code で洗い出し、ATT の解決を待ってから広告を開始する形へ直した実装を共有します。
Claude Code2026-07-02
昨夜の無人セッションはどのモデルで走ったのか — Sonnet 5 既定化を機に整える実行モデルの記録と固定
Claude Code の既定モデルが Sonnet 5 に切り替わり、--model 未指定の無人セッションは静かにモデルが変わります。ヘッドレス出力からモデル名を防御的に抽出して追記記録し、既定ドリフトを検知して固定か追従かを判断する設計を動くコードでまとめました。
Claude Code2026-06-30
新型 iPhone で壁紙がぼやける問題を Claude Code で直す — 端末別解像度の振り分けを安全に増やす
新しい iPhone が出るたびに壁紙アプリで画像がぼやけたり余白が出たりする原因と、散らばった端末分岐を一枚のテーブルに集約して安全に拡張する方法を、Claude Code を使った実際のリファクタリング工程として共有します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →