Claude Code の Auto Memory(MEMORY.md)を理解する — CLAUDE.md との使い分け

Claude Code には「メモリ」と呼ばれる仕組みがセッション間で情報を引き継ぐために用意されています。最近 SNS でも話題になっている Auto Memory(MEMORY.md) について、CLAUDE.md との違いや実践的な活用法を整理します。

きっかけ:SNS での反応

@L_go_mrk さんのポスト では、Claude Code の Auto Memory 機能について「かなり気が利いている」と評価されていました。ポイントは以下の通りです:

  • 「これ覚えておいて!」と指示するだけで、Claude が自動的に重要情報を記憶してくれる
  • CLAUDE.md(ルール特化)と MEMORY.md(学習・記憶特化)で情報が適切に分離されている
  • プロジェクトごとに独立した記憶で、他プロジェクトに影響しない
  • セッション間で記憶が維持される

この指摘はまさにその通りで、CLAUDE.md と MEMORY.md は目的が異なる二つの記憶層として設計されています。

二つの記憶層:CLAUDE.md vs MEMORY.md

CLAUDE.md — 「指示書」

CLAUDE.md はあなたが書いて Claude に従わせるルールです。

  • コーディング規約、ビルドコマンド、テスト手順
  • プロジェクトのアーキテクチャや設計方針
  • チーム全体で共有する約束事
# プロジェクトルール
- テストは pytest で実行: `pytest -xvs`
- コミットメッセージは Conventional Commits に従う
- API 変更時は必ず OpenAPI スキーマを更新する

CLAUDE.md はリポジトリにコミットしてチームで共有することが想定されています。

MEMORY.md — 「学習ノート」

MEMORY.md はClaude 自身が書く、作業を通じた学習メモです。

  • デバッグで見つけたパターンや解決策
  • プロジェクト固有のファイル構成や依存関係の理解
  • ユーザーの好み(コミュニケーションスタイル、ツール選択など)
# プロジェクトパターン
- Django のマイグレーションは `python manage.py migrate --run-syncdb` で実行
- テスト用 DB は SQLite を使用(本番は PostgreSQL)

# デバッグの知見
- ImportError が出たら仮想環境の activate を確認

MEMORY.md は ~/.claude/projects/<project>/memory/ に保存され、個人のローカル環境にのみ存在します。

Auto Memory の仕組み

保存場所

~/.claude/projects/<project>/memory/
├── MEMORY.md          # メインのインデックス(最初の200行がセッション開始時に読み込まれる)
├── debugging.md       # デバッグパターンの詳細メモ
├── api-conventions.md # API 設計の決定事項
└── ...                # Claude が必要に応じて作成するトピックファイル

<project> パスは Git リポジトリのルートから導出されます。同じリポジトリ内のサブディレクトリは一つの Auto Memory ディレクトリを共有します。

動作の流れ

  1. セッション開始時: MEMORY.md の最初の 200 行がシステムプロンプトに読み込まれる
  2. セッション中: Claude が作業しながら、有用な情報を発見すると MEMORY.md やトピックファイルに書き込む
  3. 次回セッション: 前回保存した記憶が自動的に読み込まれ、文脈が引き継がれる

重要なのは、200 行制限がある点です。MEMORY.md は簡潔なインデックスとして維持し、詳細な情報はトピック別のファイル(debugging.md など)に分離することが推奨されています。トピックファイルはセッション開始時には読み込まれず、Claude が必要に応じてオンデマンドで参照します。

メモリの階層構造:全体像

Claude Code のメモリは以下の階層で構成されています:

メモリ種別保存場所目的共有範囲
マネージドポリシー/Library/Application Support/ClaudeCode/CLAUDE.md組織全体のルール組織内全ユーザー
プロジェクトメモリ./CLAUDE.mdチーム共有の指示チームメンバー(Git 経由)
プロジェクトルール.claude/rules/*.mdトピック別の指示チームメンバー(Git 経由)
ユーザーメモリ~/.claude/CLAUDE.md個人の全プロジェクト共通設定自分のみ
ローカルプロジェクトメモリ./CLAUDE.local.md個人のプロジェクト固有設定自分のみ
Auto Memory~/.claude/projects/<project>/memory/Claude の自動学習メモ自分のみ(プロジェクト別)

ここで重要なのは、CLAUDE.md 系は「人間が Claude に与える指示」MEMORY.md は「Claude 自身が蓄積する知見」 という根本的な違いです。

実践的な活用のコツ

1. 明示的に記憶を指示する

「pnpm を使うことを覚えておいて」
「API テストにはローカルの Redis インスタンスが必要なことをメモリに保存して」

こうした指示で、Claude は MEMORY.md に情報を記録します。

2. CLAUDE.md とうまく棲み分ける

  • CLAUDE.md: 変わらないルール、チーム共有の約束事
  • MEMORY.md: 作業を通じて蓄積される知見、個人的な発見

CLAUDE.md に書くべきことを MEMORY.md に任せると、200 行制限に引っかかったり、チームに共有されなかったりします。逆に、デバッグの試行錯誤を CLAUDE.md に書くと、ルールファイルがノイズだらけになります。

3. 定期的に /memory で整理する

/memory コマンドでエディタが開き、メモリファイルを直接編集できます。定期的に見直して、古くなった情報を削除したり、トピックファイルに分離したりしましょう。

4. 設定の管理

1
2
3
4
5
// ~/.claude/settings.json で無効化
{ "autoMemoryEnabled": false }

// 環境変数で強制制御(CI 環境向け)
// CLAUDE_CODE_DISABLE_AUTO_MEMORY=1

プロジェクト単位での無効化も .claude/settings.json で可能です。

まとめ

Claude Code の Auto Memory(MEMORY.md)は、セッションをまたいで文脈を引き継ぐための重要な機能です。@L_go_mrk さんが指摘するように、CLAUDE.md とは異なる役割を持ち、「Claude 自身が学んだことを記録するノート」として機能します。

  • CLAUDE.md = あなたが書くルールブック(チーム共有可能)
  • MEMORY.md = Claude が書く学習ノート(個人・プロジェクト別)

この二つを適切に使い分けることで、Claude Code との協業がよりスムーズになります。「覚えておいて」と一言伝えるだけで次回のセッションに知見が引き継がれる — これが Auto Memory の便利さです。

参考