📝

CLAUDE.md 書き方完全ガイド|テンプレート・サンプル付き【2026年】

に公開

CLAUDE.md はClaude Codeがセッション開始時に自動で読み込む「プロジェクトメモリファイル」です。一度書いてしまえば、毎セッションで同じ指示を繰り返す必要がなくなります。

CLAUDE.md が解決する3つの問題

  • 指示の繰り返し問題:コーディング規約やコマンドを毎セッション説明しなくて済む
  • 一貫性の欠如:チームメンバー全員が同じルールで Claude を動かせる
  • コンテキスト消費の無駄:説明に使うトークンを削減し、本質的な作業に集中できる

3層の配置構造

~/.claude/CLAUDE.md          ← グローバル設定(全プロジェクト共通)

project/
├── CLAUDE.md                ← プロジェクト設定(チームで共有・git管理)
├── CLAUDE.local.md          ← ローカル設定(個人用・gitignore対象)
├── frontend/
│   └── CLAUDE.md            ← フロントエンド固有設定
└── backend/
    └── CLAUDE.md            ← バックエンド固有設定

優先順位は「ローカル > プロジェクト > グローバル」の順です。

レベル 場所 書くべき内容 git管理
グローバル ~/.claude/CLAUDE.md 言語設定、出力スタイル、個人的な癖 なし
プロジェクト ./CLAUDE.md 技術スタック、コマンド、アーキテクチャ あり
ローカル ./CLAUDE.local.md 個人の環境変数、マシン固有の設定 なし

読み込みの確認方法

# セッション内で実行
/memory

現在アクティブなすべてのメモリファイルが一覧表示されます。

/init コマンドで初期ファイルを自動生成

cd /path/to/your/project
claude
/init

効果的な書き方5つのルール

ルール1:「削除したら Claude が間違えるか」で取捨選択する

書くべきでない内容:

  • package.json を見ればわかること(「Reactを使っています」など)
  • 言語の標準的な慣例(「関数にはコメントを書いてください」など)
  • 頻繁に変わる情報(バージョン番号など)

必ず書くべき内容:

  • Claude が推測できないプロジェクト固有のコマンド(npm run dev:mock など特殊なスクリプト)
  • デフォルトと異なるコードスタイルのルール(「any 型は絶対禁止」など意識的に選んだ制約)
  • 過去に Claude が繰り返し間違えた箇所

ルール2:500行以内に収める

500行を超えると Claude が指示の一部を無視し始めます。大規模プロジェクトでは .claude/rules/ ディレクトリに分割して管理します:

.claude/
└── rules/
    ├── coding-style.md
    ├── testing.md
    └── git-workflow.md

ルール3:WHY(理由)を必ず添える

## コーディング規約

- TypeScript strict モードを使用(`any` 型は禁止)
  - 理由:過去に implicit any 由来の本番バグが複数発生したため
- named export を使用(default export は禁止)
  - 理由:リファクタリング時のリネームを IDE が自動追跡できるようにするため

ルール4:フィードバックループで育てていく

同じ訂正を2回以上したらルールとして追加します。数週間ごとに不要になった指示を削除する「剪定」も重要です。

ルール5:禁止事項には代替手段を示す

## 注意事項

# NG
console.log でのデバッグは禁止

# OK
console.log でのデバッグは禁止。代わりに logger.debug() を使用すること

# NG
fetch を直接使わない

# OK
fetch を直接使わない。代わりに src/lib/api.ts の apiClient を使うこと

テンプレート集

React(TypeScript)プロジェクト用

# プロジェクト概要
Eコマースサイトのフロントエンド。Next.js 15 + TypeScript + App Router 構成。

## 技術スタック
- Next.js 15(App Router)
- TypeScript 5(strict モード)
- Tailwind CSS v4
- Tanstack Query
- Vitest + Testing Library

## よく使うコマンド
- `pnpm dev`: 開発サーバー起動(ポート3000)
- `pnpm test`: Vitest 実行
- `pnpm lint`: ESLint + TypeScript チェック

## コーディング規約
- `any` 型は禁止(理由:implicit any 由来の本番バグ防止)
- named export を使用(default export 禁止)
- CSS は Tailwind ユーティリティクラスのみ(インライン style 禁止)
- fetch を直接使わず、src/lib/apiClient.ts を必ず経由すること

Python(FastAPI)プロジェクト用

# プロジェクト概要
ユーザー管理 REST API。FastAPI + SQLAlchemy + PostgreSQL 構成。

## 技術スタック
- Python 3.12 / FastAPI / SQLAlchemy 2.0 / uv / Ruff

## よく使うコマンド
- `uv run fastapi dev`: 開発サーバー起動
- `uv run pytest`: テスト実行
- `uv run ruff check .`: リント実行
- `uv run alembic upgrade head`: マイグレーション適用

## コーディング規約
- パッケージ管理は uv のみ(pip / poetry は使わない)
- Python コードの実行は `uv run` 経由
- 型アノテーションは必須(mypy strict モード相当)
- 生 SQL は原則禁止。SQLAlchemy ORM を使用すること

グローバル設定(全プロジェクト共通)

# 個人設定(グローバル)

## 出力スタイル
- 日本語で回答すること
- コードの説明は日本語でコメントを入れること

## コミットメッセージ
- Conventional Commits 形式(feat: / fix: / docs: / refactor:)
- 1行目は50文字以内、日本語可

## 作業スタイル
- 大きな変更の前に必ず計画を提示し、承認を取ること
- テストを書かずに機能実装を完了としない

Before / After 比較

Before(CLAUDE.md なし)

// デフォルト export を使っている
export default function UserList() {
  // any 型を使っている
  const [users, setUsers] = useState<any[]>([])
  useEffect(() => {
    // fetch を直接使っている
    fetch('/api/users').then(res => res.json()).then(data => setUsers(data))
  }, [])
  return <div style={{ padding: '20px' }}>{/* インライン style */}</div>
}

After(CLAUDE.md あり)

import { useQuery } from '@tanstack/react-query'
import { apiClient } from '@/lib/apiClient'
import type { User } from '@/types/user'

// named export を使用(CLAUDE.md のルールに従う)
export function UserList() {
  // 型を明示(any 型を使わない)
  const { data: users = [], isLoading } = useQuery<User[]>({
    queryKey: ['users'],
    queryFn: () => apiClient.get('/users'), // apiClient 経由
  })
  return (
    <ul className="space-y-2"> {/* Tailwind を使用 */}
      {users.map(user => (
        <li key={user.id} className="p-4 border rounded">{user.name}</li>
      ))}
    </ul>
  )
}

プロジェクトのルールをすべて守ったコードが一発で生成されます。

さらに詳しく

この記事では配置構造・書き方のルール・テンプレート・Before/After比較を中心にまとめました。
グローバルとプロジェクトの使い分け・hooks 機能との連携など、より詳細な運用レビューは以下のブログ記事にまとめています。

CLAUDE.md 書き方完全ガイド|テンプレート・サンプル付き【2026年】

Discussion