Phase 3: Claude Codeで仕組みを作る

Hooksで自動ワークフローを組む

Lesson 9 / 12|25分|公開 2026.04.12

このレッスンで学ぶこと

  • Hooksの仕組み — 特定のイベントに自動処理を紐づける
  • 5つのHookタイプ(SessionStart / PreToolUse / PostToolUse / Notification / Stop)
  • .claude/settings.jsonへの設定方法
  • 実践例: セッション開始時の自動読み込み・停止時のログ保存
  • Hookが失敗しても本処理を止めないための設計原則
妻
質問
Hooksって何?Claude Codeが自動で何かしてくれるの?
豊藏
豊藏
ポイント
Hooksは「このタイミングで、この処理を自動で走らせて」と設定する仕組み。たとえばセッション開始時に前回の作業状況を読み込んだり、終了時に作業ログをファイルに保存したり。毎回手動でやっていた「お決まりの手順」を全部自動化できる。
Hooksは「毎回やるけど忘れがちな作業」を自動化する。セッションの開始と終了が仕組みになる。

Hooksとは何か

Hooksは、Claude Codeの特定のイベントに対して自動で処理を実行する仕組みです[1]。 「セッションが始まったらこれをやる」「ツールを実行する前にチェックする」「セッションが終わったらログを保存する」といった定型処理を、設定ファイルに書いておくだけで毎回自動で走ります。

重要なのは、HooksはClaude(AI)ではなく、あなたのマシン上で直接実行されるという点です。 bashコマンドやPythonスクリプトなど、任意のプログラムを指定できます。AIが介在しないため、決定論的(毎回同じ結果)で信頼性が高い処理が可能です。

Hookの実行フロー

1イベント発生(例: セッション開始)
2設定されたHookコマンドがあなたのマシン上で自動実行
3結果がClaude Codeに渡される(必要に応じて)
4本来の処理が続行される

5つのHookタイプ

Claude Codeでは5種類のイベントにHookを設定できます。それぞれの発火タイミングと典型的なユースケースを見ていきましょう[1]

1

SessionStart

発火タイミング: セッション開始時、最初のメッセージが処理される前

ユースケース: 過去の作業ログを読み込む、前回のTODOリストを表示する、日次のデータを確認する、Git statusをチェックする

2

PreToolUse

発火タイミング: Claude Codeがツール(Bash, Edit, Write等)を実行する直前

ユースケース: 危険なコマンド(rm -rf、force pushなど)をブロックする、特定ファイルの変更を禁止する、機密ファイルへのアクセスを検知する

3

PostToolUse

発火タイミング: Claude Codeがツールを実行した直後

ユースケース: ファイル変更のログを記録する、コードフォーマッターを自動実行する、テスト結果を記録する

4

Notification

発火タイミング: Claude Codeがユーザーに通知を送るとき

ユースケース: 音声通知を鳴らす(VOICEVOXなど)、Slackに通知を転送する、デスクトップ通知をカスタマイズする

5

Stop

発火タイミング: Claudeのレスポンスが完了した後

ユースケース: 作業ログをファイルに保存する、セッションの要約を生成する、変更ファイルの一覧を記録する

Hooksの設定方法

Hooksは .claude/settings.jsonhooks セクションに記述します[3]。 JSON形式で、どのイベントにどのコマンドを紐づけるかを定義します。

設定ファイルの基本構造

// .claude/settings.json
{
"hooks": {
"SessionStart": [
{
"matcher": "always",
"command": "cat ./TODO.md"
}
],
"Stop": [
{
"matcher": "always",
"command": "python3 ./save-log.py"
}
]
}
}

設定の各フィールド

フィールド説明
matcher実行条件。ツール名やパターンを指定"always", "Bash", "Write"
command実行するシェルコマンド"python3 log.py"
timeoutタイムアウト(ミリ秒)10000(10秒)

matcherの使い分け

"always" はすべてのイベントで実行されます。 PreToolUseやPostToolUseでは、ツール名を指定して特定のツールだけに反応させることもできます。 たとえば "Bash" を指定すると、 bashコマンド実行時のみ発火します。

実践例: よく使うHookパターン

実務で特に役立つHookのパターンを3つ紹介します。そのまま使えるので、まずはコピーして試してみてください。

パターン1: セッション開始時にTODOを表示

毎回「前回の続きは何だっけ?」と思い出す必要がなくなります。TODO.mdの内容がセッション開始時に自動で読み込まれます。

"SessionStart": [
{ "matcher": "always", "command": "cat ./TODO.md" }
]

パターン2: 危険なコマンドをブロック

rm -rfgit push --force を検知して実行を止めます。 PreToolUseのHookが exit 2 を返すと、 そのツール実行がブロックされます。

"PreToolUse": [
{
"matcher": "Bash",
"command": "python3 .claude/hooks/guard.py"
}
]

パターン3: セッション終了時にログ保存

セッションが終了するたびに、作業内容をログファイルに自動保存します。「あの時何やったっけ?」が後から確認できます。

