🌐 Read this article in English
Claude Codeの公式情報はAnthropic公式ドキュメントを参照。MCPの仕様はModel Context Protocol公式サイトで確認できる。
普通のAIチャットは、会話が終わったら全部忘れてしまう。しかし、Claude Codeのメモリシステムを使えば、会話をまたいで文脈を持ち越せる。つまり、「前にこう言ったよね」が通じるAIアシスタントを実現できる。
この記事では、Claude Code memoryの仕組みから具体的な設定方法、そして実際に運用しているメモリの内容まで詳しく解説する。
Claude Code memoryの仕組み

Claude Code memoryはファイルベースのシンプルな仕組みだ。特別なデータベースや外部サービスは不要で、Markdownファイルとして保存される。
.claude/projects/<project-dir>/memory/
├── MEMORY.md # インデックス(目次)
├── user_profile.md # ユーザー情報
├── feedback_*.md # フィードバック記録
├── project_*.md # プロジェクト情報
└── reference_*.md # 外部リソース参照
MEMORY.mdは全メモリファイルへのリンクを集約したインデックスだ。Claude Codeは毎回の会話開始時にこのインデックスを自動で読み込み、必要に応じて個別のメモリファイルを参照する。したがって、すべての会話でユーザーの好みやプロジェクト情報が反映される。
📊 メモリ読み込みフロー
4つのメモリタイプ
Claude Code memoryには4つのタイプがあり、それぞれ異なる用途に使われる。
1. user — ユーザー情報
AIに覚えておいてほしい自分自身の情報を保存する。たとえば、役割、スキルレベル、作業の好みなどが含まれる。
- 使う言語はPython優先
- レストランは口コミ重視で選ぶ
- 予約に必要な基本情報(名前、生年月日、住所)
このメモリがあることで、AIの提案内容が自分に最適化される。その結果、毎回同じ説明を繰り返す必要がなくなる。
2. feedback — 行動指針とフィードバック
「こうしろ」「こうするな」というAIへの明確なフィードバックを記録する。一度言えば二度と繰り返す必要がないのが最大のメリットだ。
自分が実際にClaude Code memoryに保存しているフィードバック例:
- 推測で答えるな、まず調べてから答えろ
- ブラウザ自動化はk-chrome MCPを最優先で使え
- LINE送信は必ず送信前に確認を取れ
- 一時ファイルは作業後に必ず削除しろ
- ポーリング中は「止めましょうか?」と聞くな、止めろと言われるまで続けろ
- トークン節約を意識しろ(サブエージェント委任、部分読みなど)
各フィードバックにはWhy(理由)とHow to apply(適用方法)を併記する。理由がわかっていれば、AIはエッジケースでも適切に判断できる。たとえば「ポーリングを止めるな」というルールの理由に「過去に自動停止したせいで重要な返信を見逃した」と書いておけば、AIはその重要性を理解して厳密に守ってくれる。
3. project — プロジェクト情報
進行中の作業や案件の文脈情報を保存する。コードやgit履歴からは読み取れない情報をここに記録する。
- 家計管理アプリの目標と現在の進捗状況
- 進行中の問い合わせ案件のステータスと経緯
- 予約済みの旅行の詳細情報
プロジェクトメモリは変化が早いため、定期的な更新が重要だ。古い情報が残っていると、AIが誤った前提で作業してしまう可能性がある。
4. reference — 外部リソースの参照先
外部システムやドキュメントの参照先を記録する。たとえば、特定の設定手順が記載されたドキュメントの場所や、サポート窓口の連絡先などだ。
メモリファイルの書き方
各メモリファイルはYAML frontmatter付きのMarkdown形式で記述する:
---
name: feedback_browser_automation
description: ブラウザ自動化MCPの使い分けルール
type: feedback
---
k-chrome MCPを最優先で使用する。
**Why:** 既存Chromeプロファイルのログイン状態を維持できるため
**How to apply:** ブラウザ操作が必要な場面では、まずk-chromeを試す
frontmatterのname・description・typeフィールドは、Claude Codeがメモリの関連性を判断する際に使用される。したがって、descriptionは具体的かつ簡潔に書くことが重要だ。
MEMORY.md(インデックス)の管理方法
MEMORY.mdはメモリファイルの一覧を管理するインデックスだ。各エントリは1行、150文字以内に収める:
# Memory Index
## ユーザー情報
- [user_profile.md](user_profile.md) — 予約用基本情報
## フィードバック
- [feedback_browser_automation.md](...) — MCP使い分けルール
- [feedback_line_messaging.md](...) — LINE送信は確認必須
- [feedback_performance.md](...) — トークン節約5原則
セマンティックにカテゴリ分けして、全体を200行以内に収めるのがベストプラクティスだ。これを超えるとClaude Codeの読み込み時にトークンを無駄に消費してしまう。
💡 メモリに保存すべきもの vs すべきでないもの
✅ 保存すべき:
- ユーザーの好み・作業スタイル(「Python優先」「口コミ重視」)
- 明示的なフィードバック(「推測するな」「ポーリング止めるな」)
- コードから読み取れないプロジェクト背景(「法務要件で認証方式変更中」)
- 外部リソースの場所(「バグはLinearのINGESTプロジェクトで管理」)
❌ 保存すべきでない:
- コードから導出できる情報(アーキテクチャ、ファイルパス)
- git履歴から分かること(誰が何を変更したか)
- 一時的な作業状態(今のデバッグ内容)
- CLAUDE.mdに既に書いてあること
メモリの棚卸し — 定期的なメンテナンス
Claude Code memoryは増える一方だと品質が劣化する。そのため、定期的な棚卸しが不可欠だ。具体的には、古くなったメモリ、重複する内容、コードやgit履歴から導出できる情報を削除する。
自分の場合、一度32ファイルあったメモリを17ファイルに整理したことがある。半分近くが不要だった。この経験から、月に一度はメモリの棚卸しを行うようにしている。
メモリの棚卸し基準は以下のとおり:
- 削除対象 — コードから導出可能な情報、完了済みプロジェクト、古い日付のメモリ
- 統合対象 — 同じテーマの複数メモリ、重複する内容
- 更新対象 — 状況が変化したプロジェクトメモリ
次回予告
次回はスケジュール実行編。cronのように定期実行されるタスクの設定方法と、実際に自動化している定期ジョブの詳細を紹介する。
