CLAUDE.mdの書き方完全ガイド
Claude Codeをプロジェクトに最適化する設定ファイル
一度書けば毎回の指示が不要に ─ プロジェクトの「チーム憲法」を作る方法
Claude Code を使っていて「毎回同じことを説明しなければならない」「コーディングスタイルがバラバラになる」と感じたことはありませんか?その悩みを解決するのが CLAUDE.md です。
CLAUDE.md はプロジェクトのルール・文脈・注意事項を書いておくと、Claude が自動で読み込んでくれる設定ファイルです。一度書けば毎回の指示が不要になり、チームで共有すれば全員が同じルールで Claude を使えます。
1. CLAUDE.mdとは何か
CLAUDE.md は、Claude Code がプロジェクトを開始するときに自動で読み込む Markdown 形式の設定ファイルです。ここに書いたことは、毎回のプロンプトで指示しなくても Claude が常に守ってくれます。
Claude Code はセッション開始時にプロジェクト内の CLAUDE.md を自動検出して読み込みます。その後のすべての会話・操作に対して、CLAUDE.md の内容が適用されます。
具体的には次のような情報を書きます。
- プロジェクトの技術スタック・アーキテクチャの説明
- コーディング規約・命名ルール
- よく使うコマンド(ビルド・テスト・デプロイ)
- やってはいけないこと(禁止事項)
- 外部サービスや環境変数の説明
2. 配置場所と読み込み順序
CLAUDE.md は複数の場所に置くことができ、それぞれ異なるスコープで適用されます。
└── CLAUDE.md ← ① ユーザー共通設定(全プロジェクト共通のルール)
プロジェクトルート/
├── CLAUDE.md ← ② プロジェクト設定(チームで Git 管理)
├── src/
│ └── CLAUDE.md ← ③ サブディレクトリ設定(特定ディレクトリのルール)
└── .claude/
└── CLAUDE.local.md ← ④ ローカル設定(個人用・Git管理外)
| ファイル | 適用範囲 | Git管理 | 用途 |
|---|---|---|---|
~/CLAUDE.md |
すべてのプロジェクト | しない | 個人のスタイル・言語設定 |
プロジェクトルート/CLAUDE.md |
そのプロジェクト全体 | する | チーム共通ルール・アーキテクチャ説明 |
サブディレクトリ/CLAUDE.md |
そのディレクトリ以下 | する | フロントエンド・バックエンドで異なるルール |
.claude/CLAUDE.local.md |
そのプロジェクト(個人) | しない | 個人の API キー・ローカル環境の説明 |
複数の CLAUDE.md がある場合、ユーザー共通 → プロジェクトルート → サブディレクトリ → ローカルの順に読み込まれます。下位の設定が上位の設定を上書きします。
3. CLAUDE.mdの基本構成
CLAUDE.md は通常の Markdown で書きます。特別な構文は不要です。見出し・箇条書き・コードブロックを使って人間が読みやすく書けば、Claude も正確に理解します。
# プロジェクト名
プロジェクトの一言説明。
## 技術スタック
- フロントエンド: Next.js 15 / TypeScript / Tailwind CSS
- バックエンド: FastAPI / Python 3.12
- データベース: PostgreSQL 16 / Redis
## よく使うコマンド
\`\`\`bash
npm run dev # 開発サーバー起動
npm test # テスト実行
npm run build # ビルド
\`\`\`
## コーディング規約
- 関数名はキャメルケース(例: getUserById)
- コンポーネントはパスカルケース(例: UserCard)
- コメントは日本語で書く
## 禁止事項
- console.log をコミットしない
- any 型を使わない
- 直接 main ブランチにプッシュしない
4. 書くべき7つのセクション
プロジェクト概要
何のプロジェクトか、誰が使うものか、どんな問題を解決するかを2〜3文で書きます。Claude がタスクの「意図」を理解するための重要な文脈になります。
# ECサイト管理システム
中小企業向けのEC運営バックオフィスシステム。
注文管理・在庫管理・顧客管理・売上分析の機能を提供する。
非エンジニアのスタッフが日常的に使うため、操作性を最優先にする。
技術スタック・アーキテクチャ
使用技術・バージョン・アーキテクチャの特徴を書きます。Claude が適切なコードを生成するために不可欠な情報です。
## 技術スタック
- **フロントエンド**: Next.js 15 (App Router) / TypeScript 5 / Tailwind CSS 3
- **バックエンド**: FastAPI 0.110 / Python 3.12
- **DB**: PostgreSQL 16(主DB)/ Redis 7(キャッシュ・セッション)
- **インフラ**: AWS ECS / RDS / ElastiCache
- **テスト**: Vitest(フロント)/ pytest(バック)
## アーキテクチャの特徴
- フロントとバックは完全分離(APIで通信)
- 認証は JWT(15分有効)+ リフレッシュトークン
- ファイルアップロードは S3 に直接アップロード
よく使うコマンド
ビルド・テスト・起動・デプロイなど頻出コマンドを書きます。Claude が自分でコマンドを実行するときに参照します。
## コマンド
\`\`\`bash
# 開発
npm run dev # フロント開発サーバー(localhost:3000)
uvicorn main:app --reload # バック開発サーバー(localhost:8000)
# テスト
npm test # フロントテスト
pytest tests/ -v # バックテスト
npm run test:e2e # E2Eテスト(Playwright)
# DB
alembic upgrade head # マイグレーション実行
alembic revision --autogenerate -m "説明" # マイグレーション作成
\`\`\`
コーディング規約
命名規則・コードスタイル・コメントの書き方を明記します。これがないと Claude がプロジェクトのスタイルを無視した「よそのコード」を生成することがあります。
## コーディング規約
### 命名
- 変数・関数: キャメルケース(`getUserById`)
- クラス・コンポーネント: パスカルケース(`UserCard`)
- 定数: アッパースネーク(`MAX_RETRY_COUNT`)
- DB カラム: スネーク(`created_at`)
### TypeScript
- `any` 型は使用禁止。型がわからない場合は `unknown` を使う
- 型定義は `interface` より `type` を優先
- `null` より `undefined` を優先
### コメント
- コードの「なぜ」を書く(「何をしているか」は書かない)
- TODO コメントには必ず担当者名を入れる(`// TODO(yamada): ...`)
ディレクトリ構成・重要ファイル
どこに何があるかを説明します。Claude がファイルを探したり新規作成する際の道しるべになります。
## ディレクトリ構成
\`\`\`
src/
├── app/ # Next.js App Router のページ
├── components/ # 再利用可能なUIコンポーネント
├── features/ # 機能単位のモジュール(orders/items/users/...)
├── hooks/ # カスタム React Hooks
├── lib/ # ユーティリティ・外部サービスクライアント
└── types/ # TypeScript 型定義
\`\`\`
## 重要ファイル
- `src/lib/api.ts` - API クライアントの設定
- `src/lib/auth.ts` - 認証ロジック
- `prisma/schema.prisma` - DB スキーマ定義
- `.env.example` - 必要な環境変数の一覧
禁止事項・注意事項
やってはいけないことを明記します。「絶対にやってほしくないこと」はここに書くのが最も確実です。
## 禁止事項
- `console.log` をコミットしない(`logger.ts` を使う)
- `any` 型を使わない
- 直接 `main` ブランチにプッシュしない(必ずPR経由)
- 環境変数をコードにハードコーディングしない
- `npm install` で `--save-dev` を忘れない
## 注意事項
- DB マイグレーションは必ずレビューを通すこと
- 外部 API の呼び出しは `src/lib/` 以下に集約すること
- テストなしのコードはマージしないこと
環境・外部サービス
使用している外部サービス・環境変数の説明を書きます。ただし、実際の値は絶対に書かないでください。
## 環境変数
`.env.local` ファイルが必要(`.env.example` からコピー)。
| 変数名 | 説明 |
|--------|------|
| DATABASE_URL | PostgreSQL の接続文字列 |
| REDIS_URL | Redis の接続文字列 |
| NEXTAUTH_SECRET | NextAuth のシークレットキー |
| AWS_S3_BUCKET | ファイルアップロード先バケット名 |
## 外部サービス
- **Stripe**: 決済処理(テスト環境は `sk_test_...`)
- **SendGrid**: メール送信
- **Sentry**: エラートラッキング
5. 良い書き方・悪い書き方
具体性が命
## コーディング規約
- きれいなコードを書く
- 適切なコメントを付ける
- テストを書く
## コーディング規約
- 1関数は30行以内に収める
- 公開関数にはJSDocを必ず書く
- カバレッジ80%以上を維持する
禁止事項は断言する
## 注意
- できればanyを避ける
- なるべくテストを書いてほしい
- mainへの直接pushは
推奨しない
## 禁止事項
- `any`型を使用しない
- テストなしのコードは
コミットしない
- mainへの直接pushを禁止
長すぎると読まれなくなる
CLAUDE.md はコンテキストウィンドウを消費します。1,000〜3,000文字程度を目安に、「Claude に毎回説明している内容」だけを書くのがベストです。書けることを全部書こうとすると、肝心な情報が埋もれてしまいます。
6. コピーして使えるテンプレート
Webアプリ開発向けテンプレート
# [プロジェクト名]
[プロジェクトの一言説明]
## 技術スタック
- フロントエンド: [Next.js/React/Vue等] / TypeScript / [CSSフレームワーク]
- バックエンド: [Express/FastAPI/Rails等]
- DB: [PostgreSQL/MySQL/MongoDB等]
- テスト: [Vitest/Jest/pytest等]
## コマンド
\`\`\`bash
[開発サーバー起動コマンド] # [説明]
[テスト実行コマンド] # [説明]
[ビルドコマンド] # [説明]
\`\`\`
## コーディング規約
- 言語: [日本語/英語] でコメントを書く
- 命名: [キャメルケース/スネークケース等のルール]
- 型: [TypeScriptの型ルール]
- 関数: [関数の長さ・スタイルルール]
## ディレクトリ構成
\`\`\`
src/
├── [ディレクトリ名]/ # [説明]
├── [ディレクトリ名]/ # [説明]
└── [ディレクトリ名]/ # [説明]
\`\`\`
## 禁止事項
- [絶対にやってはいけないこと1]
- [絶対にやってはいけないこと2]
- [絶対にやってはいけないこと3]
## 注意事項
- [気をつけてほしいこと]
- [Claude に知っておいてほしいプロジェクト固有の事情]
ユーザー共通設定(~/CLAUDE.md)向けテンプレート
# 個人設定
## 言語・スタイル
- 返答は日本語で行う
- コードのコメントは日本語で書く
- 説明は箇条書きより文章を優先する
## コーディングの好み
- TypeScript を優先する
- 関数型スタイルを優先する(クラスよりも関数)
- エラーハンドリングは必ず実装する
## 作業スタイル
- 変更前に必ず現在のコードを確認する
- 大きな変更の前に計画を提示してから実行する
- テストコードも必ず一緒に書く
7. チームで運用するコツ
Git で管理してチーム全員に配布する
プロジェクトルートの CLAUDE.md は Git でコミットして管理します。チームメンバー全員が同じルールで Claude を使えるようになり、コードスタイルの統一が自然と実現します。
# 最初にCLAUDE.mdをコミット
git add CLAUDE.md
git commit -m "chore: add CLAUDE.md for Claude Code configuration"
CLAUDE.md をメンテナンスする
プロジェクトが進むと技術スタックや規約が変わります。CLAUDE.md も定期的に見直して最新の状態に保つことが重要です。「もう使っていない技術が書いてある」「コマンドが変わった」という状態になると Claude が誤った情報を参照します。
個人設定との使い分け
| 書く場所 | 書くべき内容の例 |
|---|---|
| プロジェクト CLAUDE.md | 技術スタック・規約・コマンド・禁止事項(チーム共通) |
| ~/CLAUDE.md | 返答言語・個人のコーディングの好み・作業スタイル |
| CLAUDE.local.md | ローカル環境のパス・個人の API キーの説明・一時的なメモ |
Claude Code の公式プラグイン claude-md-management を使うと、/revise-claude-md コマンドでプロジェクトを自動分析して CLAUDE.md の改善提案を出してくれます。ゼロから書くのが難しければ、まずこのプラグインに叩き台を作らせる方法もおすすめです。
まとめ
- CLAUDE.md = プロジェクトのルール・文脈を書いておくと Claude が自動で読み込む設定ファイル
- 配置場所は4種類。プロジェクトルートの CLAUDE.md を Git 管理するのが基本
- 書くべき7項目:概要・技術スタック・コマンド・規約・ディレクトリ・禁止事項・環境変数
- 禁止事項は「〜しない」と断言する。曖昧な表現は効果が薄い
- 長さは1,000〜3,000文字が目安。全部書こうとしない
- チームで Git 管理することで全員が同じルールで Claude を使える
~/CLAUDE.mdに個人の作業スタイルを書くと全プロジェクトに反映される
CLAUDE.md は一度書くだけで、以降のすべての作業がスムーズになります。まずは「毎回 Claude に説明していること」をリストアップして、それをそのまま CLAUDE.md に書き起こすところから始めてみてください。
Claude Code をもっと深く活用したい方へ
Hooks・Plugin・Agents・スキル登録の解説記事もあわせてどうぞ
