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