コンテンツにスキップ
LinkedInX

Claude Code hooksの使い方:ツール実行前後にカスタム処理を追加した実例

この記事について

Claude Code hooksとは、AIがツールを使う直前・直後に自動で実行される処理を設定できる仕組みです。この記事では、実際に使っているhooksの設定例と、導入前後の変化を記録します。


hooksとは何か

Claude Codeで作業をするとき、AIはファイルを編集したり、コマンドを実行したりといった「ツール」を使います。hooksは、そのツール実行の前後に別の処理を自動で差し込む仕組みです。

技術的な背景がなくてもイメージしやすい例として、「ファイルを編集する直前に自動でバックアップが作られる」「特定のコマンドが実行されたら通知が届く」といった動作を設定できます。

hooks以前は、これらの処理を自分で手動で実行するか、忘れて後から後悔するかのどちらかでした。


実際に設定しているhooksの例

1. ファイル編集前のバックアップ

AIがファイルを上書きする前に、元のファイルを別の場所にコピーする処理を設定しています。

実際にAIが重要な設定ファイルを変更した後、変更内容が想定と異なっていたことがあります。Gitで追跡していたので最終的には戻せましたが、戻す操作に時間がかかりました。hookでバックアップを自動化してからは、「AIが変更する前の状態」を確認する手間が減りました。

2. デプロイ系コマンドの実行通知

npm run build や本番デプロイに関係するコマンドが実行されたとき、通知を送る処理を設定しています。

このプロジェクトでは、npm run build はユーザーの明示承認なしに実行してはいけないルールがあります。hookを使って「このコマンドが実行されようとしています」という通知を出すことで、意図しない実行を防ぐ確認ポイントを追加しました。

3. ファイル編集後の自動バリデーション

Markdownファイルが編集された後に、frontmatterのバリデーションスクリプトを自動で実行する処理を設定しています。

以前は「記事を書いた後に手動でバリデーションを実行する」というルールにしていましたが、忘れることがありました。hookでファイル編集の後に自動で走るようにしてからは、バリデーション漏れがなくなりました。


設定方法の概要

hooksは、settings.json に記述します。設定の構造は「どのイベントに反応するか」「何を実行するか」の2つで構成されます。

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Write",
        "hooks": [
          {
            "type": "command",
            "command": "bash /path/to/backup-script.sh"
          }
        ]
      }
    ],
    "PostToolUse": [
      {
        "matcher": "Write",
        "hooks": [
          {
            "type": "command",
            "command": "npm run validate:frontmatter"
          }
        ]
      }
    ]
  }
}

PreToolUse はツール実行前、PostToolUse はツール実行後に対応します。matcher にはどのツールに反応するかを指定します。


導入前後の変化

導入前は、「AIが作業した後に手動で確認する」手順を毎回実行していました。バックアップを取り忘れたり、バリデーションを後から実行して問題を発見したりということがありました。

導入後は、AIが作業するたびに自動で確認処理が走るため、手動の確認手順が減りました。特に、複数ファイルを一度に変更するような作業では、hookがなければ見落としていた問題をその場で検出できるようになっています。

hooksを設定することで、「AIが自由に動く」のではなく「AIが動くたびに安全確認が入る」という構造に変わります。AIへの信頼度ではなく、設計の問題として捉えると、用途に合ったhooksを選びやすくなります。


まとめ

  • Claude Code hooksは、ツール実行前後に自動処理を差し込む仕組み
  • 実用的な用途:バックアップ、通知、バリデーションの自動化
  • settings.jsonhooks セクションに PreToolUse / PostToolUse を記述する
  • 「手動で確認する手順」をhookに置き換えると、確認漏れを減らせる