「セッション前半では的確に動いていたClaude Codeが、後半になると急に精度が落ちる」「大規模リファクタリングの途中から、指示した前提を忘れ始める」——Claude Codeで長時間作業するエンジニアなら、誰もが一度はぶつかる壁ではないでしょうか。
本記事は2026年8月時点の情報です。
この症状の正体は、ほとんどの場合コンテキストウィンドウの圧迫です。ファイル読み込み結果やコマンド実行ログが蓄積されて上限に近づくと、古い情報から自動で切り捨てられ、重要な指示や前提条件が失われます。/compactコマンドは、この問題を能動的にコントロールする手段であり、単なるリセットではなくフォーカス指示付きの圧縮ができる点が最大の強みです。
本記事では、/compactの仕組みと/contextとの違い、大規模リファクタリング・デバッグ・コードレビューなど実務での圧縮パターン、そして70-80%ルールに基づく最適な実行タイミングと自動コンパクト設定までを解説します。
この記事でわかること
Claude Codeで長時間作業すると回答品質が低下する原因と、その解決策を具体的に解説します。/compactコマンドを使いこなすことで、セッションの途中で精度が落ちる問題を根本的に解消できます。
- /compactコマンドの仕組みと、コンテキストウィンドウが品質に与える影響 — /compactは、ClaudeCodeの会話履歴を要約・圧縮して、コンテキストウィンドウの空き容量を回復するコマンドです。
- フォーカス指示を使った5つの圧縮パターンと実務での活用法 — 大規模なリファクタリングでは、複数のファイルを順番に修正していきます。
- 70-80%ルールに基づく最適な実行タイミングと自動コンパクト設定 — /compactの実行タイミングには明確な目安があります。70-80%の段階で自分からcompactを実行するのが最も効果的です。
対象読者: Claude Codeで日常的に開発作業を行っているエンジニア、長時間セッションでの品質低下に課題を感じている方
/compactコマンドとは
/compactは、Claude Codeの会話履歴を要約・圧縮して、コンテキストウィンドウの空き容量を回復するコマンドです。
LLMにはコンテキストウィンドウという処理可能なテキスト量の上限があります。Claude Codeでの作業が長くなるほど、ファイルの読み込み結果、コマンドの実行ログ、過去のやり取りが蓄積され、この上限に近づきます。上限に達すると、古い情報から自動的に切り捨てられ、重要な指示や前提条件が失われます。/compactはこの問題を能動的にコントロールする手段です。
基本的な使い方
シンプルな実行
/compact
引数なしで実行すると、Claude Codeが会話全体を分析し、重要な情報を残しつつ不要な部分を自動的に圧縮します。
フォーカス指示付きの実行
/compact 認証機能の実装に関する内容を重点的に残してください
引数として「何を残すべきか」を指定すると、その領域の情報を優先的に保持した状態で圧縮が行われます。これが/compactの最も強力な使い方です。
/compactと/contextの違い
| コマンド |
役割 |
実行タイミング |
/compact |
会話履歴を圧縮し、コンテキストの空き容量を回復する |
セッション途中(容量が逼迫したとき) |
/context |
現在のコンテキスト使用量を確認する |
いつでも(状況確認として) |
/contextで現在の使用状況を確認し、/compactで圧縮するという流れがセットになります。
コンテキスト使用量の確認
/context
実行すると、現在のコンテキストウィンドウの使用率がパーセンテージで表示されます。この数値を見て、/compactの実行タイミングを判断します。
実務での活用パターン
パターン1: 大規模リファクタリング中の圧縮
大規模なリファクタリングでは、複数のファイルを順番に修正していきます。前半で修正したファイルの詳細なdiff情報は、後半の作業には不要です。
Before(圧縮なし):
セッション前半でsrc/components/配下の20ファイルを修正。後半でsrc/hooks/の修正に入ると、前半のdiff情報がコンテキストを圧迫し、型定義の整合性チェックが不正確になる。
After(/compact実行後):
/compact hooks/ディレクトリの修正に集中します。componentsで変更した型定義の一覧だけ残してください
前半の詳細なdiffは要約に圧縮されつつ、後半の作業に必要な型定義の情報だけが正確に残ります。結果として、hooks/の修正でも型の整合性を維持したコードが生成されます。
パターン2: デバッグセッションの途中リセット
デバッグでは試行錯誤が続き、失敗したアプローチのログが大量に蓄積されます。
Before(圧縮なし):
エラーの原因を探るために5つのアプローチを試行。失敗した4つのアプローチのログがコンテキストを埋め尽くし、6つ目のアプローチで過去の成功パターンを参照できなくなる。
After(/compact実行後):
/compact 判明した事実と未検証の仮説だけ残してください。失敗したアプローチの詳細ログは不要です
「何がわかったか」「何がまだわからないか」だけが残り、次のデバッグステップに集中できます。
パターン3: マルチタスク切り替え時の焦点変更
1つのセッションで複数のタスクを切り替える場合、前のタスクの情報が次のタスクの作業を妨げることがあります。
Before(圧縮なし):
API設計のタスク完了後、テストコード作成に移行。API設計時に読み込んだOpenAPI仕様書の全文がコンテキストに残り、テスト作成に必要なテストフレームワークの設定情報を読み込む余地がなくなる。
After(/compact実行後):
/compact APIのエンドポイント一覧とレスポンス型だけ残してください。テストコードの作成に移ります
テスト作成に必要な最小限のAPI情報だけが残り、テストフレームワークの設定やモックライブラリのドキュメントを新たに読み込む余裕が生まれます。
パターン4: ドキュメント生成タスクでの情報整理
コードベースを分析してドキュメントを生成する作業では、ソースコードの読み込みだけでコンテキストが埋まりがちです。
Before(圧縮なし):
20ファイルのソースコードを読み込んでAPI仕様書を作成。ソースコードの全文がコンテキストを占有し、ドキュメントの構成を考える余地がなくなる。
After(/compact実行後):
/compact 各ファイルの公開関数のシグネチャと、JSDocコメントの内容だけ残してください
ドキュメント生成に必要な関数シグネチャとコメントだけが残り、構成の検討や文章の推敲に十分なコンテキスト容量が確保されます。
パターン5: 長期プロジェクトの日次セッション引き継ぎ
複数日にわたるプロジェクトで、前日のセッションの成果を引き継いで作業を再開する場合の活用パターンです。Claude Codeによる経営データの可視化やコンテンツマーケティングの支援でも、こうした手法が活用されています。
セッション終了前:
/compact 今日の作業で完了したタスク、未完了のタスク、明日着手すべき箇所をまとめてください
圧縮後の要約が、翌日のセッション開始時に自動的にコンテキストに含まれます。新しいセッションを開始する場合は、この要約をCLAUDE.mdやメモリに記録しておくと、セッションをまたいだ引き継ぎが可能になります。
70-80%ルール:最適な実行タイミング
/compactの実行タイミングには明確な目安があります。
| コンテキスト使用率 |
状態 |
推奨アクション |
| 0-50% |
余裕あり |
そのまま作業を継続 |
| 50-70% |
注意域 |
大きなファイル読み込み前に/contextで確認 |
| 70-80% |
圧縮推奨 |
/compactを実行するベストタイミング |
| 80-95% |
危険域 |
即座に/compactを実行。品質低下が始まっている可能性あり |
| 95%以上 |
自動圧縮発動 |
Claude Codeが自動的にcompactを実行(制御不能) |
70-80%の段階で自分からcompactを実行するのが最も効果的です。この段階ならフォーカス指示を丁寧に書く余裕があり、残すべき情報を正確にコントロールできます。95%を超えると自動コンパクトが発動しますが、自動の場合はフォーカス指示なしで圧縮されるため、重要な情報が失われるリスクがあります。
自動コンパクトの設定
Claude Codeでは、コンテキスト使用率が一定の閾値を超えた場合に自動的にcompactを実行する設定が可能です。
settings.jsonでの設定
{
"autoCompact": true
}
autoCompactをtrueに設定すると、コンテキストが上限に近づいた際に自動でcompactが実行されます。
自動コンパクトの注意点
自動コンパクトはフォーカス指示なしで実行されるため、「何を残すべきか」の判断がClaude Code任せになります。重要度の高い作業では、自動に頼らず手動で/compactを実行し、明示的に残す情報を指定する方が安全です。
| 設定 |
メリット |
デメリット |
autoCompact: true |
コンテキスト溢れを自動防止。作業に集中できる |
フォーカス指示なしのため、重要情報が圧縮される可能性 |
autoCompact: false(手動) |
残す情報を完全にコントロール可能 |
/contextでの定期確認が必要。忘れるとコンテキスト溢れ |
実務での推奨は、autoCompact: trueを有効にしつつ、70-80%到達時に手動でフォーカス指示付き/compactを実行するハイブリッド運用です。手動で圧縮できればベスト、忘れても自動がセーフティネットとして機能します。
フォーカス指示の書き方テンプレート
/compactの効果を最大化するには、フォーカス指示の書き方が重要です。以下のテンプレートを参考にしてください。
テンプレート一覧
| パターン |
フォーカス指示の例 |
| 特定機能に集中 |
/compact 認証機能の実装に関する情報だけ残してください |
| 型情報を保持 |
/compact 変更した型定義とインターフェースの一覧を残してください |
| エラー情報を保持 |
/compact 発見したバグと修正方針だけ残してください |
| タスク進捗を保持 |
/compact 完了タスクと未完了タスクのリストを残してください |
| 設計判断を保持 |
/compact 採用した設計方針とその理由を残してください |
効果的なフォーカス指示のポイント
フォーカス指示を書く際は、以下の3点を意識します。
- 「残すもの」を明示する: 「不要なものを消して」ではなく「○○を残して」と指定する方が精度が高い
- 具体的なファイルパスや機能名を含める: 「認証機能」より「src/auth/配下のJWTトークン検証ロジック」の方が正確
- 次の作業内容を伝える: 「テストコード作成に移ります」と次のタスクを書くと、それに必要な情報を推測して残してくれる
関連コマンドとの組み合わせ
/context + /compact のモニタリングフロー
/contextで使用率を確認し、閾値を超えたら/compactで圧縮する基本フローです。大きなファイル(1,000行以上のソースコードや長いログ出力)を読み込む前には、必ず/contextで空き容量を確認する習慣をつけましょう。
CLAUDE.md + /compact の永続化
/compactで圧縮された情報は、セッション終了とともに失われます。プロジェクト固有の重要な前提条件は、CLAUDE.mdに記述しておくことで、compactの影響を受けずに常にコンテキストに含まれます。詳しくは「Claude Codeのメモリ・コンテキスト管理」で解説しています。
/compact + カスタムコマンドの自動化
カスタムコマンドを使えば、フォーカス指示付きの/compactを定型化できます。例えば.claude/commands/compact-for-test.mdに「テストコード作成用にAPIエンドポイント一覧とモック設定だけ残してください」と定義しておけば、タスク切り替え時にワンコマンドで最適な圧縮が実行されます。
あわせて読みたい
まとめ
/compactコマンドは、Claude Codeの長時間セッションで回答品質を維持するための中核的な機能です。コンテキストウィンドウの使用率が70-80%に達した段階で、フォーカス指示付きの/compactを実行することで、不要な情報を圧縮しつつ作業に必要な情報を正確に保持できます
実践にあたっては、以下のポイントを押さえておくことが大切です。
- 自動コンパクト設定をセーフティネットとして有効にしつつ、重要な場面では手動で制御するハイブリッド運用が実務では最も効果的です
- *Claude Codeの全コマンド一覧はClaude Codeチートシートをご覧ください
- AI活用の全体像はAI活用完全ガイドで解説しています
よくある質問(FAQ)
Q1. /compactを実行すると、それまでの会話内容は完全に消えますか?
消えるのではなく、要約されます。/compactは会話履歴を分析し、重要な情報を要約として残しつつ、詳細なログや中間的なやり取りを圧縮します。フォーカス指示を指定することで、どの情報を優先的に残すかをコントロールできます。
Q2. /compactはどのくらいの頻度で実行すべきですか?
/contextで使用率を確認し、70-80%に達した時点で実行するのが最適です。目安として、大きなファイルの読み込みを3-5回行った後、またはデバッグの試行錯誤を5回以上繰り返した後が圧縮のタイミングです。頻繁に実行しすぎると、直前の作業のコンテキストまで圧縮されてしまうため、必要以上に実行しないことも大切です。
Q3. 自動コンパクトと手動コンパクトはどちらを使うべきですか?
両方を併用するのが最善です。autoCompact: trueを設定して自動コンパクトを有効にしつつ、重要な作業の切り替え時には手動でフォーカス指示付きの/compactを実行します。自動コンパクトはフォーカス指示なしで実行されるため、何を残すかの精度は手動に劣ります。手動compactを主軸に、自動をセーフティネットとして位置づける運用が推奨されます。
Q4. /compactと新しいセッションの開始、どちらが良いですか?
タスクの継続性によります。同じタスクを続ける場合は/compactで圧縮してセッションを継続する方が、作業の文脈が保持されて効率的です。まったく別のタスクに移る場合は、新しいセッションを開始した方がクリーンな状態で始められます。ただし、新しいセッションを開始する場合でも、CLAUDE.mdに重要な前提条件を書いておけば引き継ぎが可能です。