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%