フックは「特定のタイミングで自動的に走る処理」
Claude Codeの「フック(Hooks)」は、決められたタイミングで自分の用意したコマンドを自動的に実行させる仕組みです。英語のhookは「引っかける」という意味で、Claude Codeの動作の流れの途中に自分の処理を引っかけておくイメージになります。
身近な例で言うと、玄関のドアに付いている自動点灯のセンサーライトが近いかもしれません。「ドアが開いた」という出来事(イベント)が起きた瞬間に、こちらが何も操作しなくてもライトが点く。フックもこれと同じで、「Claudeがファイルを編集した」といった出来事に対して、あらかじめ登録しておいた処理が勝手に走ります。
なぜ必要なのか
Claude Codeに作業を頼むとき、毎回「編集したらフォーマッタをかけてね」「終わったらテストを走らせてね」とお願いするのは面倒ですし、そもそも忘れられることもあります。AIへのお願いは基本的に「守ってくれたら嬉しい」程度の強制力しかありません。
フックは指示ではなく仕組みとして動くので、Claudeの気分やその日の応答のブレに左右されません。「必ずこれをやってほしい」という決まりごとを、確実に実行させたいときに使います。
プロンプトでお願いする
「編集後は必ずフォーマットして」と伝える方法。柔軟だが、毎回確実に実行される保証はない。
フックを使う
設定した条件に当てはまれば、こちらのコマンドが機械的に実行される。ブレがない。
動きのイメージ
流れとしては、こんな順番になります。
実行されるのは、あくまで自分が書いたシェルコマンドやスクリプトです。Claudeが新しく何かを考えて実行するわけではないので、「何をするか」は完全に自分でコントロールできます。ここが安心できるポイントでもあり、逆に言えば「書いた通りのことしか起きない」ということでもあります。
どんなことに使えるか
典型的なのは、コード整形や静的チェックの自動実行です。Claudeがファイルを書き換えたあとにフォーマッタを走らせておけば、スタイルの揺れをいちいち指摘しなくて済みます。
ほかにも、作業のログを残したい、特定のディレクトリを触られたら通知したい、といった用途が考えられます。要するに「人間がいちいち見張らなくても、決まった処理が挟まるようにしておきたい」場面全般です。
使うときに気をつけたいこと
正直に言うと、フックは便利な反面、雑に設定すると事故ります。自動で実行されるということは、自分が意図していないタイミングでもコマンドが走るということだからです。
最初のうちは、失敗しても被害のない処理から試すのがおすすめです。いきなり削除系やデプロイ系のコマンドを仕込むのではなく、ログを書き出すだけ、フォーマッタをかけるだけ、といったところから始めると挙動を掴みやすくなります。
もうひとつ、実行に時間のかかるコマンドを登録すると、その分だけ作業全体が待たされます。重いテストスイート全体をフックで毎回走らせるより、軽いチェックに絞るほうが実用的なことが多いです。
まず理解しておきたい要点
- フックは「あるタイミングで自動的に走る処理」を登録する仕組み
- 実行されるのは自分が用意したコマンドなので、内容は自分で決められる
- お願いベースの指示と違い、ルールとして確実に実行させたいときに向く
- 自動で走る以上、危険なコマンドを仕込むと取り返しがつかないので慎重に
「AIに毎回同じ注意をしている」と感じたら、それはフックにできるかもしれない、というのが判断のひとつの目安になります。
このページは役に立ちましたか?