パフォーマンス最適化:レスポンス速度の向上
このレッスンで学べること
- タスクの複雑さに応じて適切なモデルを選択し、コストとパフォーマンスのバランスを取る
- コンテキストウィンドウを効果的に管理し、制限に達することを防ぐ
- MCP サーバーを適切に設定し、利用可能なコンテキストを最大化する
- 戦略的圧縮を使用して会話のロジックを一貫させる
現在の課題
Claude Code のレスポンスが遅い?コンテキストウィンドウがすぐに一杯になる?Haiku、Sonnet、Opus のどれをいつ使うべきかわからない?これらの問題は開発効率に深刻な影響を与えます。
基本的な考え方
パフォーマンス最適化の核心は適切なタイミングで適切なツールを使うことです。モデルの選択、コンテキスト管理、MCP 設定、すべてがトレードオフです:速度 vs 知能、コスト vs 品質。
キーコンセプト
コンテキストウィンドウは Claude が「記憶」できる会話履歴の長さです。現在のモデルは約 200k トークンをサポートしていますが、MCP サーバーの数、ツール呼び出し回数などの要因に影響されます。
よくあるパフォーマンス問題
問題 1:レスポンス速度が遅い
症状:簡単なタスクでも長時間待たされる
考えられる原因:
- 簡単なタスクに Opus を使用している
- コンテキストが長すぎて、大量の履歴情報を処理する必要がある
- 有効な MCP サーバーが多すぎる
解決策:
- 軽量タスクには Haiku を使用する
- 定期的にコンテキストを圧縮する
- 有効な MCP の数を減らす
問題 2:コンテキストウィンドウがすぐに一杯になる
症状:開発を始めてすぐに圧縮またはセッションの再起動が必要になる
考えられる原因:
- 有効な MCP サーバーが多すぎる(各 MCP がコンテキストを消費する)
- 会話履歴を適時に圧縮していない
- 複雑なツール呼び出しチェーンを使用している
解決策:
- 必要に応じて MCP を有効化し、
disabledMcpServersで不要なものを無効化する - 戦略的圧縮を使用し、タスクの境界で手動圧縮する
- 不要なファイル読み取りや検索を避ける
問題 3:トークン消費が速い
症状:クォータの消費が速く、コストが高い
考えられる原因:
- 常に Opus でタスクを処理している
- 大量のファイルを繰り返し読み取っている
- 圧縮を適切に使用していない
解決策:
- タスクの複雑さに応じてモデルを選択する
/compactを使用して積極的に圧縮する- strategic-compact hooks を使用してスマートにリマインドする
モデル選択戦略
タスクの複雑さに応じて適切なモデルを選択することで、パフォーマンスを大幅に向上させ、コストを削減できます。
Haiku 4.5(Sonnet の 90% の能力、3 倍のコスト削減)
適用シーン:
- 軽量エージェント、頻繁な呼び出し
- ペアプログラミングとコード生成
- マルチエージェントシステムの Worker エージェント
例:
簡単なコード修正、フォーマット、コメント生成
Haiku を使用Sonnet 4.5(最高のコーディングモデル)
適用シーン:
- 主要な開発作業
- マルチエージェントワークフローの調整
- 複雑なコーディングタスク
例:
新機能の実装、リファクタリング、複雑なバグ修正
Sonnet を使用Opus 4.5(最強の推論能力)
適用シーン:
- 複雑なアーキテクチャ決定
- 最大の推論深度が必要なタスク
- 調査・分析タスク
例:
システム設計、セキュリティ監査、複雑な問題のトラブルシューティング
Opus を使用モデル選択のヒント
エージェント設定で model フィールドを指定します:
---
name: my-agent
model: haiku # または sonnet, opus
---コンテキストウィンドウ管理
コンテキストウィンドウの使用量が多すぎるとパフォーマンスに影響し、タスクが失敗する可能性もあります。
コンテキストウィンドウの後半 20% での実行を避けるべきタスク
これらのタスクは、先にコンテキストを圧縮することをお勧めします:
- 大規模リファクタリング
- 複数ファイルにまたがる機能実装
- 複雑なインタラクションのデバッグ
コンテキスト感度が低いタスク
これらのタスクはコンテキスト要件が低く、上限に近づいても続行できます:
- 単一ファイルの編集
- 独立したツールの作成
- ドキュメントの更新
- 簡単なバグ修正
重要な注意
コンテキストウィンドウは以下の要因に影響されます:
- 有効な MCP サーバーの数
- ツール呼び出し回数
- 会話履歴の長さ
- 現在のセッションでのファイル操作
MCP 設定の最適化
MCP サーバーは Claude Code の機能を拡張する重要な方法ですが、各 MCP はコンテキストを消費します。
基本原則
README の推奨事項に従って:
{
"mcpServers": {
"mcp-server-1": { ... },
"mcp-server-2": { ... }
// ... その他の設定
},
"disabledMcpServers": [
"mcp-server-3",
"mcp-server-4"
// 使用しない MCP を無効化
]
}ベストプラクティス:
- 20〜30 個の MCP サーバーを設定可能
- プロジェクトごとに有効化するのは 10 個以下
- アクティブなツール数は 80 個未満に維持
必要に応じて MCP を有効化
プロジェクトタイプに応じて関連する MCP を選択:
| プロジェクトタイプ | 推奨有効化 | オプション |
|---|---|---|
| フロントエンドプロジェクト | Vercel, Magic | Filesystem, GitHub |
| バックエンドプロジェクト | Supabase, ClickHouse | GitHub, Railway |
| フルスタックプロジェクト | すべて | - |
| ツールライブラリ | GitHub | Filesystem |
MCP の切り替え方法
プロジェクト設定(~/.claude/settings.json)で disabledMcpServers を使用:
{
"disabledMcpServers": ["cloudflare-observability", "clickhouse-io"]
}戦略的圧縮
自動圧縮は任意のタイミングでトリガーされ、タスクのロジックを中断する可能性があります。戦略的圧縮はタスクの境界で手動実行し、ロジックの一貫性を保ちます。
なぜ戦略的圧縮が必要か
自動圧縮の問題点:
- タスクの途中でトリガーされることが多く、重要なコンテキストが失われる
- タスクのロジック境界を理解していない
- 複雑な複数ステップの操作を中断する可能性がある
戦略的圧縮の利点:
- タスクの境界で圧縮し、重要な情報を保持
- ロジックがより明確
- 重要なプロセスの中断を回避
最適な圧縮タイミング
- 探索完了後、実行前 - 調査コンテキストを圧縮し、実装計画を保持
- マイルストーン完了後 - 次のフェーズに向けて新たにスタート
- タスク切り替え前 - 探索コンテキストをクリアし、新しいタスクに備える
Strategic Compact Hook
このプラグインには strategic-compact skill が含まれており、圧縮すべきタイミングを自動的にリマインドします。
Hook の動作原理:
- ツール呼び出し回数を追跡
- しきい値に達するとリマインド(デフォルト 50 回の呼び出し)
- その後は 25 回の呼び出しごとにリマインド
しきい値の設定:
# 環境変数を設定
export COMPACT_THRESHOLD=40Hook 設定(hooks/hooks.json に含まれています):
{
"matcher": "tool == \"Edit\" || tool == \"Write\"",
"hooks": [{
"type": "command",
"command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/hooks/suggest-compact.js\""
}]
}使用のコツ
- 計画後に圧縮 - 計画が確定したら、圧縮して新たにスタート
- デバッグ後に圧縮 - エラー解決のコンテキストをクリアし、次のステップへ
- 実装中は圧縮しない - 関連する変更のコンテキストを保持
- リマインドに注目 - Hook が「いつ」を教えてくれるので、あなたが「圧縮するかどうか」を決定
現在の状態を確認
/checkpoint コマンドを使用して現在の状態を保存してから、セッションを圧縮できます。
パフォーマンスチェックリスト
日常的な使用で、以下の項目を定期的にチェックしてください:
モデル使用
- [ ] 簡単なタスクには Sonnet/Opus ではなく Haiku を使用
- [ ] 複雑な推論には Sonnet ではなく Opus を使用
- [ ] エージェント設定で適切な model を指定
コンテキスト管理
- [ ] 有効な MCP は 10 個以下
- [ ] 定期的に
/compactで圧縮 - [ ] タスクの途中ではなくタスクの境界で圧縮
MCP 設定
- [ ] プロジェクトに必要な MCP のみを有効化
- [ ]
disabledMcpServersで不要な MCP を管理 - [ ] アクティブなツール数を定期的にチェック(推奨 < 80)
よくある質問
Q: Haiku、Sonnet、Opus はいつ使うべき?
A: タスクの複雑さに応じて:
- Haiku: 軽量タスク、頻繁な呼び出し(コードフォーマット、コメント生成など)
- Sonnet: 主要な開発作業、エージェントの調整(機能実装、リファクタリングなど)
- Opus: 複雑な推論、アーキテクチャ決定(システム設計、セキュリティ監査など)
Q: コンテキストウィンドウが一杯になったらどうする?
A: すぐに /compact でセッションを圧縮してください。strategic-compact hook を有効にしている場合、適切なタイミングでリマインドしてくれます。圧縮前に /checkpoint で重要な状態を保存できます。
Q: 有効な MCP の数はどうやって確認する?
A: ~/.claude/settings.json の mcpServers と disabledMcpServers 設定を確認してください。アクティブな MCP 数 = 合計 - disabledMcpServers 内の数。
Q: なぜレスポンスが特に遅いの?
A: 以下の点をチェックしてください:
- 簡単なタスクに Opus を使用していませんか?
- コンテキストウィンドウが一杯に近づいていませんか?
- 有効な MCP サーバーが多すぎませんか?
- 大規模なファイル操作を実行していませんか?
このレッスンのまとめ
パフォーマンス最適化の核心は「適切なタイミングで適切なツールを使う」ことです:
- モデル選択:タスクの複雑さに応じて Haiku/Sonnet/Opus を選択
- コンテキスト管理:ウィンドウの後半 20% を避け、適時に圧縮
- MCP 設定:必要に応じて有効化、10 個以下に
- 戦略的圧縮:タスクの境界で手動圧縮し、ロジックの一貫性を保つ
関連レッスン
- トークン最適化戦略 - コンテキストウィンドウ管理を深く学ぶ
- Hooks 自動化 - strategic-compact hook の設定を理解する
- MCP サーバー設定 - MCP サーバーの設定方法を学ぶ
付録:ソースコード参照
クリックしてソースコードの場所を表示
更新日:2026-01-25
| 機能 | ファイルパス | 行番号 |
|---|---|---|
| パフォーマンス最適化ルール | rules/performance.md | 1-48 |
| 戦略的圧縮 Skill | skills/strategic-compact/SKILL.md | 1-64 |
| Hooks 設定 | hooks/hooks.json | 1-158 |
| Strategic Compact Hook | hooks/hooks.json | 46-54 |
| Suggest Compact スクリプト | scripts/hooks/suggest-compact.js | - |
| MCP 設定例 | mcp-configs/mcp-servers.json | - |
キールール:
- モデル選択:Haiku(軽量タスク)、Sonnet(主要開発)、Opus(複雑な推論)
- コンテキストウィンドウ:後半 20% の使用を避け、適時に圧縮
- MCP 設定:プロジェクトごとに有効化は 10 個以下、アクティブツール < 80 個
- 戦略的圧縮:タスクの境界で手動圧縮し、自動圧縮による中断を回避
キー環境変数:
COMPACT_THRESHOLD:ツール呼び出し回数のしきい値(デフォルト:50)