Claude Code: CLAUDE.md 使用ガイド
最終更新:2026-08-31
CLAUDE.md は Claude Code の「プロジェクトマニュアル」です — うまく書けば、Claude Code は経験豊富なチームメンバーのように動きます。書き方が悪ければ、右も左も分からない新人のようになります。
💡 ヒント: CLAUDE.md の核心原則は「暗黙より明示」です — 当たり前だと思っている規約も書き出してください。Claude Code は推測しません。
📋 前提条件: 第8章 - 基本使用法
1. 学ぶ内容
- CLAUDE.md の完全な構文と構造
- レイヤー設定戦略(グローバル/プロジェクト/ディレクトリ)
- 書き方のベストプラクティス
- よくある落とし穴と回避方法
- 実践的な比較例
2. CLAUDE.md の構文と構造
(1) コア構造
MARKDOWN
# CLAUDE.md
## Project Overview
[プロジェクトが何で何をするかの一行説明]
## Tech Stack
[言語、フレームワーク、データベース、ツールチェーン]
## Common Commands
[ビルド、テスト、デプロイ、開発コマンド]
## Code Conventions
[命名規則、ファイル構成、スタイル要件]
## Constraints and Limitations
[やってはいけないこと、やらなければならないこと]
## Known Issues
[技術的負債と特别注意が必要な落とし穴]
(2) 指示の種類
| 種類 | 例 | 優先度 |
|---|---|---|
| 必須 | "すべての API にエラー処理が必要" | 高い |
| 禁止 | "データベーステーブルを直接修正しない" | 高い |
| 推奨 | "関数型スタイルを優先" | 中程度 |
| 参考情報 | "プロジェクトは Monorepo 構造を使用" | 低い |
▶ 例1:高品質な CLAUDE.md
MARKDOWN
# CLAUDE.md
## Project Overview
SaaS 課金プラットフォームバックエンド、サブスクリプション管理、請求書生成、決済統合を担当。
## Tech Stack
- Node.js 20 + TypeScript 5.3
- Express 4.18 + middleware chain
- Prisma 5.x (PostgreSQL)
- Redis (cache + queue)
- Jest + Supertest (testing)
## Common Commands
- `npm run dev` — 開発サーバー起動(ポート3000)
- `npm test` — 全テスト実行
- `npm run lint` — ESLint チェック
- `npx prisma migrate dev` — データベースマイグレーション
## Code Conventions
- Service レイヤーはビジネスロジックのみを処理、HTTP オブジェクトへの直接アクセス禁止
- Controller レイヤーはリクエスト/レスポンス変換を処理
- すべてのデータベース操作は Repository パターン経由
- エラーは statusCode と code を持つ AppError クラスを使用
- API レスポンス形式:`{ success: boolean, data: T, error?: string }`
## Constraints
- ❌ pg クライアントを直接使用せず、必ず Prisma を使用
- ❌ Service レイヤーで req/res にアクセスしない
- ❌ シークレットや認証情報をハードコードしない
- ✅ すべての API エンドポイントにインテグレーションテストが必要
- ✅ 金額はすべてセント(整数)を使用、浮動小数点エラーを回避
## Known Issues
- PaymentService.processRefund に同時実行の問題あり(ISSUE-342 参照)
- InvoiceService.generatePDF は項目数が多い場合にパフォーマンス低下(ISSUE-156 参照)
3. レイヤー設定戦略
(1) 3層設定システム
TEXT
📖 参照専用
~/.claude/CLAUDE.md # グローバル:個人の好み
project-root/CLAUDE.md # プロジェクト:チームの規約
project-root/src/api/CLAUDE.md # ディレクトリ:ローカルの指示
| レイヤー | 範囲 | 典型的な内容 | 優先度 |
|---|---|---|---|
| グローバル | すべてのプロジェクト | 個人のコーディングスタイルの好み | 最も低い |
| プロジェクト | 現在のプロジェクト | 技術スタック、コマンド、制約 | 中程度 |
| ディレクトリ | サブディレクトリ | ローカル固有の指示 | 最も高い |
(2) グローバル CLAUDE.md
MARKDOWN
<!-- ~/.claude/CLAUDE.md -->
# Global Preferences
## Code Style
- TypeScript strict モードを使用
- const を優先し、let を避ける
- 関数は20行以内
- JSDoc コメントを追加
## Testing Preferences
- describe/it スタイルを使用
- 各テストは独立、実行順序に依存しない
- 外部依存をモックし、内部モジュールはモックしない
(3) ディレクトリレベル CLAUDE.md
MARKDOWN
<!-- src/api/CLAUDE.md -->
# API Module Conventions
## Route Registration
- すべてのルートは index.ts に一元登録
- ミドルウェアの順序:auth → rateLimit → validate → handler
## Response Format
- 成功:{ success: true, data: T }
- 失敗:{ success: false, error: { code, message } }
## Prohibited
- ❌ ハンドラにビジネスロジックを直接書かない
- ❌ パラメータバリデーションをスキップしない
4. 書き方のベストプラクティス
(1) 効果的な指示と非効果的な指示
| 非効果的 | 効果的 | 理由 |
|---|---|---|
| 「良いコードを書いて」 | 「関数は20行以内、循環的複雑度 < 10」 | 定量化可能 |
| 「セキュリティに注意して」 | 「すべてのユーザー入力をサニタイズ、SQL 結合なし」 | 具体的で実行可能 |
| 「ベストプラクティスに従って」 | 「Repository パターンを使用、Service は DB に直接アクセスしない」 | 明確なパターン |
| 「コードを速くして」 | 「DB クエリにはインデックスが必要、N+1 クエリは DataLoader を使用」 | 具体的な方法 |
(2) 落とし穴チェックリスト
| 落とし穴 | 例 | 正しいアプローチ |
|---|---|---|
| 曖昧すぎる | 「コードをきれいに保つ」 | 具体的な基準を書く |
| 長すぎる | 500行の CLAUDE.md | コア規約に絞る |
| 矛盾している | 「REST を使う」と「GraphQL を使う」 | 一貫性を保つ |
| 古い情報 | 「Express 3.x を使う」と書いたまま | プロジェクトに合わせて更新 |
| 無関係な情報 | チーム組織図を書く | コードに影響する情報のみ |
5. CLAUDE.md の動的更新
▶ 例2:Claude Code に CLAUDE.md を管理させる
TEXT
📖 参照専用
> Update CLAUDE.md based on recent code changes
Claude Code:
→ 最近のコミットを読み取り中
→ 変更を検出:Express → Fastify、Redis 追加、Jest → Vitest
→ CLAUDE.md を現在の技術スタックとコマンドで更新
CLAUDE.md updated ✓
❓ よくある質問
Q CLAUDE.md はどのくらいの長さが適切ですか?
A 50-150行が最適です。短すぎると情報不足、長すぎると Claude Code が一部をスキップする場合があります。コア規約を先に、参考情報は最小限に。
Q Claude Code は常に CLAUDE.md の指示に従いますか?
A ほとんどの場合はいですが、100%ではありません。高優先度の指示(❌「禁止」/✅「必須」)は遵守率が高いです。提案的な指示は見落とされる場合があります。
Q 複数の CLAUDE.md が競合することはありますか?
A はい。ディレクトリレベルがプロジェクトレベルを上書きし、プロジェクトレベルがグローバルを上書きします。より具体的なものが優先されます。
Q CLAUDE.md に機密情報を入れてもいいですか?
A 絶対にダメです。CLAUDE.md は git にコミットされます。API キーやパスワード等は環境変数を使用してください。
Q CLAUDE.md は条件付きロジックをサポートしていますか?
A プログラミングロジックはサポートされていません。静的テキストの指示のみです。条件付き判断は Claude Code の判断に委ねられます。
Q いつ CLAUDE.md を更新すべきですか?
A 技術スタックが変更された時、新しい規約が追加された時、または Claude Code が同じ間違いを繰り返す時です。
📖 まとめ
- CLAUDE.md は Claude Code のプロジェクトマニュアル。「暗黙より明示」が核心原則
- 3層設定:グローバル(個人) → プロジェクト(チーム) → ディレクトリ(ローカル)
- 効果的な指示:具体的、実行可能、定量化可能。曖昧さと冗長さを避ける
- ❌/✅ マーカーで指示の遵守率が向上
- プロジェクトの進化に合わせて継続的に更新
📝 練習問題
- 基本 (⭐): プロジェクトの概要、技術スタック、コマンドを含む50行の CLAUDE.md を作成してください。
- 応用 (⭐⭐): 3層 CLAUDE.md 設定を実装し、指示の優先度をテストしてください。
- 高度 (⭐⭐⭐): 曖昧な指示と正確な指示を書き、Claude Code の実行の違いを比較して CLAUDE.md 作成の黄金ルールをまとめてください。