メモリ設計(CLAUDE.md) — Claude Code 活用ガイド

1毎回おなじ説明、してませんか?

「このプロジェクトはこう動かすよ」「テストは npm test でね」――そんな説明を、新しい会話のたびに Claude に打ち直していませんか? それ、CLAUDE.md(クロード・ドット・エムディー) という1枚のファイルに書いておけば、一度書くだけで毎回ちゃんと読んでくれます。このページで「プロジェクトの取扱説明書」を作れるようになりましょう!

🧩
たとえ話:新人さんに渡す業務マニュアル
アルバイト先に新しい人が来るたび、口で全部説明するのは大変ですよね。だから多くのお店には「業務マニュアル」が置いてあります。CLAUDE.md は、まさに Claude に渡す業務マニュアル。「うちのルールはこれ」「困ったらここを見てね」を書いておけば、Claude は会話のたびにそれを読んでから働き始めてくれます。
📘
このページは 実践〜中級 向け。中級 公式ドキュメント Claude があなたのプロジェクトを記憶する方法(memory) と Claude Code のベストプラクティス に基づいています。

2CLAUDE.md とは?──毎回読む「約束ごと」ファイル

Claude Code の会話は、毎回まっさらな状態(=新しいコンテキストウィンドウ)から始まります。前回のことは基本おぼえていません。そこで CLAUDE.md は、すべての会話のはじめに必ず読み込まれる マークダウン(=かんたんな書式のテキスト)ファイルとして活躍します。

💡
公式いわく、CLAUDE.md は 「そうでなければもう一度説明することになる場所」。Claude が2回目に同じ間違いをしたとき、毎回おなじ修正を打ち込んでいるとき――それは CLAUDE.md に書くサインです。

🔧作るのも編集もコマンド一発

🪄

/init で自動生成

Claude がコードベースを分析して、ビルドコマンド・テスト方法・規約を見つけ、CLAUDE.md のたたき台を作ってくれます。すでにある場合は上書きせず「改善提案」をしてくれます。

📝

/memory で確認・編集

いま読み込まれている CLAUDE.md やルールファイルを一覧表示し、選んでエディタで開けます。自動メモリのオン/オフ切り替えもここから。

💡
「指示」であって「強制」ではない。公式は、CLAUDE.md を コンテキスト(=参考情報) として扱い、絶対のルールではないと明言しています。だから「具体的で・簡潔」なほど従ってもらえる確率が上がります。どうしても必ず実行させたい処理は hooks(=決まった場面で自動実行する仕組み)の出番です。

3メモリの置き場所(階層)を理解する

CLAUDE.md は 1か所だけじゃない のがポイント。「誰に効かせたいか」で置き場所を変えます。公式では下の表のように、広い範囲 → せまい範囲 の順で読み込まれます。後に読まれたものほど「近い指示」として扱われます。

