Claude Code: メモリシステム

最終更新:2026-08-31

メモリシステムにより、Claude Code は毎回ゼロから始める必要がありません — あなたの好み、プロジェクトの規約、過去の決定を記憶します。

💡 ヒント: Claude Code のメモリには3つのレイヤーがあります:セッション(現在の会話)、プロジェクト(CLAUDE.md)、パーソナル(グローバルの好み)。セッション間のメモリは主に CLAUDE.md に依存します。

📋 前提条件: 第14章 - プラグインシステム

1. 学ぶ内容


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 パーソナルメモリ:コーディングスタイルとツールの好み(プロジェクトに依存しない)。プロジェクトメモリ:技術スタックとビジネスルール(プロジェクト固有)。

📖 まとめ


📝 練習問題

  1. 基本 (⭐): グローバル CLAUDE.md に3つのコーディング好みを設定し、新しいプロジェクトで確認してください。
  2. 応用 (⭐⭐): プロジェクト CLAUDE.md に技術的決定記録を維持し、決定メモリの有無で比較してください。
  3. 高度 (⭐⭐⭐): 5人のチームメンバーの CLAUDE.md が競合せず同期されるメモリ管理戦略を設計してください。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%