Claude Code: CLAUDE.md 使用ガイド

最終更新:2026-08-31

CLAUDE.md は Claude Code の「プロジェクトマニュアル」です — うまく書けば、Claude Code は経験豊富なチームメンバーのように動きます。書き方が悪ければ、右も左も分からない新人のようになります。

💡 ヒント: CLAUDE.md の核心原則は「暗黙より明示」です — 当たり前だと思っている規約も書き出してください。Claude Code は推測しません。

📋 前提条件: 第8章 - 基本使用法

1. 学ぶ内容


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 が同じ間違いを繰り返す時です。

📖 まとめ


📝 練習問題

  1. 基本 (⭐): プロジェクトの概要、技術スタック、コマンドを含む50行の CLAUDE.md を作成してください。
  2. 応用 (⭐⭐): 3層 CLAUDE.md 設定を実装し、指示の優先度をテストしてください。
  3. 高度 (⭐⭐⭐): 曖昧な指示と正確な指示を書き、Claude Code の実行の違いを比較して CLAUDE.md 作成の黄金ルールをまとめてください。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%