Skip to content

パフォーマンス最適化:レスポンス速度の向上

このレッスンで学べること

  • タスクの複雑さに応じて適切なモデルを選択し、コストとパフォーマンスのバランスを取る
  • コンテキストウィンドウを効果的に管理し、制限に達することを防ぐ
  • 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 エージェント

markdown
簡単なコード修正、フォーマット、コメント生成
Haiku を使用

Sonnet 4.5(最高のコーディングモデル)

適用シーン

  • 主要な開発作業
  • マルチエージェントワークフローの調整
  • 複雑なコーディングタスク

markdown
新機能の実装、リファクタリング、複雑なバグ修正
Sonnet を使用

Opus 4.5(最強の推論能力)

適用シーン

  • 複雑なアーキテクチャ決定
  • 最大の推論深度が必要なタスク
  • 調査・分析タスク

markdown
システム設計、セキュリティ監査、複雑な問題のトラブルシューティング
Opus を使用

モデル選択のヒント

エージェント設定で model フィールドを指定します:

markdown
---
name: my-agent
model: haiku  # または sonnet, opus
---

コンテキストウィンドウ管理

コンテキストウィンドウの使用量が多すぎるとパフォーマンスに影響し、タスクが失敗する可能性もあります。

コンテキストウィンドウの後半 20% での実行を避けるべきタスク

これらのタスクは、先にコンテキストを圧縮することをお勧めします:

  • 大規模リファクタリング
  • 複数ファイルにまたがる機能実装
  • 複雑なインタラクションのデバッグ

コンテキスト感度が低いタスク

これらのタスクはコンテキスト要件が低く、上限に近づいても続行できます:

  • 単一ファイルの編集
  • 独立したツールの作成
  • ドキュメントの更新
  • 簡単なバグ修正

重要な注意

コンテキストウィンドウは以下の要因に影響されます:

  • 有効な MCP サーバーの数
  • ツール呼び出し回数
  • 会話履歴の長さ
  • 現在のセッションでのファイル操作

MCP 設定の最適化

MCP サーバーは Claude Code の機能を拡張する重要な方法ですが、各 MCP はコンテキストを消費します。

基本原則

README の推奨事項に従って:

json
{
  "mcpServers": {
    "mcp-server-1": { ... },
    "mcp-server-2": { ... }
    // ... その他の設定
  },
  "disabledMcpServers": [
    "mcp-server-3",
    "mcp-server-4"
    // 使用しない MCP を無効化
  ]
}

ベストプラクティス

  • 20〜30 個の MCP サーバーを設定可能
  • プロジェクトごとに有効化するのは 10 個以下
  • アクティブなツール数は 80 個未満に維持

必要に応じて MCP を有効化

プロジェクトタイプに応じて関連する MCP を選択:

プロジェクトタイプ推奨有効化オプション
フロントエンドプロジェクトVercel, MagicFilesystem, GitHub
バックエンドプロジェクトSupabase, ClickHouseGitHub, Railway
フルスタックプロジェクトすべて-
ツールライブラリGitHubFilesystem

MCP の切り替え方法

プロジェクト設定(~/.claude/settings.json)で disabledMcpServers を使用:

json
{
  "disabledMcpServers": ["cloudflare-observability", "clickhouse-io"]
}

戦略的圧縮

自動圧縮は任意のタイミングでトリガーされ、タスクのロジックを中断する可能性があります。戦略的圧縮はタスクの境界で手動実行し、ロジックの一貫性を保ちます。

なぜ戦略的圧縮が必要か

自動圧縮の問題点

  • タスクの途中でトリガーされることが多く、重要なコンテキストが失われる
  • タスクのロジック境界を理解していない
  • 複雑な複数ステップの操作を中断する可能性がある

戦略的圧縮の利点

  • タスクの境界で圧縮し、重要な情報を保持
  • ロジックがより明確
  • 重要なプロセスの中断を回避

最適な圧縮タイミング

  1. 探索完了後、実行前 - 調査コンテキストを圧縮し、実装計画を保持
  2. マイルストーン完了後 - 次のフェーズに向けて新たにスタート
  3. タスク切り替え前 - 探索コンテキストをクリアし、新しいタスクに備える

Strategic Compact Hook

このプラグインには strategic-compact skill が含まれており、圧縮すべきタイミングを自動的にリマインドします。

Hook の動作原理

  • ツール呼び出し回数を追跡
  • しきい値に達するとリマインド(デフォルト 50 回の呼び出し)
  • その後は 25 回の呼び出しごとにリマインド

しきい値の設定

bash
# 環境変数を設定
export COMPACT_THRESHOLD=40

Hook 設定hooks/hooks.json に含まれています):

json
{
  "matcher": "tool == \"Edit\" || tool == \"Write\"",
  "hooks": [{
    "type": "command",
    "command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/hooks/suggest-compact.js\""
  }]
}

使用のコツ

  1. 計画後に圧縮 - 計画が確定したら、圧縮して新たにスタート
  2. デバッグ後に圧縮 - エラー解決のコンテキストをクリアし、次のステップへ
  3. 実装中は圧縮しない - 関連する変更のコンテキストを保持
  4. リマインドに注目 - 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.jsonmcpServersdisabledMcpServers 設定を確認してください。アクティブな MCP 数 = 合計 - disabledMcpServers 内の数。

Q: なぜレスポンスが特に遅いの?

A: 以下の点をチェックしてください:

  1. 簡単なタスクに Opus を使用していませんか?
  2. コンテキストウィンドウが一杯に近づいていませんか?
  3. 有効な MCP サーバーが多すぎませんか?
  4. 大規模なファイル操作を実行していませんか?

このレッスンのまとめ

パフォーマンス最適化の核心は「適切なタイミングで適切なツールを使う」ことです:

  • モデル選択:タスクの複雑さに応じて Haiku/Sonnet/Opus を選択
  • コンテキスト管理:ウィンドウの後半 20% を避け、適時に圧縮
  • MCP 設定:必要に応じて有効化、10 個以下に
  • 戦略的圧縮:タスクの境界で手動圧縮し、ロジックの一貫性を保つ

関連レッスン


付録:ソースコード参照

クリックしてソースコードの場所を表示

更新日:2026-01-25

機能ファイルパス行番号
パフォーマンス最適化ルールrules/performance.md1-48
戦略的圧縮 Skillskills/strategic-compact/SKILL.md1-64
Hooks 設定hooks/hooks.json1-158
Strategic Compact Hookhooks/hooks.json46-54
Suggest Compact スクリプトscripts/hooks/suggest-compact.js-
MCP 設定例mcp-configs/mcp-servers.json-

キールール

  • モデル選択:Haiku(軽量タスク)、Sonnet(主要開発)、Opus(複雑な推論)
  • コンテキストウィンドウ:後半 20% の使用を避け、適時に圧縮
  • MCP 設定:プロジェクトごとに有効化は 10 個以下、アクティブツール < 80 個
  • 戦略的圧縮:タスクの境界で手動圧縮し、自動圧縮による中断を回避

キー環境変数

  • COMPACT_THRESHOLD:ツール呼び出し回数のしきい値(デフォルト:50)