1毎回おなじ説明、してませんか?
「このプロジェクトはこう動かすよ」「テストは npm test でね」――そんな説明を、新しい会話のたびに Claude に打ち直していませんか? それ、CLAUDE.md(クロード・ドット・エムディー) という1枚のファイルに書いておけば、一度書くだけで毎回ちゃんと読んでくれます。このページで「プロジェクトの取扱説明書」を作れるようになりましょう!
アルバイト先に新しい人が来るたび、口で全部説明するのは大変ですよね。だから多くのお店には「業務マニュアル」が置いてあります。CLAUDE.md は、まさに Claude に渡す業務マニュアル。「うちのルールはこれ」「困ったらここを見てね」を書いておけば、Claude は会話のたびにそれを読んでから働き始めてくれます。
2CLAUDE.md とは?──毎回読む「約束ごと」ファイル
Claude Code の会話は、毎回まっさらな状態(=新しいコンテキストウィンドウ)から始まります。前回のことは基本おぼえていません。そこで CLAUDE.md は、すべての会話のはじめに必ず読み込まれる マークダウン(=かんたんな書式のテキスト)ファイルとして活躍します。
🔧作るのも編集もコマンド一発
/init で自動生成
Claude がコードベースを分析して、ビルドコマンド・テスト方法・規約を見つけ、CLAUDE.md のたたき台を作ってくれます。すでにある場合は上書きせず「改善提案」をしてくれます。
/memory で確認・編集
いま読み込まれている CLAUDE.md やルールファイルを一覧表示し、選んでエディタで開けます。自動メモリのオン/オフ切り替えもここから。
3メモリの置き場所(階層)を理解する
CLAUDE.md は 1か所だけじゃない のがポイント。「誰に効かせたいか」で置き場所を変えます。公式では下の表のように、広い範囲 → せまい範囲 の順で読み込まれます。後に読まれたものほど「近い指示」として扱われます。
| スコープ(範囲) | 置き場所 | 用途 | 誰に効く? |
|---|---|---|---|
| 管理ポリシー | macOS: /Library/Application Support/ClaudeCode/CLAUDE.md など | 会社の標準・セキュリティ・コンプライアンス | 組織内のすべての人 |
| ユーザー指示 | ~/.claude/CLAUDE.md | 全プロジェクト共通の個人的な好み | あなただけ(全プロジェクト) |
| プロジェクト指示 | ./CLAUDE.md または ./.claude/CLAUDE.md | チームで共有するプロジェクトの標準 | ソース管理を通じてチーム全員 |
| ローカル指示 | ./CLAUDE.local.md | 個人的なプロジェクト固有メモ(.gitignore へ) | あなただけ(このプロジェクト) |
.gitignore に追加!)。flowchart TD A["管理ポリシー
組織全体に効く"] --> B["ユーザー指示
~/.claude/CLAUDE.md"] B --> C["プロジェクト指示
./CLAUDE.md"] C --> D["ローカル指示
./CLAUDE.local.md"] D --> E["全部つなげて
会話のはじめに読み込み"]
4良いCLAUDE.mdの書き方
合言葉は 「具体的・簡潔・手順とルール中心」。長い理由づけやチュートリアルは要りません。検証できるくらい具体的に書くのがコツです。
📏公式の「簡潔性テスト」
「これを削除したら、Claude は間違いを犯す?」
→ 答えが「いいえ」なら、その行は削除! ふくらみすぎた CLAUDE.md は、本当に大事なルールがノイズに埋もれて、Claude が無視するようになります。目安は 1ファイル200行以下。
⚖️含める / 含めない(公式の対比表)
含めるべきこと
Claude が推測できないBashコマンド/デフォルトと違うコードスタイル/テスト指示と推奨テストランナー/ブランチ命名やPR規約/プロジェクト固有のアーキテクチャ決定/必須の環境変数/明白でない落とし穴。
除外すべきこと
コードを読めば分かること/一般的な言語の常識/詳細なAPIドキュメント(リンクで十分)/頻繁に変わる情報/長い説明やチュートリアル/「きれいなコードを書く」みたいな自明なこと。
🔍「具体的に」とはこういうこと
| ❌ あいまい | ✅ 具体的 |
|---|---|
| コードを適切にフォーマットする | 2スペースのインデントを使用する |
| 変更をテストする | コミット前に npm test を実行する |
| ファイルを整理しておく | APIハンドラーは src/api/handlers/ に置く |
📄実際の CLAUDE.md の例
公式のサンプルをふくらませた、初心者向けの「ひな形」です。マークダウンの見出し(#)と箇条書きで、関連する指示をグループにまとめるのがコツ。
# プロジェクト概要 # 学園祭のクラスTシャツ注文を管理するWebアプリ。 # 詳しくは @README.md を参照。 # コマンド - 開発サーバー起動: npm run dev - テスト実行: npm test - ビルド: npm run build # コードスタイル - ES modules(import/export)を使う。CommonJS(require)は使わない - インデントは2スペース - import はできるだけ分割代入する(例: import { foo } from 'bar') # ワークフロー - 一連の変更を終えたら必ず型チェックする - パフォーマンスのため、全テストより単一テストを優先して実行する # 注意点 - API ハンドラーは src/api/handlers/ に置く - main ブランチに直接プッシュしない
<!-- メンテナー向けメモ --> のようなブロックコメントは、Claude のコンテキストに入る前に削除されます。トークン(=コンテキストの容量)を消費せず、人間だけに見せたいメモを残せます。5「育てる」運用──気づいたら追記、太りすぎ注意
CLAUDE.md は一度書いて終わりではなく、使いながら育てる ものです。公式は「CLAUDE.md をコードのように扱う」と言っています。うまくいかないときにレビューし、定期的に削り、変更したら Claude の動きが本当に変わるか観察します。
- 同じ説明を2回したら追記「あ、これ前も言ったな」と思ったら、その場で CLAUDE.md に1行足す。Claude に「これをCLAUDE.mdに追加して」と頼んでもOK。
- 同じ間違いを2回したら追記Claude が2回目に同じミスをしたら、それを防ぐルールを書く。コードレビューで指摘された「知っておくべきだったこと」も同じ。
- 矛盾と古い指示を定期的に掃除2つのルールが矛盾していると、Claude はどちらかを勝手に選んでしまう。古い指示・矛盾する指示を見つけて削除する。
- 太りすぎたら分割 or 削除200行を超えたら危険信号。たまにしか要らない知識は skill(=必要なときだけ読み込む仕組み)へ、ファイル種別ごとのルールは .claude/rules/ のパス固有ルールへ移す。
flowchart TD
A["Claude と作業する"] --> B{"同じ説明や
同じミスを
繰り返した?"}
B -->|"はい"| C["CLAUDE.md に
1行追記する"]
B -->|"いいえ"| A
C --> D{"200行を
超えた?"}
D -->|"はい"| E["削る・skillや
rulesへ移す"]
D -->|"いいえ"| F["動きが変わったか
観察する"]
E --> F
F --> A
6動的に育てる小ワザ──@インポートと自動メモリ
CLAUDE.md は「書いた文字」だけでなく、他のファイルを呼び込んだり、Claude 自身がメモを書いたりもできます。これを知ると一気に運用がラクになります。
📎@ でファイルをインポートする
同じ内容をコピペで増やすのではなく、@パス 構文で別ファイルを取り込めます。READMEやpackage.jsonを参照させると、Claude は会話のはじめにそれも読み込みます。
# プロジェクト概要は @README.md を、使えるnpmコマンドは @package.json を参照。 # 追加の指示 - git ワークフロー: @docs/git-instructions.md - 個人的な上書き設定: @~/.claude/my-project-instructions.md
🧠自動メモリ:Claude が自分でメモを取る
CLAUDE.md は「あなたが書く指示」ですが、それとは別に 自動メモリ があります。これは Claude が作業中に自分のために書くメモ。ビルドコマンドやデバッグの気づき、あなたの好みなどを、リポジトリごとに ~/.claude/projects/<project>/memory/ へ保存します。
| CLAUDE.md | 自動メモリ | |
|---|---|---|
| 誰が書く? | あなた | Claude |
| 中身は? | 指示とルール | 学習とパターン |
| 読み込み | 全文を毎回 | MEMORY.md の先頭200行 または 25KB まで |
/memory で自分で編集します。自動メモリはデフォルトで有効、/memory の中でオン/オフを切り替えられます(v2.1.59以降)。@~/... のように外部ファイルを初めて読み込むときは、確認ダイアログが出ます。一覧を見て「許可」しないとインポートは無効のままになるので、意図したファイルか確認してから許可しましょう。8やってみよう!(演習)
読むだけより、手を動かすと一気に身につきます。下の問題、まず自分で考えてから答えを開いてみてください。
✏️問1:これは含める?除外する?
次のうち、CLAUDE.md に 含めるべき ものはどれでしょう。
(A) 「変数には分かりやすい名前をつける」 (B) 「ビルドは make build-prod(独自コマンド)」 (C) 「JavaScript の map() の使い方の解説」
答えを見る
✏️問2:置き場所クイズ
「自分のサンドボックスURL」は人に見せたくない個人メモです。どこに書くのが正解?
答えを見る
.gitignore に追加しましょう(/init で個人オプションを選ぶと自動でやってくれます)。全プロジェクト共通の好みなら ~/.claude/CLAUDE.md が正解です。✏️問3:従ってくれないとき最初にやることは?
CLAUDE.md に書いたルールを Claude が守ってくれません。まず何をする?
答えを見る
/memory を実行 して、そのファイルが本当に読み込まれているか確認します。リストに無ければ置き場所が間違っているサイン。読み込まれているのに従われないなら、指示をより具体的にし、矛盾する指示を探します。どうしても確実に実行させたいなら hooks へ。/init を打って、自分のプロジェクトのたたき台を作ってみましょう。完璧じゃなくて大丈夫、使いながら育てるのが CLAUDE.md の流儀です!🔗もっと知りたい人へ(公式ドキュメント)
- Claude があなたのプロジェクトを記憶する方法(memory) ── CLAUDE.md・自動メモリ・置き場所の決定版
- Claude Code のベストプラクティス ── 効果的なCLAUDE.mdの書き方・簡潔性テスト・コンテキスト管理