Claude Code Atlas
#05

Hooksで自動化する

上級

特定のタイミングで処理を自動実行するHooksの仕組みを学び、settings.jsonに設定します。

座学

この講座で学べること

  • HooksがClaude Codeの動作タイミングに合わせてコマンドを自動実行できることを理解する
  • PreToolUse・PostToolUse・Stop・Notificationの4種類のフックの役割を把握する
  • settings.jsonにStopフックを設定してファイルにログを書き出す手順を習得する
  • settings.json保存後にClaude Codeを再起動しないとフックが有効にならないことを知る

Hooks(フック)は、Claude Codeが特定の動作をした「タイミング」に合わせて自動的にシェルコマンドを実行できる機能です。たとえば「ファイルを保存したら自動でgit statusを表示する」「作業が完了したらSlackに通知を送る」といったことが実現できます。

Hooksには4種類あります。「PreToolUse」はツール実行の直前、「PostToolUse」は直後、「Stop」はClaude Codeが応答を終えたとき、「Notification」は通知が必要なときに発火します。

Hooksの設定はClaude Codeの settings.json に記述します。設定ファイルには2種類あります。 ・~/.claude/settings.json:全プロジェクト共通(グローバル) ・プロジェクトフォルダ/.claude/settings.json:そのプロジェクトのみ この講座ではプロジェクトフォルダ内の settings.json を使います。プロジェクト単位で設定を管理でき、チームで共有もしやすいのが特徴です。コマンドはシェルスクリプトとして書けるため、かなり柔軟な自動化が可能です。ただし、フックが多すぎると動作が重くなるため、本当に必要なものだけを設定しましょう。

Hooksの種類と発火タイミング

PreToolUse

ツール実行の直前

「ファイルを書き込む前にバックアップを取る」

PostToolUse

ツール実行の直後

「ファイル保存後にgit statusを自動実行」

Stop

Claude Codeが応答を終えた時

「作業完了時にSlackに通知を送る」

Notification

通知が必要な時

「エラー発生時に音を鳴らす」

⚠️ Hooksが多すぎると動作が重くなります。本当に必要なものだけを設定しましょう。

📄 HooksとClaude Desktopの設定ファイルは別物です

claude_desktop_config.json はClaudeデスクトップアプリのMCP設定用ファイルです。HooksはClaude Code CLI の settings.json に書きます。この講座ではプロジェクトフォルダ内の .claude/settings.json を使います。混同しないよう注意してください。

PostToolUse + Bash ツールの組み合わせで「特定のファイルが変更されたとき」に反応するフックが作れます。

実践手順

Hooksの設定ファイルを開く

プロジェクトフォルダ内の .claude/settings.json を開きます。ファイルを開いたら次のステップのJSONを追記してください。すでに内容がある場合は既存のJSONの中に "hooks" セクションを追加してください。

settings.json を開く(Windows)

プロジェクトフォルダで実行してください。.claude フォルダごと作成します。

powershell
New-Item -Path ".claude\settings.json" `
  -ItemType File -Force

作成したファイルをメモ帳で開きます。

powershell
notepad .claude\settings.json

Stop フックを設定する

作業完了時にログファイルへ記録するフックを追加します。StopフックのstdoutはClaude Codeのコンソールに表示されないため、ファイルへの書き出しで動作を確認します。settings.json に以下の内容を記述してください。すでに settings.json に別の設定がある場合は既存の { } の中に "hooks": { ... } を追加してください。

json
{
  "hooks": {
    "Stop": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "echo '✅ Claude Codeの作業が完了しました!' >> hook_log.txt"
          }
        ]
      }
    ]
  }
}

フックが動作することを確認する

settings.json を保存してから Claude Code を再起動してください。再起動しないとHooksが読み込まれません。再起動後、Claude Codeに何か作業をさせてください。完了後に以下のコマンドで hook_log.txt の内容を確認します。ログが追記されていればフックが正常に動作しています。

zsh
cat hook_log.txt

確認チェック

講座を終える前に、以下の項目を確認しましょう。

関連講座

「確認チェック」の全項目にチェックを入れると完了できます