メインコンテンツへスキップ
17 / 26|6分で読めます

コンテキスト管理 — 窓の向こうの知識をつなぐ

コンテキストウィンドウの限界と対策。/compact、メモリファイル、戦略的なファイル読み込みで、大規模プロジェクトでも効果的に作業する。

Claude Codeの「記憶」には限りがある。コンテキストウィンドウという制約を理解し、戦略的に管理することで、大規模プロジェクトでも効果的に作業できる。


コンテキストウィンドウとは

Claude Codeが一度に「覚えていられる」情報量には上限がある。これがコンテキストウィンドウだ。

会話が長くなるほど、または大きなファイルを多数読み込むほど、コンテキストウィンドウは消費される。上限に近づくと、Claude Codeは自動的に古い情報を圧縮(auto-compaction)する。

問題は、この自動圧縮のタイミングが必ずしも最適ではないことだ。重要な情報が圧縮で失われ、同じ質問に対する回答が変わったり、以前の合意が忘れられたりする可能性がある。


/compact — 戦略的な圧縮

> /compact

自動圧縮を待つのではなく、適切なタイミングで手動圧縮する。

/compact を使うべきタイミング

  1. タスクの区切り目: 一つの機能が完成したとき
  2. 方針転換の前: 別のアプローチに切り替えるとき
  3. 応答の質が下がったとき: 同じことを繰り返す、文脈を忘れる兆候
  4. 大きなファイルを読んだ後: 必要な情報を抽出したらコンテキストを整理

/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 か新セッションを検討する