Claude Code の hooks で lint とテストを自動化する設計の入口(要公式確認)
目次 クリックで開く
Anthropic が提供する CLI 型コーディングエージェント「Claude Code」は、単にコードを書くだけのツールではありません。リポジトリの全容を把握し、自律的にコマンドを実行できるその特性を最大限に活かすには、「AI が書いた直後に、AI 自身にチェック(lint)とテストを強制する」設計が不可欠です。
本記事では、Claude Code を導入した現場で、いかにして lint とテストの自動化を組み込み、人間がレビューする手前の段階で品質を担保するか、その設計の入口を解説します。公式の仕様に基づいた CLAUDE.md の活用法から、既存の Git Hooks との併用、実務での運用フローまでを網羅します。
1. Claude Code 運用で「自動チェック」が不可欠な理由
Claude Code は、従来のエディタ補完 AI よりもはるかに広い権限を持ちます。複雑なリファクタリングを一瞬で完遂する一方で、軽微なインポートエラーや型定義の不整合を見逃すリスクもゼロではありません。人間がこれらを確認するのは時間の無駄です。
自動化を設計するメリット:
- セルフヒーリングの実現:テストが失敗した際、Claude Code はそのエラーログを読み取り、自律的に修正を試みます。
- レビュアーの負荷軽減:構文エラーやスタイル違反があるコードがプルリクエスト(PR)に混入するのを防ぎます。
- 非エンジニアとの協業:非エンジニアが Claude Code を使って業務スクリプトを修正する場合でも、自動化されたテストがあれば壊れたことに即座に気づけます。
特に、社内インフラの自動化やデータ連携の現場では、一つのミスが致命的なエラーに繋がります。例えば、SaaSアカウント削除の自動化といった機微な処理を Claude Code で記述させる場合、lint による厳格なチェックは必須のガードレールとなります。
2. Claude Code における自動化の核:CLAUDE.md への定義
Claude Code には、プロジェクト固有の命令を記憶させるための CLAUDE.md という仕組みがあります。これは、そのプロジェクトでどのようにビルドし、どのようにテストを実行すべきかをエージェントに伝える「憲法」のような役割を果たします。
CLAUDE.md への基本記述例
リポジトリのルートに CLAUDE.md を配置し、以下のようにコマンドを定義します。これにより、Claude Code は /test や /build といったスラッシュコマンドで正しいアクションを実行できるようになります。
## Build and Test Commands
Build: npm run build
Lint: npm run lint
Test: npm test
Single Test: npm test -- [filename]
単にコマンドを列挙するだけでなく、「ファイルを編集した後は必ず Lint と Test を実行し、エラーがあれば修正すること」という指示(Instructions)を書き添えるのがコツです。
3. 実践:Claude Code で lint とテストを自動化する設計
Claude Code に「自発的に」テストを回させるためには、いくつかのレイヤーで自動化を仕込みます。いわゆる Git Hooks 的な動作を Claude Code のワークフローに組み込む手法です。
3-1. Git Hooks (Husky) との連携
最も確実なのは、Claude Code が git commit を実行する際に、強制的に lint を走らせることです。Husky や lint-staged を導入しているプロジェクトであれば、Claude Code もその制約を受けます。
Claude Code がコミットを試みた際に lint エラーが出ると、CLI 上にそのエラーが表示されます。Claude Code はその出力を読み取れるため、「エラーが出たから修正する」というループが自動で開始されます。
3-2. スラッシュコマンドを活用した「編集・テスト・修正」の半自動化
Claude Code の CLI 上で、複数の指示を一度に与えることができます。
> /edit ユーザー登録ロジックにバリデーションを追加して。その後、テストを回してパスすることを確認して。
このように指示することで、Claude Code は編集後に CLAUDE.md に記載されたテストコマンドを自ら叩き、結果を報告します。
3-3. 外部ツールとの比較表
Claude Code が他の AI ツールと比べて、なぜ自動化設計に向いているのかを比較しました。Claude Code の最大の強みは、ローカルのターミナルを直接操作し、コマンド実行結果をループで処理できる点にあります。
| 機能・特性 | Claude Code (Anthropic) | GitHub Copilot | Cursor (IDE) |
|---|---|---|---|
| 実行環境 | ローカルターミナル / CLI | IDE拡張 / クラウドサイド | 独自IDE内蔵型 |
| コマンド実行権限 | あり(任意コマンド実行可能) | なし(提案のみ) | あり(Terminal制御) |
| プロジェクト記憶 | CLAUDE.md / AGENTS.md | .github/copilot-instructions | .cursorrules |
| テスト自動修正 | 得意(ループ処理が可能) | 手動でのコピペが必要 | 可能(Chat/Composer経由) |
| 料金体系 | 従量課金 (API使用量) | 月額固定 | 月額固定 / 従量課金 |
※料金の詳細は Anthropic 公式サイト をご確認ください。
4. 言語別・フレームワーク別の設定テンプレート
Claude Code に自動化の「入口」を教えるための CLAUDE.md への具体的な記述例です。プロジェクトの技術スタックに合わせて、以下の内容を CLAUDE.md の Instructions セクションに追加してください。
Node.js / TypeScript (ESLint & Jest)
### Coding Standards
Use TypeScript for all files.
Ensure all types are strictly defined.
Run npm run lint --fix after any file changes.
If a test fails, analyze the failure and fix the code before asking for feedback.
Python (Ruff & Pytest)
### Project Rules
Follow PEP 8 style guide.
Use ruff check --fix for linting.
Use pytest for unit tests.
Always run pytest [changed_file_path] immediately after editing a module.
このような設定は、バックオフィス業務の DX においても非常に有効です。例えば、AppSheet と Google Workspace を連携させるスクリプトを Claude Code で管理する場合、Apps Script の型定義チェックを lint に組み込むことで、実行時エラーを劇的に減らすことができます。
5. 運用事例:プルリクエスト作成までの摩擦ゼロフロー
実務でどのように Claude Code が働き、成果物が出るのか、具体的なフローを見ていきましょう。
登場人物と役割
- エンジニア: Claude Code を起動し、タスクを投げる。
- Claude Code:
CLAUDE.mdを読み、コードを修正し、テストを自律実行する。 - GitHub: 最終的な PR の場。
ステップ・バイ・ステップの運用
- プロジェクトの準備:
リポジトリのルートにCLAUDE.mdを作成し、テストコマンドを定義。 - Claude Code の起動:
ターミナルでclaudeコマンドを実行。 - 指示の実行:
> 「経理データの CSV 変換ロジックを修正して。freee のインポート形式に合うように。」
(ここで 楽楽精算×freee連携 のような具体的な業務要件を伝えます) - 自動チェックループ:
Claude Code がコードを書き換えた後、自らnpm testを実行。もし、既存のテスト(期待される CSV ヘッダーのチェックなど)に失敗すれば、そのログを読み取り「すみません、期待されるヘッダーの順番を間違えていました」と自己修正を行います。 - プルリクエストの生成:
テストがすべてパスしたことを確認した後、Claude Code に/pr(または git コマンド指示) を出し、修正内容の要約が含まれたプルリクエストを作成させます。
6. セキュリティとコストの管理
自動化を設計する際、避けて通れないのがコストとセキュリティの問題です。
無限ループの防止
テストが永遠にパスしないコードを AI が書き続けると、API トークンを大量に消費します。Claude Code には「最大試行回数」を指示する、あるいは人間が途中で介入して Stop をかけることが重要です。CLAUDE.md に 「3回テストに失敗した場合は、修正を中断して理由を説明し、人間の指示を仰ぐこと」 と記載しておくのが実務的な Tips です。
機密情報の扱い
テストを自動化する際、テストデータに本番環境の API キーや顧客情報が含まれないよう厳重に管理してください。.gitignore に .env を含めるのはもちろん、Claude Code が読み取るコンテキストから機密ファイルを除外するために .claudeignore を活用しましょう。
7. まとめ:品質と速度を両立する AI 開発基盤の構築
Claude Code の真価は、単なるコード生成ではなく、「検証まで含めた自律的なサイクル」を回せる点にあります。CLAUDE.md に lint やテストの定義を書き込むという、わずか数分の手間で、開発速度と品質は劇的に向上します。
これから Claude Code を本格導入するチームは、まずは既存の lint / test コマンドを CLAUDE.md に書き出すことから始めてください。AI が自らエラーを吐き、自ら直すその姿は、開発プロセスのパラダイムシフトを実感させてくれるはずです。
参考リンク: