Claude Code Hooks完全ガイド — 自動化とワークフローカスタマイズで開発効率を最大化
Claude Code Hooksの全イベントタイプと活用法を徹底解説。SessionStart、PreToolUse、PostToolUseを使った自動フォーマット、リントチェック、セキュリティ保護、テスト自動実行の実装パターンを品川区・港区のエンジニア向けに紹介します。
Hooksとは — ライフサイクルイベントによる保証付き自動実行
Claude Code Hooksは、AIエージェントの実行ライフサイクルにおける特定のポイントで自動的にコマンドやチェックを実行する仕組みです。通常のシステムプロンプトと異なり、Hooksは「LLMへの指示」ではなく「保証された実行」を提供します。ファイル保存時に必ずフォーマッターを実行する、コミット前に必ずリントチェックを通す、危険なコマンドを確実にブロックするといった、確実性が求められる自動化処理に最適です。品川区・港区のエンタープライズ開発チームでは、HooksによってコードレビューのQAチェック工数を約40%削減した実績があります。
Hookイベント一覧 — 6つのライフサイクルポイント
Claude Codeは以下の6つのイベントタイミングでHooksをトリガーできます: 1. **SessionStart** - セッション開始時。環境チェック、依存関係の検証、プロジェクト固有の初期化処理に使用 2. **UserPromptSubmit** - ユーザーがプロンプトを送信した直後。内容のフィルタリングやロギングに活用 3. **PreToolUse** - ツール実行直前。Bash、Edit、Writeなど特定ツールの実行前チェックに利用 4. **PostToolUse** - ツール実行成功後。ファイル保存後の自動フォーマット、テスト実行などに使用 5. **PostToolUseFailure** - ツール実行失敗時。エラーログ、リトライロジックの実装に活用 6. **SessionEnd** - セッション終了時。リソースのクリーンアップ、レポート生成に使用 これらを組み合わせることで、開発ワークフロー全体を自動化できます。
Hookの3タイプ — command、prompt、agentの使い分け
Hooksには3つの実装タイプがあります: **command型** - シェルコマンドを直接実行。`prettier --write {file}` や `npm test` など、確定的な処理に適しています。最も軽量で高速。 **prompt型** - LLMに判定を委ねる。「このコードは安全か?」「このコミットメッセージは適切か?」といった判断が必要な場合に使用。柔軟性が高い反面、APIコストが発生するため、頻繁に実行されるHookには注意が必要です。 **agent型** - サブエージェントを起動して詳細な検証を実行。複雑なコードレビュー、セキュリティ監査など、深い分析が必要な場合に活用。渋谷区のスタートアップでは、agent型Hookでプルリクエストの自動レビューを実装し、レビュー待ち時間を平均2時間短縮しました。
設定方法 — .claude/settings.jsonへの記述
Hooksはプロジェクトルートの `.claude/settings.json` に記述します: ```json { "hooks": [ { "event": "PostToolUse", "tool": "Write", "type": "command", "command": "prettier --write {file}", "description": "Auto-format saved files" } ] } ``` **マッチャーパターン** を使えば、特定のファイルだけにHookを適用できます: ```json { "tool": "Write", "matcher": "**/*.{js,ts,jsx,tsx}", "command": "eslint --fix {file}" } ``` `{file}` プレースホルダーには実際のファイルパスが自動展開されます。港区のWeb制作会社では、この仕組みで全プロジェクトの品質基準を統一しています。
ファイル保存時の自動フォーマット — PostToolUse活用
最も実用的なHookパターンの一つが、ファイル保存時の自動フォーマットです: ```json { "event": "PostToolUse", "tool": "Write|Edit", "type": "command", "matcher": "**/*.{js,ts,jsx,tsx}", "command": "prettier --write {file} && eslint --fix {file}" } ``` `Write` または `Edit` ツールが実行された直後に、prettierとESLintが自動実行されます。これにより: - AI生成コードが常にプロジェクトのコーディング規約に準拠 - 手動でのフォーマット作業が不要に - コードレビューでスタイル指摘がゼロに 品川区のSaaS企業では、この設定で月間約20時間の作業時間を削減しました。
コミット前のリントチェック — PreToolUseでgit commitをインターセプト
PreToolUseイベントを使えば、git commitコマンドの実行前にリントチェックを強制できます: ```json { "event": "PreToolUse", "tool": "Bash", "matcher": "*git commit*", "type": "command", "command": "npm run lint-staged", "description": "Run lint checks before commit" } ``` コマンドが失敗(exit code 1)した場合、git commitは実行されません。これはHuskyやlint-stagedと同等の機能を、Claude Codeの設定だけで実現します。渋谷区の開発チームでは、この仕組みで「あとでlint修正します」というPRが完全になくなりました。
セキュリティフック — 危険なコマンドの検出とブロック
PreToolUseを使って、危険なコマンドを実行前にブロックできます: ```json { "event": "PreToolUse", "tool": "Bash", "matcher": "*rm -rf*|*git push --force*|*DROP TABLE*", "type": "prompt", "prompt": "This command is potentially dangerous. Analyze the context and confirm if it should be allowed.", "description": "Protect against destructive commands" } ``` prompt型Hookを使うことで、LLMが文脈を理解して判断します。「テストディレクトリのクリーンアップ」は許可し、「プロダクションデータの削除」はブロックするといった柔軟な制御が可能です。港区のFinTech企業では、この設定で本番環境への誤操作リスクをゼロに近づけました。
テスト自動実行 — ファイル編集後の関連テスト実行
PostToolUseで、編集されたファイルに関連するテストを自動実行できます: ```json { "event": "PostToolUse", "tool": "Edit", "matcher": "src/**/*.ts", "type": "command", "command": "npm test -- --findRelatedTests {file}", "description": "Run tests related to edited files" } ``` Jestの `--findRelatedTests` オプションを使えば、変更の影響を受けるテストだけを実行し、フィードバックループを高速化できます。品川区のプロダクト開発チームでは、この設定によって「変更後のテスト忘れ」によるリグレッションが80%減少しました。
prompt型Hookの活用 — LLMによる高度な判定
prompt型Hookは、LLMの推論能力を活かした柔軟なチェックを実現します: ```json { "event": "PreToolUse", "tool": "Bash", "matcher": "*npm install*|*yarn add*", "type": "prompt", "prompt": "Review the package being installed. Check for: 1) Known security vulnerabilities, 2) Suspicious package names (typosquatting), 3) License compatibility. Approve or reject with explanation.", "description": "Security review for new dependencies" } ``` ただし、prompt型Hookは呼び出しごとにAPIコストが発生するため、**頻度の低いイベント**(依存関係の追加、デプロイ前チェック)に限定するのがベストプラクティスです。渋谷区のエンジニアリングチームでは、月10回程度の依存関係追加時にのみprompt型を使い、コストを月$5未満に抑えています。
MCP連携Hookパターン — MCPツールイベントのフック
MCPサーバーから提供されるツールもHookのトリガーにできます。ツール名は `mcp__<server>__<tool>` 形式で指定します: ```json { "event": "PostToolUse", "tool": "mcp__database__execute_query", "type": "command", "command": "echo 'Query executed: {args}' >> audit.log", "description": "Log all database queries" } ``` これにより、データベース操作の監査ログ、外部API呼び出しのレート制限管理、ファイルシステムアクセスの追跡など、MCP経由のあらゆる操作を自動化・監視できます。港区のコンプライアンス重視企業では、全データアクセスのロギングをHookで実装しています。
チームでのHook共有 — .claude/settings.jsonのバージョン管理
`.claude/settings.json` をGitリポジトリに含めることで、チーム全体で統一されたワークフローを共有できます: ```bash # プロジェクトルート ├── .claude/ │ └── settings.json # チーム標準Hook設定 ├── .gitignore └── package.json ``` 新メンバーがプロジェクトをクローンすれば、初回のClaude Code起動時から全Hooksが自動適用されます。品川区のWeb開発会社では、この仕組みでオンボーディング時の「開発環境セットアップ漏れ」を完全に解消しました。 **チーム標準Hook集の例**: - pre-commit lint - auto-format on save - security command blocking - test execution after code changes - dependency audit on package.json changes
Hook開発のベストプラクティス
効果的なHook設定のためのベストプラクティス: **1. デバッグ方法** - `--verbose` フラグでHookの実行ログを確認。失敗時のexit codeとstderrをチェック。 **2. エラーハンドリング** - Hookが失敗してもセッション全体が止まらないよう、`continueOnError: true` オプションを活用。 **3. パフォーマンス** - 重い処理(全テスト実行、ビルド)はPostToolUseに配置し、PreToolUseは軽量なチェックのみに。 **4. 段階的導入** - まず1つのHook(auto-format)から始め、チームの反応を見ながら追加。 **5. ドキュメント化** - 各Hookの `description` フィールドを充実させ、READMEにHook一覧を記載。 渋谷区・港区のオブライトでは、貴社のワークフローに最適化されたHook設計を支援します。
まとめ — Hooksで開発ワークフローを次のレベルへ
Claude Code Hooksは、AIエージェント開発における「自動化の標準装備」です。ファイル保存時のフォーマット、コミット前のチェック、セキュリティ保護、テスト自動実行を確実に実行することで、コードレビューの品質向上、作業時間の削減、チーム全体の生産性向上を実現します。品川区・港区・渋谷区エリアでClaude Codeの導入をお考えの企業様は、株式会社オブライトにご相談ください。Hooks設計からチーム標準の策定、CI/CD統合まで、エンタープライズグレードのAI開発環境構築を支援いたします。
お気軽にご相談ください
お問い合わせ