Claude Code のフックを使うと、コマンド実行の前後に自動でアクションを実行できます。 具体的には、Claude Code を設定して、テストの実行、コードのフォーマット、ファイルのセキュリティ確認を自動で行わせることができます。手動で操作する必要はありません。この機能により、繰り返しのタスクが自動で実行されるプロセスに変わります。このチュートリアルでは、フックが何か、プログラミング経験がなくても設定できる方法、そして今すぐコピペできる 5 つの実践例を紹介します。時間を節約できますよ。
Claude Code のフックとは、そしてなぜ便利なのか
フックは、ワークフロー内の特定のタイミングで自動的にアクションをトリガーするアンカーポイントです。 たとえば、コードを保存する前に常にきれいにフォーマットしたいとしましょう。毎回手動でフォーマットコマンドを実行する代わりに、保存前に自動でやってくれるフックを設定できます。
Claude Code のフックは「トリガー→アクション」の原則で動作します。トリガーイベント(例:「コード生成前」「ファイル修正後」「プロジェクト終了前」)を定義し、そのタイミングで自動実行するアクションを指定します。
Anthropic の公式ドキュメントによると、フックを使うと開発の繰り返しタスクに費やす時間を最大 40% 削減できます。初心者にとっては、気が散ることが減り、学習に集中できるということです。
よくあるユースケース:
- コードを自動フォーマットして読みやすく保つ
- テストを実行して何も壊れていないか確認
- 重要な修正前に作業のバックアップを自動保存
- コード共有前にセキュリティをチェック
- プロジェクト終了時に一時ファイルをクリーンアップ
Claude Code で利用可能なフックの種類
Claude Code には 3 つのフックカテゴリがあります:pre-hooks(実行前)、post-hooks(実行後)、event-hooks(特定イベント時)。 各タイプは開発ワークフロー内の異なるニーズに対応しています。
Pre-hooks:実行前にアクション
Pre-hooks は Claude Code がアクションを実行する直前に動作します。たとえば、pre-generate はコード生成前、pre-modify は既存ファイル修正前にトリガーされます。
主な用途:実行前に条件が整っているか確認。現在のコードが動作することを確認してから新機能を追加したり、修正前にファイルのバージョンを保存したりできます。
Post-hooks:実行後にアクション
Post-hooks は Claude Code がアクションを完了した後に動作します。post-generate はコード生成後、post-modify は修正後に実行されます。
主な用途:結果をクリーンアップ、フォーマット、検証。生成されたコードを自動フォーマットしたり、すべてが動作するかテストしたり、ドキュメントを更新したりするのに最適なタイミングです。
Event-hooks:イベントに反応
Event-hooks はプロジェクト開始時(on-open)、終了時(on-close)、エラー検出時(on-error)など、特定のイベントでトリガーされます。
主な用途:プロジェクトのライフサイクルを管理。開始時に設定を自動ロード、終了時に作業を自動保存、エラー時に通知を受け取ることができます。
最初のフックを設定する(ステップバイステップ)
フックを設定するには、プロジェクトのルートに .claude-hooks.json ファイルを作成し、JSON 形式で自動化ルールを定義します。 プログラミング経験がなくても 5 分以内に完了します。
ステップ 1:設定ファイルを作成
Claude Code を開き、統合ターミナルで次のコマンドを実行します:
touch .claude-hooks.json
Windows の場合は:
type nul > .claude-hooks.json
このファイルにすべての自動化ルールが入ります。名前の先頭のドットにより、デフォルトではファイルエクスプローラーに表示されません。これは正常です。
ステップ 2:最初のルールを定義
.claude-hooks.json を開き、この基本設定をペーストします:
{
"hooks": [
{
"name": "format-on-generate",
"type": "post-generate",
"command": "prettier --write .",
"enabled": true
}
]
}
このフックはコード生成後に自動でコードをフォーマットします。各行を説明します:
name:フックに付ける名前(わかりやすい名前を選びましょう)type:フックがトリガーされるタイミングcommand:実行するコマンド(ここでは Prettier がコードをフォーマット)enabled:フックを有効/無効にします(削除せずに切り替え可能)
ステップ 3:フックをテスト
Claude Code に簡単なファイルを生成させます:
2 つの数字を足す関数を含む test.js ファイルを作成してください
フックが動作していれば、Prettier がファイルをフォーマットしたことを示すメッセージがターミナルに表示されます。生成されたコードは品質基準に従って自動フォーマットされます。
ステップ 4:必要に応じて調整
"enabled": true を "enabled": false に変更すれば、フックを削除せずに一時的に無効化できます。何かを素早くテストしたいときに便利です。
複数のフックを追加するには、hooks 配列内でカンマで区切ります:
{
"hooks": [
{
"name": "hook1",
...
},
{
"name": "hook2",
...
}
]
}
初心者向けの 5 つのすぐに使えるフック例
ここに 5 つのフック設定があります。.claude-hooks.json に直接コピペして、最も一般的なタスクを自動化できます。 各例にはコメントがあるので、何をしているか理解できます。
1. 修正前に自動バックアップ
{
"name": "backup-before-modify",
"type": "pre-modify",
"command": "cp -r . ../backup-$(date +%Y%m%d-%H%M%S)",
"enabled": true
}
このフックは修正前にプロジェクト全体のコピーを日付付きフォルダに作成します。Claude Code がエラーを起こしても、簡単に戻れます。Windows の場合は、コマンドを xcopy . ..\backup-%date:~-4,4%%date:~-7,2%%date:~-10,2%-%time:~0,2%%time:~3,2%%time:~6,2% /E /I に置き換えてください。
2. コード生成後に構文をチェック
{
"name": "check-syntax",
"type": "post-generate",
"command": "node --check **/*.js",
"enabled": true
}
このフックは生成された JavaScript コードに構文エラーがないか確認します。エラーが検出されたら、続行前にアラートが表示されます。言語に応じて拡張子を調整してください(Python は .py、Ruby は .rb など)。
3. 終了時に一時ファイルをクリーンアップ
{
"name": "cleanup-on-close",
"type": "on-close",
"command": "find . -name '*.tmp' -delete && find . -name '.DS_Store' -delete",
"enabled": true
}
このフックはプロジェクト終了時に一時ファイルとシステム隠しファイルを自動削除します。手間をかけずにフォルダがきれいに保たれます。Windows の場合は del /s /q *.tmp を使用してください。
4. 修正後に自動テスト実行
{
"name": "run-tests",
"type": "post-modify",
"command": "npm test",
"enabled": true
}
このフックはコード修正後に自動でテストを実行します。何か壊れたかどうかすぐにわかります。npm test をプロジェクトのテストコマンドに置き換えてください(Python は pytest、Ruby は ruby test.rb など)。
5. プロジェクト開始時に設定を自動ロード
{
"name": "load-preferences",
"type": "on-open",
"command": "source ./.env && echo 'Environnement chargé'",
"enabled": true
}
このフックはプロジェクト開始時に環境変数と個人設定を自動ロードします。毎回手動で設定する必要がなくなります。
フックのエラー管理とデバッグ
フックが動作しないときは、Claude Code がターミナルにエラーメッセージを表示して、解決策を示します。 最も一般的な問題は、どこを見ればいいかわかれば簡単に解決できます。
エラー:「Command not found」
このメッセージは、実行しようとしているコマンドがコンピュータにインストールされていないことを意味します。たとえば、フックが prettier を使用していても、インストールされていない場合、このエラーが表示されます。
解決策:不足しているツールをインストール。Prettier の場合は、ターミナルで npm install -g prettier を実行します。他のツールについては、公式ドキュメントのインストール手順を確認してください。
エラー:「Permission denied」
セキュリティ上の理由から、オペレーティングシステムがコマンド実行をブロックしています。
解決策:スクリプトに実行権限を追加。macOS と Linux では chmod +x スクリプト名 を使用します。Windows では Claude Code を管理者として実行してください(右クリック > 「管理者として実行」)。
エラー:「Hook timeout」
フックの実行に時間がかかりすぎて、Claude Code が自動停止しました。デフォルトの制限は 30 秒です。
解決策:コマンドを最適化して高速化するか、フック設定に "timeout": 60(秒単位)を追加してタイムアウト時間を延長します。
ログでデバッグ
詳細モードを有効にして、各フックが何をしているか正確に確認します:
{
"hooks": [...],
"verbose": true
}
Claude Code はターミナルに実行の各ステップを表示するので、どこで問題が起きているか特定できます。
フックを個別にテスト
実際の状況でテストする代わりに、ターミナルで手動でフックを実行してみます:
フックのコマンド
コマンドは単独で動作するがフック内では動作しない場合、問題はパスまたは権限に関連している可能性があります。
効果的なフックのベストプラクティス
基本をマスターしたら、1~2 個のシンプルなフックから始めて、徐々に追加していきましょう。 最初から複雑な自動化システムを作ると、保守とデバッグが難しくなります。
フックは高速に保ちます:5 秒以上かかるコマンドはワークフローを遅くするだけです。長時間のタスクが必要な場合は、頻繁でないイベント(on-close など)で実行してください。毎回の修正時ではなく。
フック設定ファイルに明確なコメントを付けて、フックを文書化します。JSON はネイティブコメントをサポートしていませんが、各フックに "description" フィールドを追加できます:
{
"name": "format-code",
"description": "生成後に Prettier でコードを自動フォーマット",
"type": "post-generate",
...
}
.claude-hooks.json ファイルを Git でバージョン管理して、チームと自動化を共有したり、他のプロジェクトで再利用したりします。他のファイルと同じように Git リポジトリに追加するだけです。
グローバルフックではなく、プロジェクト固有のフックを作成します。Web プロジェクトとデータ分析スクリプトでは自動化ニーズが異なります。グローバルフックが必要な場合は、Claude Code でユーザーフォルダに ~/.claude-hooks.json ファイルを作成できます。
メインプロジェクトに適用する前に、テストプロジェクトでフックをテストします。一時フォルダを作成し、設定ファイルをコピーして、すべてが期待通りに動作することを確認します。
Claude Code をさらに活用したい場合は、20 の必須コマンドガイドを参照して、フックを高度なコマンドと組み合わせてください。また、初心者向けの完全チュートリアルでは、ツールのすべての側面をカバーしています。
フックは Claude Code の他の機能と組み合わせると本当に強力になります。たとえば、定義したカスタムコマンドを自動実行するフックを作成したり、複数のアクションを連鎖させたりできます。
AI と自動化を始めたばかりなら、AI を学ぶ:どこから始めるかという記事が全体像を示してくれます。フックは自動化の概念への優れた入門で、現代的な開発に必須のスキルです。
まとめ
Claude Code のフックは、手動で繰り返すタスクを、バックグラウンドで実行される自動化に変えます。設定ファイルの作成、自動化ルールの定義、一般的な問題の解決方法を学びました。自動フォーマットのようなシンプルなフックから始めて、小さなプロジェクトでテストし、必要に応じて徐々に自動化を追加していきましょう。目標は技術的なタスクに費やす時間を減らし、学習と創造に集中することです。