スコープ(範囲)置き場所用途誰に効く?
管理ポリシーmacOS: /Library/Application Support/ClaudeCode/CLAUDE.md など会社の標準・セキュリティ・コンプライアンス組織内のすべての人
ユーザー指示~/.claude/CLAUDE.md全プロジェクト共通の個人的な好みあなただけ(全プロジェクト)
プロジェクト指示./CLAUDE.md または ./.claude/CLAUDE.mdチームで共有するプロジェクトの標準ソース管理を通じてチーム全員
ローカル指示./CLAUDE.local.md個人的なプロジェクト固有メモ(.gitignore へ)あなただけ(このプロジェクト)
✅
使い分けのコツ:「チーム全員に守ってほしいルール」→ プロジェクトの ./CLAUDE.md(git でコミットして共有)。「自分の口ぐせみたいな好み」→ ~/.claude/CLAUDE.md。「自分のサンドボックスURLなど共有したくないもの」→ ./CLAUDE.local.md(.gitignore に追加!)。
🗂️ メモリ階層:広い範囲から順に読まれる
flowchart TD
  A["管理ポリシー
組織全体に効く"] --> B["ユーザー指示
~/.claude/CLAUDE.md"] B --> C["プロジェクト指示
./CLAUDE.md"] C --> D["ローカル指示
./CLAUDE.local.md"] D --> E["全部つなげて
会話のはじめに読み込み"]
上ほど広い範囲、下ほど近い指示。すべて連結されてコンテキストに入ります(親ディレクトリのファイルも起動時にまとめて読み込まれます)。
📁
サブフォルダのCLAUDE.mdは「必要なとき」だけ:作業フォルダより下(子ディレクトリ)にある CLAUDE.md は起動時にはまだ読まれず、Claude がそのフォルダのファイルを読むときにオンデマンド(=必要に応じて)で読み込まれます。大規模プロジェクトでは .claude/rules/ にトピック別ファイルを置く方法もあります。

4良いCLAUDE.mdの書き方

合言葉は 「具体的・簡潔・手順とルール中心」。長い理由づけやチュートリアルは要りません。検証できるくらい具体的に書くのがコツです。

📏公式の「簡潔性テスト」

⚠️
公式が勧める合言葉。各行について、こう自問してください。
「これを削除したら、Claude は間違いを犯す?」
→ 答えが「いいえ」なら、その行は削除! ふくらみすぎた CLAUDE.md は、本当に大事なルールがノイズに埋もれて、Claude が無視するようになります。目安は 1ファイル200行以下。

⚖️含める / 含めない(公式の対比表)

✅

含めるべきこと

Claude が推測できないBashコマンド/デフォルトと違うコードスタイル/テスト指示と推奨テストランナー/ブランチ命名やPR規約/プロジェクト固有のアーキテクチャ決定/必須の環境変数/明白でない落とし穴。

❌

除外すべきこと

コードを読めば分かること/一般的な言語の常識/詳細なAPIドキュメント(リンクで十分)/頻繁に変わる情報/長い説明やチュートリアル/「きれいなコードを書く」みたいな自明なこと。

🔍「具体的に」とはこういうこと

❌ あいまい✅ 具体的
コードを適切にフォーマットする2スペースのインデントを使用する
変更をテストするコミット前に npm test を実行する
ファイルを整理しておくAPIハンドラーは src/api/handlers/ に置く

📄実際の CLAUDE.md の例

公式のサンプルをふくらませた、初心者向けの「ひな形」です。マークダウンの見出し(#)と箇条書きで、関連する指示をグループにまとめるのがコツ。

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 ブランチに直接プッシュしない
💡
HTMLコメントは人間用メモになる:<!-- メンテナー向けメモ --> のようなブロックコメントは、Claude のコンテキストに入る前に削除されます。トークン(=コンテキストの容量)を消費せず、人間だけに見せたいメモを残せます。

5「育てる」運用──気づいたら追記、太りすぎ注意

CLAUDE.md は一度書いて終わりではなく、使いながら育てる ものです。公式は「CLAUDE.md をコードのように扱う」と言っています。うまくいかないときにレビューし、定期的に削り、変更したら Claude の動きが本当に変わるか観察します。

  1. 同じ説明を2回したら追記「あ、これ前も言ったな」と思ったら、その場で CLAUDE.md に1行足す。Claude に「これをCLAUDE.mdに追加して」と頼んでもOK。
  2. 同じ間違いを2回したら追記Claude が2回目に同じミスをしたら、それを防ぐルールを書く。コードレビューで指摘された「知っておくべきだったこと」も同じ。
  3. 矛盾と古い指示を定期的に掃除2つのルールが矛盾していると、Claude はどちらかを勝手に選んでしまう。古い指示・矛盾する指示を見つけて削除する。
  4. 太りすぎたら分割 or 削除200行を超えたら危険信号。たまにしか要らない知識は skill(=必要なときだけ読み込む仕組み)へ、ファイル種別ごとのルールは .claude/rules/ のパス固有ルールへ移す。
🚨
なぜ太りすぎがダメ?(コンテキスト圧迫):CLAUDE.md は毎回会話のはじめに読み込まれ、会話と一緒にトークンを消費します。コンテキストウィンドウ(=Claudeの作業机)が満杯に近づくほど性能は落ち、以前の指示を「忘れ」やすくなります。だから 長い=強い ではなく、短く・要点だけ=従われやすい なのです。
🔄 CLAUDE.md を育てる運用ループ
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
追記 → ふくらみチェック → 観察、をぐるぐる回す。これで CLAUDE.md は「ちょうどいい厚さ」を保てます。

6動的に育てる小ワザ──@インポートと自動メモリ

CLAUDE.md は「書いた文字」だけでなく、他のファイルを呼び込んだり、Claude 自身がメモを書いたりもできます。これを知ると一気に運用がラクになります。

📎@ でファイルをインポートする

同じ内容をコピペで増やすのではなく、@パス 構文で別ファイルを取り込めます。READMEやpackage.jsonを参照させると、Claude は会話のはじめにそれも読み込みます。

CLAUDE.md
# プロジェクト概要は @README.md を、使えるnpmコマンドは @package.json を参照。

# 追加の指示
- git ワークフロー: @docs/git-instructions.md
- 個人的な上書き設定: @~/.claude/my-project-instructions.md
ℹ️
相対パスは「そのファイルの場所」を基準に解決されます(作業ディレクトリ基準ではない)。インポートは最大4ホップまで再帰可能。ただし インポートされたファイルも結局は起動時に読み込まれる ので、コンテキスト節約というより「整理のため」と考えましょう。

🧠自動メモリ:Claude が自分でメモを取る

CLAUDE.md は「あなたが書く指示」ですが、それとは別に 自動メモリ があります。これは Claude が作業中に自分のために書くメモ。ビルドコマンドやデバッグの気づき、あなたの好みなどを、リポジトリごとに ~/.claude/projects/<project>/memory/ へ保存します。

CLAUDE.md自動メモリ
誰が書く?あなたClaude
中身は?指示とルール学習とパターン
読み込み全文を毎回MEMORY.md の先頭200行 または 25KB まで
✅
「常に npm ではなく pnpm を使って」とお願いすると、Claude はそれを自動メモリに保存します。逆に CLAUDE.md に固定したい ときは「これをCLAUDE.mdに追加して」と明示するか、/memory で自分で編集します。自動メモリはデフォルトで有効、/memory の中でオン/オフを切り替えられます(v2.1.59以降)。
⚠️
CLAUDE.md やインポートで @~/... のように外部ファイルを初めて読み込むときは、確認ダイアログが出ます。一覧を見て「許可」しないとインポートは無効のままになるので、意図したファイルか確認してから許可しましょう。


8やってみよう!(演習)

読むだけより、手を動かすと一気に身につきます。下の問題、まず自分で考えてから答えを開いてみてください。

✏️問1:これは含める?除外する?

次のうち、CLAUDE.md に 含めるべき ものはどれでしょう。
(A) 「変数には分かりやすい名前をつける」 (B) 「ビルドは make build-prod(独自コマンド)」 (C) 「JavaScript の map() の使い方の解説」

答えを見る
正解は (B)。Claude が推測できない独自のBashコマンドは含める価値ありです。(A) は「自明なプラクティス」、(C) は「一般的な言語の常識」なので除外。簡潔性テスト「削除したら間違える?」を当てると、(B) だけ「はい」になります。

✏️問2:置き場所クイズ

「自分のサンドボックスURL」は人に見せたくない個人メモです。どこに書くのが正解?

答えを見る
正解は ./CLAUDE.local.md。プロジェクト固有で共有したくない個人メモ用です。忘れず .gitignore に追加しましょう(/init で個人オプションを選ぶと自動でやってくれます)。全プロジェクト共通の好みなら ~/.claude/CLAUDE.md が正解です。

✏️問3:従ってくれないとき最初にやることは?

CLAUDE.md に書いたルールを Claude が守ってくれません。まず何をする?

答えを見る
/memory を実行 して、そのファイルが本当に読み込まれているか確認します。リストに無ければ置き場所が間違っているサイン。読み込まれているのに従われないなら、指示をより具体的にし、矛盾する指示を探します。どうしても確実に実行させたいなら hooks へ。
🎉
おつかれさまでした! これであなたも「プロジェクトの取扱説明書」を書けるはず。まずは /init を打って、自分のプロジェクトのたたき台を作ってみましょう。完璧じゃなくて大丈夫、使いながら育てるのが CLAUDE.md の流儀です!

🔗もっと知りたい人へ(公式ドキュメント)