Claude Codeの「記憶」には限りがある。コンテキストウィンドウという制約を理解し、戦略的に管理することで、大規模プロジェクトでも効果的に作業できる。
コンテキストウィンドウとは
Claude Codeが一度に「覚えていられる」情報量には上限がある。これがコンテキストウィンドウだ。
会話が長くなるほど、または大きなファイルを多数読み込むほど、コンテキストウィンドウは消費される。上限に近づくと、Claude Codeは自動的に古い情報を圧縮(auto-compaction)する。
問題は、この自動圧縮のタイミングが必ずしも最適ではないことだ。重要な情報が圧縮で失われ、同じ質問に対する回答が変わったり、以前の合意が忘れられたりする可能性がある。
/compact — 戦略的な圧縮
> /compact
自動圧縮を待つのではなく、適切なタイミングで手動圧縮する。
/compact を使うべきタイミング
- タスクの区切り目: 一つの機能が完成したとき
- 方針転換の前: 別のアプローチに切り替えるとき
- 応答の質が下がったとき: 同じことを繰り返す、文脈を忘れる兆候
- 大きなファイルを読んだ後: 必要な情報を抽出したらコンテキストを整理
/compact は重要な情報(決定事項、現在の作業状態)を保持しつつ、不要な詳細を圧縮する。
メモリファイル — セッションを超えた記憶
Claude Codeのメモリファイルは ~/.claude/projects/*/memory/ に保存される。
~/.claude/projects/-Users-kenokamoto-Desktop-project/memory/
├── MEMORY.md # メインのメモリファイル(常に読み込まれる)
├── debugging.md # デバッグに関するメモ
└── architecture.md # アーキテクチャの決定事項
MEMORY.md
セッション開始時に自動的に読み込まれる。200行まで。
書くべき内容:
- プロジェクトの重要な決定事項
- よく使うパターンや規約
- ユーザーの好みやワークフロー
- 以前のセッションで解決した問題と解決策
書くべきでない内容:
- 一時的な作業状態
- 未検証の推測
- CLAUDE.mdと重複する情報
補助メモリファイル
MEMORY.mdが大きくなりすぎる場合は、トピック別のファイルに分割する。これらはMEMORY.mdからリンクし、必要なときに参照させる。
大規模コードベースでの戦略
戦略1: 必要なファイルだけを読む
# NG: すべてを読み込む
> プロジェクトの全ファイルを読んで
# OK: 必要なファイルだけを指定
> src/lib/book.ts と src/components/book/BookHero.tsx を読んで
戦略2: Explore エージェントに委任する
広範な調査が必要な場合は、Exploreエージェントに委任する。サブエージェントのコンテキストはメインとは別なので、メインのコンテキストを消費しない。
> Exploreエージェントで、このプロジェクトの認証パターンを調査して
戦略3: タスクを分割する
大きなリファクタリングを一度にやろうとせず、ファイル単位やモジュール単位で分割する。
# セッション1: lib/content.ts のリファクタリング
# セッション2: lib/book.ts のリファクタリング
# セッション3: 統合テスト
戦略4: CLAUDE.mdを活用する
毎回説明する情報はCLAUDE.mdに書いておく。コンテキストの無駄遣いを防ぐ。
「最後の20%問題」
コンテキストウィンドウの残り20%に入ると、Claude Codeの応答品質が低下しやすい。
この状態で避けるべき作業:
- 大規模なリファクタリング
- 複数ファイルにまたがる新機能実装
- 複雑なデバッグ
この状態でも安全な作業:
- 単一ファイルの小さな修正
- 独立したユーティリティ関数の作成
- ドキュメントの更新
コンテキストが残り少ないと感じたら、/compact するか、新しいセッションを開始する。
コンテキストのコストを意識する
大きなファイルを読み込むとコンテキストを大量に消費する。1000行のファイルを10個読むよりも、必要な部分だけを読む方が効率的。Readツールのoffsetとlimitパラメータを活用しよう。
この章のポイント
- コンテキストウィンドウには上限があり、超えると自動圧縮が発生する
- /compact でタスクの区切り目に戦略的に圧縮し、重要な情報を保持する
- メモリファイル(MEMORY.md)でセッション間の知識を永続化する
- 大規模コードベースでは必要なファイルだけを読み、サブエージェントを活用する
- コンテキスト残り20%では複雑な作業を避け、/compact か新セッションを検討する