/compactコマンド徹底解説 ― 会話を圧縮して作業を続ける
/compactの仕組み・使いどころ・カスタム指示を完全網羅
はじめに
Claude Codeで長時間の作業をしていると、やがてコンテキストウィンドウが埋まり、パフォーマンスが低下します。そんなときに活躍するのが/compactコマンドです。会話の履歴を圧縮し、重要な情報だけを残して作業を続行できます。
この記事では、/compactの仕組みから実践的な活用パターンまでを徹底解説します。
/compactコマンドとは
/compactは、Claude Codeに組み込まれたコマンドで、現在の会話履歴をAIが要約・圧縮する機能です。セッションを終了せずにコンテキストウィンドウの使用量を大幅に削減できます。
/compactの基本情報
- 構文:
/compact [カスタム指示] - 効果:会話履歴を圧縮してコンテキスト使用量を削減
- セッション:中断せずに作業を続行できる
- カスタム指示:圧縮時に保持すべき情報を指定できる(オプション)
# 基本的な使い方
/compact
# カスタム指示を添える
/compact 認証機能の実装状況と残りのTODOを保持して
# 特定の技術的文脈を保持する
/compact データベーススキーマの変更点とAPI仕様を忘れないで
圧縮の仕組み
/compactコマンドを実行すると、内部では以下の処理が行われます。
圧縮のプロセス
- 会話履歴の分析:これまでの全やり取りをAIが読み取る
- 重要情報の抽出:タスクの目的、現在の進捗、決定事項、未完了の作業などを特定
- 要約の生成:抽出した情報をコンパクトな要約にまとめる
- 会話のリセット:古い会話履歴を要約で置き換え、コンテキストを解放
- 作業続行:圧縮後の文脈で会話を継続
圧縮率の目安
| 圧縮前のコンテキスト | 圧縮後の目安 | 削減率 |
|---|---|---|
| 50Kトークン | 5〜10Kトークン | 80〜90% |
| 100Kトークン | 8〜15Kトークン | 85〜92% |
| 150Kトークン | 10〜20Kトークン | 87〜93% |
圧縮率は会話の内容によって異なります。コードの変更が多い場合は要約が長くなり、質疑応答が中心の場合はより高い圧縮率になります。
使うべきタイミング
/compactの使いどころを見極めることが、効率的なセッション管理の鍵です。
使うべきタイミング
| タイミング | 状況 | 理由 |
|---|---|---|
| コンテキスト60%超 | ステータスバーで使用率を確認 | 80%を超える前に余裕を持って圧縮 |
| タスクの区切り | 機能Aが完了し、機能Bに着手するとき | 機能Aの詳細なやり取りが不要になる |
| デバッグ完了後 | 試行錯誤のやり取りが大量に蓄積 | 失敗した試みの詳細は不要 |
| 応答品質の低下 | AIが指示を忘れる、的外れな応答 | コンテキスト過多による注意力分散 |
/compactを使わない方がよい場合
- タスク完了間近:あと1〜2回のやり取りで終わるなら、そのまま完了させた方が良い
- 複雑な文脈が必要:直前のコードの細部が重要な作業中(圧縮で失われる可能性)
- 新しいセッションの方が適切:タスクが完全に異なる場合は/compactより新セッション
保持される情報と失われる情報
/compactは「すべてを記憶する」のではなく、「重要な情報を要約する」ことでコンテキストを削減します。何が残り、何が失われるかを理解しておきましょう。
保持されやすい情報
- 現在のタスクの目的:何を実装しているか、何を修正しているか
- 変更したファイル:どのファイルをどう変更したか(概要レベル)
- 決定事項:技術選定やアーキテクチャの決定
- 未完了のTODO:まだ終わっていない作業リスト
- エラーの現状:現在発生しているエラーや問題
失われやすい情報
- コードの詳細な内容:実際のコード行(ファイルを再読み込みすれば取得可能)
- 試行錯誤の過程:失敗したアプローチの詳細
- 会話のニュアンス:「こっちの方が良い」といった判断の文脈
- 中間的な説明:「なぜこうしたか」の詳細な説明
- エラーログの全文:長いスタックトレースなど
カスタム圧縮指示の書き方
/compactにカスタム指示を添えることで、圧縮時に特定の情報を確実に保持させることができます。
基本パターン
# パターン1: 保持すべき情報を指定
/compact 以下を必ず保持:1) DBスキーマの変更内容 2) APIエンドポイント一覧 3) 残りのTODO
# パターン2: 現在のコンテキストを明示
/compact 現在の状況:ユーザー認証APIの実装中。JWTトークン方式。login/logout/refresh完了、パスワードリセット未着手。
# パターン3: 次のステップを明示
/compact 次にやること:1) パスワードリセットAPI 2) メール送信機能 3) フロントエンド連携
効果的なカスタム指示のテンプレート
/compact 以下の情報を保持してください:
- プロジェクト: [プロジェクト名]
- 現在のタスク: [何をしているか]
- 完了した作業: [完了リスト]
- 残りのTODO: [未完了リスト]
- 重要な決定: [技術選定など]
- 既知の問題: [バグや制約]
圧縮前後の比較例
実際に/compactを使った場合のイメージを見てみましょう。
シナリオ: PHPでのCRUD API開発
圧縮前の会話(概要)
メッセージ1: 「ニュース管理APIを作りたい」→ 要件の確認
メッセージ2: DB設計の提案 → ユーザーが修正を依頼
メッセージ3: DB設計の修正 → 承認
メッセージ4: GET /api/news の実装
メッセージ5: テストでバグ発見 → デバッグ
メッセージ6: バグ修正完了
メッセージ7: POST /api/news の実装
メッセージ8: バリデーション追加の議論
メッセージ9: バリデーション実装
... (コンテキスト使用率: 65%)
/compact実行後の圧縮された文脈
【プロジェクト】ニュース管理API(PHP + SQLite)
【完了】
- DBスキーマ: newsテーブル(id, title, content, published_date, is_published, sort_order)
- GET /api/news: 一覧取得(ページネーション付き)、個別取得
- POST /api/news: 新規作成(title必須、content必須のバリデーション付き)
【未完了】
- PUT /api/news/:id(更新)
- DELETE /api/news/:id(削除)
- 認証(管理者のみ書き込み可能にする)
【変更ファイル】
- db/init.sql, api/news.php, includes/db.php
... (コンテキスト使用率: 8%)
このように、65%だったコンテキスト使用率が8%まで削減され、残りの作業に十分なコンテキストを確保できます。
長時間セッションの戦略
大きな機能開発など、長時間のセッションが必要な場合の/compact活用パターンを紹介します。
パターン1: 定期圧縮法
コンテキスト使用率を監視し、一定の閾値で/compactを実行します。
手順
- 作業開始(コンテキスト使用率: 5%)
- 作業を進める
- 使用率が50〜60%に達したら
/compactを実行 - 圧縮後(使用率: 8〜10%に戻る)、作業を継続
- 再び50〜60%に達したら
/compactを実行 - 必要に応じて繰り返す
パターン2: マイルストーン圧縮法
機能単位の区切り(マイルストーン)で/compactを実行します。
# マイルストーン1: DBスキーマ設計完了
/compact DBスキーマが確定。次はAPIエンドポイントの実装。
# マイルストーン2: APIエンドポイント完了
/compact API全エンドポイント実装完了。次はフロントエンド連携。
# マイルストーン3: フロントエンド連携完了
/compact フロント連携完了。次はテスト作成。
パターン3: デバッグ後圧縮法
デバッグの試行錯誤は大量のコンテキストを消費します。バグが解決したら即座に/compactを実行しましょう。
# バグ修正完了後
/compact セッション管理のバグを修正完了(session_regenerate_id()の呼び出し位置を変更)。
本来のタスクであるOAuth2統合の実装に戻る。残り:Google OAuth連携、コールバック処理。
ベストプラクティス
/compact活用の7つのルール
- コンテキスト60%で圧縮 ― 80%を超える前に余裕を持って実行
- カスタム指示を活用 ― 重要な情報が失われないよう明示的に指定
- 圧縮後にファイルを再確認 ― 必要なファイルはclaude codeに再読み込みさせる
- TODOリストを含める ― 残りの作業を確実に引き継ぐ
- デバッグ完了後は即圧縮 ― 試行錯誤の詳細は不要になる
- 1セッションで3回以上の圧縮は避ける ― 圧縮を重ねると情報が劣化する
- 完全にタスクが変わるなら新セッション ― /compactより新規開始が適切
/compactは「一時停止して整理する」機能です。作業の流れを止めずにコンテキストを最適化できる強力なツールですが、使いすぎは情報の劣化を招きます。適切なタイミングで、適切な指示とともに使いましょう。
まとめ
/compactコマンドは、Claude Codeでの長時間作業に欠かせないツールです。
- /compactの本質:会話履歴をAIが要約し、コンテキストウィンドウを解放する機能
- 最適なタイミング:コンテキスト使用率60%、タスクの区切り、デバッグ完了後
- カスタム指示:保持すべき情報を明示的に指定することで圧縮品質を向上
- 注意点:コードの詳細や試行錯誤の過程は失われるが、ファイルの再読み込みで補完可能
- 使いすぎに注意:1セッション2〜3回までが目安。タスクが変わるなら新セッションを推奨
まずは次のClaude Codeセッションで、コンテキスト使用率を確認しながら/compactを試してみてください。作業効率の違いを実感できるはずです。