はじめに
Claude Codeを使っていて、こんな経験ありませんか?
- 「毎回同じルールを説明するのが面倒」
- 「プロジェクトのコーディング規約を守ってくれない」
- 「チームメンバーによってClaude Codeの出力がバラバラ」
これらの問題を解決するのが CLAUDE.md です。
CLAUDE.mdは、プロジェクトのルールや方針をClaude Codeに記憶させるファイル です。一度書けば、毎回のセッションで自動的に読み込まれます。
CLAUDE.mdとは
| 項目 | 内容 |
|---|---|
| 何か | Claude Code専用の設定・指示ファイル |
| 形式 | Markdownファイル |
| 役割 | プロジェクトのルール・方針をClaude Codeに伝える |
| 読み込み | セッション開始時に自動で読み込まれる |
人間でいう「プロジェクトのオンボーディング資料」のようなものです。新しく参加したメンバーに渡すドキュメントをClaude Code向けに書くイメージです。
CLAUDE.mdの種類と配置場所
CLAUDE.mdは複数の場所に配置でき、それぞれスコープが異なります。
| 配置場所 | スコープ | 用途 |
|---|---|---|
~/.claude/CLAUDE.md |
グローバル | 全プロジェクト共通のルール |
プロジェクトルート/CLAUDE.md |
プロジェクト | チーム共有のプロジェクトルール |
サブディレクトリ/CLAUDE.md |
ディレクトリ | 特定ディレクトリ固有のルール |
読み込み優先順位: グローバル → プロジェクトルート → サブディレクトリ(全て合算されます)
CLAUDE.mdの作成方法
方法1:スラッシュコマンド
/init
対話的にCLAUDE.mdを生成してくれます。Claude Codeがプロジェクトを分析し、適切な初期内容を提案します。
方法2:手動作成
プロジェクトルートに CLAUDE.md を作成します。
方法3:メモリコマンド
/memory
既存のCLAUDE.mdを編集できます。
CLAUDE.mdの書き方:基本テンプレート
# プロジェクト概要
このプロジェクトは〇〇のWebアプリケーションです。
## 技術スタック
- フロントエンド: React + TypeScript + Tailwind CSS
- バックエンド: Node.js + Express
- データベース: PostgreSQL + Prisma
- テスト: Jest + React Testing Library
- パッケージマネージャ: pnpm
## ディレクトリ構成
- src/components/ - Reactコンポーネント
- src/pages/ - ページコンポーネント
- src/api/ - APIクライアント
- src/hooks/ - カスタムフック
- src/utils/ - ユーティリティ関数
- server/ - バックエンドコード
- prisma/ - データベーススキーマ
## コーディング規約
- 関数コンポーネントを使用する(classコンポーネント不可)
- 状態管理にはReact hooksを使用する
- CSSはTailwind CSSのクラスを使用する(インラインCSS不可)
- 変数名・関数名はcamelCase
- コンポーネント名はPascalCase
- ファイル名はkebab-case
## コミットメッセージ
Conventional Commits形式を使用する。
- feat: 新機能
- fix: バグ修正
- refactor: リファクタリング
- test: テスト
- docs: ドキュメント
## テスト
- 新しい機能には必ずテストを書く
- テストフレームワーク: Jest
- コンポーネントテスト: React Testing Library
- テスト実行コマンド: pnpm test
## 重要な注意事項
- .envファイルは絶対にコミットしない
- APIキーはハードコードしない(環境変数を使用)
- 日本語でコメントを書く
実践:プロジェクト別のCLAUDE.md例
Reactプロジェクト
# React Webアプリ
## 技術スタック
- React 19 + TypeScript 5
- Vite
- Tailwind CSS v4
- React Router v7
- Zustand(状態管理)
- Vitest + Testing Library
## コンポーネント設計
- コンポーネントは1ファイル1コンポーネント
- propsにはinterface定義をつける
- デフォルトエクスポートは使わない(named exportのみ)
- カスタムフックは use プレフィックスをつける
## スタイリング
- Tailwind CSSのクラスを使用
- カスタムCSSが必要な場合は CSS Modules を使用
- レスポンシブは mobile-first で設計
## 開発コマンド
- 開発サーバー: pnpm dev
- ビルド: pnpm build
- テスト: pnpm test
- lint: pnpm lint
Pythonプロジェクト
# Python APIサーバー
## 技術スタック
- Python 3.12
- FastAPI
- SQLAlchemy + Alembic
- pytest
- uv(パッケージマネージャ)
## コーディング規約
- PEP 8に準拠
- 型ヒントを必ずつける
- docstringはGoogle Style
- f-stringを使用する(format()不可)
## ディレクトリ構成
- app/routers/ - APIエンドポイント
- app/models/ - SQLAlchemyモデル
- app/schemas/ - Pydanticスキーマ
- app/services/ - ビジネスロジック
- tests/ - テストコード
## コマンド
- サーバー起動: uv run uvicorn app.main:app --reload
- テスト: uv run pytest
- マイグレーション: uv run alembic upgrade head
フルスタックプロジェクト
# フルスタックWebアプリ
## アーキテクチャ
モノレポ構成(Turborepo)
- apps/web/ - Next.js フロントエンド
- apps/api/ - Express バックエンド
- packages/shared/ - 共有型定義・ユーティリティ
- packages/ui/ - 共通UIコンポーネント
## 重要ルール
- 共通の型定義は packages/shared/ に置く
- APIのレスポンス型は shared/types/ で定義する
- UIコンポーネントは packages/ui/ に作成し、apps/web/ からインポート
- 直接 apps/web/ にコンポーネントを作らない(共通化前提)
## 環境変数
- .env.local - ローカル開発用
- .env.staging - ステージング用
- .env.production - 本番用(設定しない。CI/CDから注入)
## デプロイ
- フロント: Vercel
- API: Railway
- DB: Supabase
CLAUDE.mdの活用テクニック
1. NGパターンを明示する
やってほしくないことも書いておくと効果的です。
## やらないこと(禁止事項)
- any型を使わない
- console.logを残さない(デバッグ後は必ず削除)
- インラインスタイルを使わない
- default exportを使わない
- var宣言を使わない
- 日本語の変数名を使わない
2. よく使うプロンプトを書いておく
## よくあるタスク
### 新しいAPIエンドポイントを追加する場合
1. server/routes/ にルートファイルを作成
2. server/services/ にビジネスロジックを作成
3. server/routes/index.ts にルートを登録
4. テストを追加
### 新しいページを追加する場合
1. src/pages/ にページコンポーネントを作成
2. src/router.tsx にルートを追加
3. 必要に応じてナビゲーションメニューを更新
3. 環境固有の情報
## ローカル開発
- DBのURL: postgresql://localhost:5432/myapp_dev
- APIのポート: 3001
- フロントのポート: 3000
- Redisはdocker-compose upで起動
4. チームの合意事項
## チームルール
- PRは必ず1人以上のレビューを通す
- mainブランチへの直接pushは禁止
- 新機能はfeature/xxxブランチで開発
- ホットフィックスはhotfix/xxxブランチで開発
グローバルCLAUDE.md
全プロジェクト共通のルールは ~/.claude/CLAUDE.md に書きます。
# グローバル設定
## 基本方針
- コードのコメントは日本語で書く
- コミットメッセージは日本語で書く
- エラーメッセージは日本語で書く
## コーディングスタイル
- インデントはスペース2つ
- セミコロンなし(JavaScript/TypeScript)
- シングルクォートを使用
## 私の環境
- macOS
- VS Code
- ターミナル: iTerm2
- シェル: zsh
- パッケージマネージャ: pnpm を優先
CLAUDE.mdの管理
gitで管理する
CLAUDE.md はリポジトリにコミットしてチームで共有しましょう。
git add CLAUDE.md
git commit -m "docs: CLAUDE.mdを追加"
定期的に更新する
プロジェクトの方針が変わったら、CLAUDE.mdも更新しましょう。
> CLAUDE.mdの内容を今のプロジェクトの状態に合わせて更新して
Claude Codeにプロジェクトを分析させて、CLAUDE.mdを自動更新してもらうこともできます。
サブディレクトリのCLAUDE.md
特定のディレクトリに固有のルールがある場合、サブディレクトリにも配置できます。
project/
├── CLAUDE.md # プロジェクト全体のルール
├── src/
│ └── components/
│ └── CLAUDE.md # コンポーネント固有のルール
└── server/
└── CLAUDE.md # サーバー固有のルール
# server/CLAUDE.md
## このディレクトリのルール
- エンドポイントには必ず入力バリデーションをつける
- レスポンスは必ず統一フォーマット { success, data, error } を使う
- SQLは直接書かない。Prismaを通す
/init で自動生成
CLAUDE.mdをゼロから書くのが大変なら、/init コマンドを使いましょう。
/init
Claude Codeが以下を自動で行います:
- プロジェクトのファイル構成を分析
- package.json / requirements.txt などから技術スタックを特定
- 既存のコーディングパターンを分析
- 適切なCLAUDE.mdを生成
生成後に自分で調整すれば、効率的にCLAUDE.mdを作成できます。
まとめ
| ポイント | 内容 |
|---|---|
| CLAUDE.mdとは | Claude Codeへのプロジェクト指示書 |
| 作成方法 |
/init or 手動作成 or /memory
|
| 配置場所 | グローバル / プロジェクトルート / サブディレクトリ |
| 書くべき内容 | 技術スタック、規約、ディレクトリ構成、禁止事項 |
| 管理方法 | gitにコミットしてチーム共有 |
CLAUDE.mdは一度書けばずっと効果が続く、コスパ最強の設定です。まだ作っていない方は、今すぐ /init を実行しましょう。
次回予告
次の記事は最終回!Claude Code活用のベストプラクティス をまとめます。
ここまで学んだ知識を活かして、AI駆動開発を最大限に活用しましょう!
シリーズ一覧
- Claude Codeとは?概要・できること
- Claude Codeのインストールと初期設定
- 基本的な使い方・コマンド一覧
- Claude Codeでコード生成してみよう
- Claude Codeでバグ修正・デバッグ
- Claude Codeでリファクタリング
- Claude Codeでテストコード作成
- Claude Codeでgit操作を効率化
- 👉 CLAUDE.mdを活用したプロジェクト設定(本記事)
- Claude Code活用のベストプラクティス
著者: @kotaro_ai_lab
AI駆動開発やテック情報を毎日発信しています。フォローお気軽にどうぞ!