"Stop": [
{
"matcher": "always",
"command": "python3 .claude/hooks/session-log.py"
}
]
豊藏
豊藏
ポイント
Hookの入力データはstdinでJSON形式で渡される。セッションID、ツール名、入力内容が含まれるから、Pythonスクリプトで json.load(sys.stdin) すれば何でもできる。最初はシンプルなcatコマンドから始めて、慣れたらスクリプトに移行するのがおすすめ。

Hookを安全に運用するための注意点

Hookの失敗が本処理を止めないように

Hookスクリプトがエラーで落ちた場合、Claude Code本体の処理も止まってしまう可能性があります。 スクリプト内でtry-exceptで例外を捕捉し、エラーが起きてもexit 0で終了するようにしましょう。 Hookはあくまで「補助」であり、失敗しても本来のタスクに影響を与えないことが大原則です。

安全設計のチェックリスト

  • 1.タイムアウトを設定する — 外部APIを呼ぶHookは必ずtimeoutを指定。無限に待たせない
  • 2.エラーハンドリング — スクリプト内でtry-except。失敗してもexit 0
  • 3.冪等性を意識 — 同じHookが複数回走っても問題ない設計にする
  • 4.機密情報に注意 — Hookの出力はClaude Codeのコンテキストに入る。APIキー等を標準出力に流さない
  • 5.ログを残す — デバッグ用に、Hookの実行結果をファイルに記録しておく

PreToolUseの特殊な戻り値

PreToolUseのHookは戻り値で挙動を制御できます。exit 0 で続行、exit 2 でブロック。 stdoutにJSON {"decision":"block","reason":"理由"} を出力すると、ブロック理由をClaudeに伝えられます。

Lesson 9 まとめ

  • Hooksは特定のイベント(開始・ツール実行前後・通知・終了)に自動処理を紐づける仕組み
  • AIではなく自分のマシン上で実行されるため、決定論的で信頼性が高い
  • PreToolUseで危険な操作をブロック、Stopで作業ログを自動保存が定番パターン
  • Hookの失敗が本処理を止めない設計(エラーハンドリング・タイムアウト)が必須

あなたの番です

出典・参考文献

本レッスンで引用したデータの原典一覧です。数値は各調査の公開時点のものであり、閲覧時期により更新されている可能性があります。

  1. [1]
    Claude Code Hooks Documentation Anthropic2025
  2. [2]
    Claude Code Overview Anthropic2025
  3. [3]
    Claude Code Configuration Anthropic2025

よくある質問

HooksはClaude Code Maxプランでないと使えない?

Hooksは全プランで利用可能です。.claude/settings.json に記述するだけで動作します。有料プラン限定の機能ではありません。

Hookの中でAPI呼び出しはできる?

はい、可能です。PythonやNode.jsのスクリプトを指定すれば、Slack API、Discord webhook、その他あらゆるHTTP通信が可能です。ただし、APIキーを標準出力に流さないよう注意し、タイムアウトを必ず設定してください。

Hookが複数ある場合の実行順序は?

同じイベントに複数のHookが設定されている場合、配列に記述された順番で実行されます。あるHookの失敗が後続のHookに影響しないよう、各Hookは独立して動作するように設計しましょう。

自動化の土台ができた。次はサブエージェントで複数タスクを同時に処理する方法を学ぼう。

Lesson 10: サブエージェント

著者について

豊藏 翔太

監修・開発

豊藏 翔太(Shota Toyokura)

シンクムーブ株式会社 代表取締役 / アイオイクス株式会社 フェロー

  • 法政大学経営学部経営戦略学科卒(2015年)
  • エン・ジャパンでIT/Web業界の営業を経験後、ITコンサルタントとしてAI・RPAを活用した事業支援に従事
  • 個人事業で7サイト・約600記事を運営しSEOを実践的に習得
  • アイオイクス株式会社にてSEO Japan運営・大手企業向けWebコンサルティング事業の責任者を務めた後、2024年12月にシンクムーブ設立

著書・メディア掲載

登壇実績

  • JADEcon -JADE 春のSEO祭り-(2026年3月、渋谷)
  • LIG・ピネアル共催「AI×マーケティングのやってみた」LT会(2026年3月)
  • TASK4 忘年会 パネルディスカッション「月刊キーマケLab.特別編」(2025年12月)

シンクムーブ株式会社について

  • 設立:2024年12月
  • 所在地:東京都渋谷区神南1-11-4
  • 事業:SEOコンサルティング・インハウスマーケティング共創支援・AI活用研修
  • 同時対応:メインクライアント4社限定

独自調査・コンテンツ

こんな相談もできます

  • 「うちにもこういうツール作れる?」
  • 「AI活用の研修をやってほしい」
  • 「SEO全般でちょっと壁打ちしたい」
  • 「顧問契約ってどんな感じ?」

費用感:スポット相談1回〜 / 顧問契約 月額制 / ツール開発 要件次第。まずは気軽にどうぞ。

XのDMで気軽に相談する