CLAUDE.md で Claude Code を賢く使う方法
毎回同じ説明をしなくても、ずっと高品質なコードを生成してくれる設定術。
- Claude Codeに「このプロジェクトはTypeScript使ってるよ」と毎回伝えている
- インデントや命名規則を毎回プロンプトに書くのが手間
- セッションをまたぐと文脈がリセットされてしまう
- もっと自分のプロジェクトに合ったコードを出してほしい
これらはすべて CLAUDE.md を設定するだけで解決できます。この記事では初心者の方でも3〜5分で導入できるよう、具体例を交えてわかりやすく解説します。
Claude Codeは、会話のたびにフレッシュなコンテキストウィンドウで起動します。つまり、昨日教えたこと・先週決めたルール・プロジェクトの構成──これらをセッションをまたいで覚えてはくれません。
そこで登場するのが CLAUDE.md です。
Anthropicの公式ドキュメントによれば、Claude Codeにはセッションをまたぐ2つのメモリ機構があります。
| 種類 | 誰が書くか | 何が保存されるか | 対象 |
|---|---|---|---|
| CLAUDE.md | あなた(人間) | プロジェクトルール・コーディング規約・ビルドコマンドなど | この記事のメインテーマ |
| Auto memory | Claude自身 | あなたの修正・好み・デバッグの知見などを自動学習 | v2.1.59以降で利用可 |
CLAUDE.mdは置く場所によって適用範囲が変わります。3種類を使い分けることで、各ファイルを短くシンプルに保てます。
| 種類 | ファイルパス | 適用範囲 | 書くべき内容 |
|---|---|---|---|
| グローバル | ~/.claude/CLAUDE.md |
すべてのプロジェクト | コミット形式の好み・エディタ設定・個人のコーディングスタイル |
| プロジェクト | /project-root/CLAUDE.md |
そのプロジェクト全体(チーム共有) | 技術スタック・ビルドコマンド・コーディング規約・アーキテクチャ概要 |
| ローカル(個人) | /project-root/CLAUDE.local.md |
自分だけ(.gitignore推奨) | 個人的なワークフローの癖・ローカル環境固有の設定 |
claude /initから始める3ステップ-
プロジェクトルートでターミナルでプロジェクトのルートディレクトリに移動し、コマンドを実行します。Claude Codeがプロジェクトを自動分析して、基本的なCLAUDE.mdの雛形を生成してくれます。
claude /initを実行する$ cd my-ec-site
$ claude /init
✓ Analyzing project structure…
✓ Detecting tech stack: Node.js, TypeScript, PostgreSQL
✓ Created CLAUDE.md in project root
→ Review and edit the file to fit your project -
生成されたCLAUDE.mdを開いて確認・編集する自動生成された内容を確認し、プロジェクトに合わせて追記・修正します。次のセクションの「基本フォーマット」を参考に内容を充実させましょう。VS CodeやZedなどのエディタで普通のMarkdownファイルとして編集できます。
-
claude コマンドで動作を確認する次回以降のセッションで、Claudeが設定内容を正しく参照しているか確認します。「このプロジェクトはどんな技術スタック?」と聞いてみると、CLAUDE.mdの内容を踏まえた回答が返ってくるはずです。$ claude
✓ Loaded CLAUDE.md (project root)
✓ Loaded ~/.claude/CLAUDE.md (global)
Claude Code ready — project context loaded
CLAUDE.md という名前のMarkdownファイルを新規作成するだけでOKです。ファイルが存在すればClaudeが自動で読み込みます。
公式ドキュメントや実際の利用事例を踏まえると、効果的なCLAUDE.mdは5つのセクションで構成されます。「書けば書くほど良い」ではなく、具体的で簡潔であることが重要です。
## 1. ビルド・実行コマンド(最重要!)
# Claudeがコマンドを誤って実行するのを防ぐ。最優先で書く。
– インストール: npm install
– 開発サーバー起動: npm run dev
– テスト実行: npm run test
– ビルド: npm run build
– Lint: npm run lint
## 2. プロジェクト概要
# 何を作っているか・誰が使うか・現在の状態
– 概要: ECサイト向けREST API
– 技術スタック: Node.js 20, TypeScript, PostgreSQL, Docker
– チーム規模: 3名
## 3. コーディング規約
# 「常にXをすること」というルール
– インデント: スペース2つ
– 命名:ファイルは kebab-case、クラスは PascalCase、関数は camelCase
– エラー処理: try-catchを使い、意味のあるエラーメッセージを含める
– コメント: 「何をするか」ではなく「なぜそうするか」を書く
## 4. アーキテクチャ概要
# ディレクトリ構成・主要モジュールの役割
src/
├── api/ # エンドポイント定義
├── services/ # ビジネスロジック
├── models/ # DBスキーマ
└── utils/ # 共通ユーティリティ
## 5. 常に守ること / 絶対にしてはいけないこと
– 常に: Zodを使ってリクエストのバリデーションを行う
– 常に: 新機能にはJestのユニットテストを追加する
– 禁止: envファイルの値をハードコーディングしない
– 禁止: anyをTypeScriptの型として使わない
より実践的な例として、ECサイトのバックエンドAPIプロジェクトの場合を見てみましょう。
## ビルド・開発コマンド
npm install # 依存関係のインストール
npm run dev # 開発サーバー起動(port:3000)
npm run test # Jest テスト実行
npm run test:watch # テストのウォッチモード
npm run build # TypeScriptコンパイル
npm run lint # ESLintチェック
## プロジェクト概要
– 目的:アパレルECサイト向けのREST API
– 利用者:管理者(商品・在庫管理)とエンドユーザー(購入・決済)
– 技術スタック:Node.js 20, TypeScript 5, Express, PostgreSQL 15, Redis, Docker
– 認証:JWT(accessToken 15分, refreshToken 7日)
## コーディング規約
### 命名規則
– ファイル名:kebab-case(例: user-service.ts)
– クラス名:PascalCase(例: ProductService)
– 関数・変数:camelCase(例: getUserById)
– 定数:UPPER_SNAKE_CASE(例: MAX_RETRY_COUNT)
– DBテーブル:snake_case(例: order_items)
### APIレスポンス形式(必ず統一すること)
// 成功時
{ “success”: true, “data”: { … }, “timestamp”: “ISO8601” }
// エラー時
{ “success”: false, “error”: { “code”: “ERROR_CODE”, “message”: “…” } }
### 必須ルール
– 常に:Zodでリクエストのバリデーションを実施する
– 常に:エンドポイントにはJestのテストを追加する(カバレッジ80%以上)
– 常に:非同期処理はasync/awaitを使い、try-catchを入れる
– 禁止:TypeScript の any 型の使用
– 禁止:APIキーや認証情報のハードコーディング(.envから取得)
## アーキテクチャ
src/
├── api/routes/ # ルーティング(エンドポイント定義のみ)
├── services/ # ビジネスロジック(ここに処理を書く)
├── models/ # Prismaスキーマ・型定義
├── middleware/ # 認証・バリデーション
└── utils/ # 共通ユーティリティ
## Gitワークフロー
– ブランチ:feature/xxx または fix/xxx
– コミット:Conventional Commits形式(例: feat: add cart endpoint)
– マージ:PR必須・CI通過・1名以上のレビュー承認が必要
実際にCLAUDE.mdの有無でClaudeの回答がどう変わるか、具体的なやり取りで比較してみましょう。
var express = require('express') で作りました。バリデーションは後でつけてください。テストは省略しています。→ JavaScriptで生成(プロジェクトはTypeScript)
→ Zodバリデーションなし
→ テストなし
→ レスポンス形式が独自(統一形式と違う)
src/api/routes/user.ts に作成し、ビジネスロジックは src/services/user-service.ts に分離しました。レスポンスは統一形式に準拠、Jestテストも追加しています。→ TypeScriptで正しく生成
→ Zodバリデーション自動追加
→ Jestテストセット付き
→ 統一レスポンス形式で出力
→ 適切なディレクトリに配置
CLAUDE.mdは完成形を一度に書こうとしないのがポイントです。最初は短くていい──プロジェクトと一緒に少しずつ育てていくものです。
claude /init で自動生成 → ビルドコマンドとプロジェクト概要だけ確認・修正する。完璧でなくていい。
- 「毎回Claudeに言っていること」が追記のタイミング──繰り返しが書き足すサイン
- 書くのは「Claudeの動作を変えること」だけ──変化しない情報は書かない
- 長い手順書はCLAUDE.mdではなく別ファイルに書き、
@docs/setup.mdでインポートする - 「常にXすること」「絶対にYしないこと」の形式で書くと指示が明確になる
- Auto memoryと組み合わせると、ClaudeがデバッグのコツなどをBuildコマンドなど自動で学習してくれる
claude /initが使えない場合はどうすればいいですか?CLAUDE.md という名前のファイルを作成するだけでOKです。中身が空でも認識されます。この記事の「基本フォーマット」セクションを参考に、ビルドコマンドだけ書いた最小構成から始めましょう。src/api/CLAUDE.md に「このディレクトリ内のAPIはすべてZodで検証すること」といったAPIモジュール固有のルールを書けます。Claude Codeはディレクトリを遡りながら複数のCLAUDE.mdを読み込み、合算して使います(より具体的な設定が優先されます)。~/.claude/CLAUDE.md には、どのプロジェクトでも共通する個人的な好みを書きます。たとえば「コメントは英語ではなく日本語で書いてほしい」「複雑な概念を説明するときは図や例を使ってほしい」「コードの前に必ず要件を確認してほしい」などです。CLAUDE.mdは、たった数行書くだけでClaude Codeの回答品質を劇的に向上させることができる、最もコストパフォーマンスの高い設定です。
大切なのは「完璧なものを一度に作ろうとしない」こと。最初はビルドコマンドとプロジェクト概要だけでいい。「また同じことClaudeに言った」と気づいたときに少しずつ追記していく──そのサイクルを続けることで、あなたのプロジェクトを深く理解するAIパートナーが育っていきます。
📌 この記事のまとめ
- CLAUDE.mdはClaudeへの「事前説明書」。セッション開始時に自動で読み込まれる
- 置き場所は3種類:グローバル(~/.claude/)・プロジェクト(ルート)・ローカル(個人)
claude /initで自動生成される雛形をベースに始めると楽- 最優先で書くべきはビルド・テスト・Lintのコマンド
- 書き方のコツは「常にXすること」「絶対にYしないこと」の明確な形式
- 「繰り返しClaudeに言っていること」を気づいたたびに追記する運用が鉄板
- 長くなりすぎたら整理・slim化する。50行以内が目安
- 最初は短くてOK。プロジェクトと一緒に育てるものと考える
掲載情報:2026年5月時点 / Claude Code v2.1.59以降でAuto memoryが利用可能

