見出し画像

Claude Codeのhooksとは?作業を自動化する隠れた最強機能を解説

Claude Codeを使いこなしている人が密かに活用している機能、それが「hooks」です。hooksを設定すると、Claude Codeの操作に連動して自動でコマンドを実行できるようになります。この記事では、hooksの基本から実践的な活用例まで、非エンジニアにもわかるように解説します。

hooksとは何か?

hooksとは、Claude Codeで特定のイベントが発生したときに、自動でシェルコマンドを実行する仕組みです。たとえば「ファイルを編集したあとに自動でフォーマットを整える」「コミット前にテストを実行する」といったことが可能になります。

スマホの「おやすみモードになったら画面を暗くする」のような自動化を、Claude Codeの操作に対して設定できると考えてください。

Claude Codeの基本については「Claude Codeとは?ChatGPTとの決定的な違いを解説」をご覧ください。

なぜhooksが便利なのか

Claude Codeは指示したことを正確にやってくれますが、毎回「ファイルを保存したらフォーマットを整えて」と言い続けるのは面倒です。hooksを設定しておけば、Claude Codeが自動で判断して実行してくれるので、指示の手間が減ります。

具体的なメリットは以下の通りです。

・毎回の口頭指示が不要になる
・作業の抜け漏れを防げる
・チーム内で作業手順を統一できる
・Claude Codeの出力品質が安定する

hooksで設定できるイベントの種類

hooksでは、以下のタイミングで自動処理を実行できます。

PreToolCall:ツール実行前

Claude Codeがファイル編集やコマンド実行などのツールを使う直前に実行されます。「編集前にバックアップを取る」「危険なコマンドをブロックする」といった用途に使えます。

PostToolCall:ツール実行後

ツールの実行が完了した直後に実行されます。「ファイル編集後にフォーマッターを実行する」「テスト実行後に結果をログに記録する」といった用途に最適です。

Notification:通知時

Claude Codeが通知を送るタイミングで実行されます。「処理完了時にデスクトップ通知を出す」「長時間タスク完了時にSlackに通知する」などが可能です。

Stop:処理完了時

Claude Codeのターンが終了したときに実行されます。「全処理完了後にサマリーをファイルに保存する」といった用途で使えます。

hooksの設定方法

hooksはClaude Codeの設定ファイル(settings.json)に記述します。設定方法は2つあります。

方法1:Claude Codeに設定してもらう

一番かんたんな方法です。Claude Codeに「ファイル編集後にPrettierを自動実行するhookを設定して」と伝えるだけで、適切な設定を作ってくれます。

方法2:設定ファイルを直接編集する

settings.jsonに以下のような形式で記述します。

設定項目は「どのイベントで」「何のツールに対して」「どのコマンドを実行するか」の3つです。マッチャーでファイルパターンを指定すれば、特定のファイルにだけhookを適用することもできます。

実践的な活用例5選

ファイル保存時に自動フォーマット

Claude Codeがファイルを編集したあと、自動でPrettier(コード整形ツール)を実行します。コードのインデントや改行が常に統一されるので、見やすさが保たれます。

使い方:PostToolCallイベントで、Editツールに対して「npx prettier --write」を実行する設定にします。

コミット前にテストを自動実行

Claude Codeがgit commitする前に、自動でテストを実行します。テストが通らない場合はコミットを止めるので、壊れたコードがリポジトリに入るのを防げます。

使い方:PreToolCallイベントで、Bashツール(git commitコマンド)に対してテストコマンドを実行する設定にします。

処理完了時にデスクトップ通知

Claude Codeの長時間処理が完了したときに、macOSのデスクトップ通知を表示します。別の作業をしていても処理完了に気づけます。

使い方:Notificationイベントで「osascript -e display notification」コマンドを実行する設定にします。

特定ファイルの編集をブロック

本番環境の設定ファイルなど、誤って編集したくないファイルを保護できます。Claude Codeが該当ファイルを編集しようとすると自動でブロックされます。

使い方:PreToolCallイベントで、マッチャーに保護したいファイルパターンを指定し、exit 2(ブロック)を返す設定にします。

編集ログの自動記録

Claude Codeがどのファイルをいつ編集したかを、自動でログファイルに記録します。作業の振り返りやトラブル発生時の原因調査に役立ちます。

使い方:PostToolCallイベントで、編集日時とファイルパスをログファイルに追記するコマンドを実行します。

hooks活用で気をつけるポイント

hooksは便利ですが、いくつか注意点があります。

・hookのコマンドが失敗するとClaude Codeの処理が止まることがある:コマンドが正しく動くか事前に確認しましょう
・hookを入れすぎると処理が遅くなる:本当に必要なものだけ設定するのがおすすめです
・セキュリティに注意:hookで実行するコマンドは信頼できるものだけにしてください。外部から取得したスクリプトをそのまま実行するのは避けましょう

Claude Codeの設定については「Claude Codeで最初にやるべき設定5つ」でも解説しています。

CLAUDE.mdとhooksの使い分け

CLAUDE.mdもhooksも「Claude Codeの動作をカスタマイズする」という点では似ていますが、役割が異なります。

・CLAUDE.md:Claude Codeへの「指示」を定義する。出力の言語、コーディングスタイル、ルールなど
・hooks:Claude Codeの「動作に連動した自動処理」を定義する。ファイル保存後のフォーマット、通知など

両方を組み合わせることで、Claude Codeの動作を細かくコントロールできます。CLAUDE.mdについては「CLAUDE.mdの書き方で出力品質が激変する|実例つき」で詳しく紹介しています。

よくある質問

hooksはプログラミング経験がなくても使えますか?

基本的な設定であれば、Claude Codeに「こういうhookを設定して」と伝えるだけで作ってくれます。シェルコマンドの知識がなくても始められます。ただし、複雑なhookを自分でカスタマイズする場合は、基本的なコマンドライン操作の理解があると便利です。

hooksはどこに保存されますか?

プロジェクト単位の設定は.claude/settings.jsonに、ユーザー全体の設定は~/.claude/settings.jsonに保存されます。プロジェクトごとに異なるhookを設定することも可能です。

hookが動かないときはどうすればいいですか?

まず、hookで実行しているコマンドをターミナルで直接実行して動作を確認してください。コマンド自体が正しく動けば、hookの設定(イベント名やマッチャー)に問題がある可能性が高いです。Claude Codeに「このhookが動かないので原因を調べて」と相談するのも有効です。

まとめ|hooksでClaude Codeをさらに賢く使う

hooksは、Claude Codeの操作に連動して自動処理を実行する仕組みです。今回紹介した活用例をおさらいします。

・ファイル保存時に自動フォーマット
・コミット前にテスト自動実行
・処理完了時にデスクトップ通知
・特定ファイルの編集ブロック
・編集ログの自動記録

まずは「処理完了時のデスクトップ通知」のようなシンプルなhookから始めてみてください。一度設定すれば、Claude Codeを使うたびに自動で動いてくれるので、小さな手間が積み重なって大きな効率化につながります。

自動化のその他のテクニックは「Claude Codeで業務を自動化する5つのレシピ|非エンジニアでもできた」で紹介しています。

いいなと思ったら応援しよう!