Claude Code: メモリシステム
最終更新:2026-08-31
メモリシステムにより、Claude Code は毎回ゼロから始める必要がありません — あなたの好み、プロジェクトの規約、過去の決定を記憶します。
💡 ヒント: Claude Code のメモリには3つのレイヤーがあります:セッション(現在の会話)、プロジェクト(CLAUDE.md)、パーソナル(グローバルの好み)。セッション間のメモリは主に CLAUDE.md に依存します。
📋 前提条件: 第14章 - プラグインシステム
1. 学ぶ内容
- 3層メモリアーキテクチャ
- セッションメモリの仕組み
- プロジェクトメモリ(CLAUDE.md)のベストプラクティス
- パーソナルメモリの設定
- メモリ管理戦略
2. 3層メモリモデル
| レイヤー | 永続性 | 範囲 | 保存場所 |
|---|---|---|---|
| パーソナルメモリ | 永続的 | すべてのプロジェクト | ~/.claude/CLAUDE.md |
| プロジェクトメモリ | 永続的 | 現在のプロジェクト | project/CLAUDE.md |
| セッションメモリ | 一時的 | 現在のセッション | メモリ(永続化されない) |
メモリの優先度
TEXT
📖 参照専用
プロジェクトメモリ > パーソナルメモリ > セッションメモリ
プロジェクトの CLAUDE.md がグローバルと矛盾する場合、プロジェクトが優先。
▶ 例1:3層メモリの連携
TEXT
📖 参照専用
# グローバルメモリ(~/.claude/CLAUDE.md)
"I prefer TypeScript strict mode, functions under 20 lines"
# プロジェクトメモリ(project/CLAUDE.md)
"This project uses JavaScript (not TypeScript), functions up to 50 lines"
# 結果:Claude Code は JavaScript コードを生成し、関数は50行以内
# プロジェクトメモリがパーソナルメモリを上書き
3. セッションメモリ
(1) 会話履歴の管理
| 操作 | コマンド | 説明 |
|---|---|---|
| 履歴を確認 | /history |
現在のセッションの会話ログを確認 |
| 履歴を圧縮 | /compact |
会話を圧縮して Token を削減 |
| 履歴をクリア | /clear |
会話をクリアして新規開始 |
| セッションを再開 | claude --resume |
最後のセッションを再開 |
(2) セッション内メモリ機能
TEXT
📖 参照専用
# Claude Code はセッション内の以前の会話を記憶
> Create a UserService
[作成完了]
> Add password reset functionality to it
[Claude Code は UserService の場所を記憶し、直接修正]
> Add email verification too
[UserService のコンテキストを引き続き記憶]
(3) セッションメモリの制限
TEXT
📖 参照専用
# セッション終了後、会話履歴は保持されない
# セッション1:「関数型プログラミングスタイルを好みます」
# セッション2:非関数型のコードを生成する可能性 — 好みを記憶していない
# 解決策:好みを CLAUDE.md に書く
4. プロジェクトメモリ(CLAUDE.md)
(1) CLAUDE.md をメモリの担い手として
MARKDOWN
# CLAUDE.md
## Project Conventions (Persistent Memory)
- TypeScript strict モードを使用
- API レスポンス形式:{ code, data, message }
- エラーは AppError クラスを使用
- テストフレームワーク:Vitest
## Completed Work (Progress Memory)
- ✅ ユーザー認証モジュール(JWT)
- ✅ ロール権限システム(RBAC)
- 🔄 注文管理モジュール(進行中)
- ❌ 決済統合(未着手)
## Technical Decision Records (Decision Memory)
- 2026-08-15: インメモリではなく Redis キャッシュを選択(クラスタ対応が必要)
- 2026-08-20: TypeORM ではなく Prisma を採用(型安全性が優れている)
- 2026-08-25: 金額はセント整数を使用(浮動小数点エラーを回避)
▶ 例2:Claude Code に決定を記憶させる
TEXT
📖 参照専用
> Remember: Payment module uses Stripe SDK, not direct REST API calls
Claude Code:
→ CLAUDE.md を更新中...
→ 追加:"Payment integration uses Stripe SDK (not direct REST calls)"
# 後のセッションで:
> Implement payment refund functionality
Claude Code:
→ [CLAUDE.md から読み取り] Stripe SDK を使用
→ Stripe SDK を使用して payment.service.ts を作成 ✅
5. パーソナルメモリ
(1) グローバル設定
MARKDOWN
<!-- ~/.claude/CLAUDE.md -->
## Coding Preferences
- TypeScript strict モード
- const を優先し、let と var を避ける
- 関数は30行以内
- JSDoc コメントを追加
- ES Module を使用
## Testing Preferences
- describe/it スタイル(test() ではなく)
- テスト命名:should + 動詞 + 条件
- 外部依存をモックし、内部モジュールはモックしない
## Git Preferences
- コミット形式:conventional commits
- 各機能ポイントを別々にコミット
## Dislikes
- ❌ any 型を使用しない
- ❌ デバッグに console.log を使用しない
- ❌ TypeScript エラーを無視しない
6. メモリ管理戦略
(1) メモリ保守チェックリスト
| 頻度 | 操作 | 説明 |
|---|---|---|
| 毎回 | 重要な決定を CLAUDE.md に書く | 技術の選択、アーキテクチャの決定 |
| 週次 | 進捗メモリを更新 | 完了/進行中/未着手 |
| 月次 | 古いメモリを整理 | もはや適用されない規約を削除 |
| プロジェクト切り替え時 | プロジェクト CLAUDE.md を確認 | 規約が現実と一致しているか |
❓ よくある質問
Q Claude Code は私の発言を自動的に記憶しますか?
A 現在のセッション内のみです。セッション間では CLAUDE.md への書き込みが必要です。「この好みを記憶して」と言うと、Claude Code は CLAUDE.md の更新を試みます。
Q CLAUDE.md が長いとパフォーマンスに影響しますか?
A はい。CLAUDE.md は毎セッション読み込まれます。150行以内に保ち、無関係な内容は他のドキュメントに移してください。
Q 複数の開発者でプロジェクト CLAUDE.md を共有するには?
A プロジェクト CLAUDE.md を git にコミットしてチームと共有。個人の好みはグローバル CLAUDE.md に書き、コミットしない。
Q メモリは失われることがありますか?
A セッションメモリはセッション終了で消失します。CLAUDE.md はファイルシステムに永続化され、削除されない限り失われません。
Q パーソナルメモリとプロジェクトメモリの境界は?
A パーソナルメモリ:コーディングスタイルとツールの好み(プロジェクトに依存しない)。プロジェクトメモリ:技術スタックとビジネスルール(プロジェクト固有)。
📖 まとめ
- 3層メモリ:パーソナル(グローバルの好み)、プロジェクト(CLAUDE.md)、セッション(会話履歴)
- セッションメモリは一時的。プロジェクト/パーソナルメモリは永続的
- CLAUDE.md はプロジェクト規約と技術的決定の最も重要なメモリの担い手
- プロジェクトメモリ > パーソナルメモリ > セッションメモリ
- 定期的な保守:決定を書き、進捗を更新、古い内容を整理
📝 練習問題
- 基本 (⭐): グローバル CLAUDE.md に3つのコーディング好みを設定し、新しいプロジェクトで確認してください。
- 応用 (⭐⭐): プロジェクト CLAUDE.md に技術的決定記録を維持し、決定メモリの有無で比較してください。
- 高度 (⭐⭐⭐): 5人のチームメンバーの CLAUDE.md が競合せず同期されるメモリ管理戦略を設計してください。