# 4.2 アプリケーションルーティング

## 機能説明

アプリケーションルーティングとは、CC Switch のルーティングサービスが特定アプリの API リクエストをルーティングすることです。

ルーティングを有効にすると：
- アプリの API リクエストがローカルルーティング経由で転送される
- リクエストログと使用量の統計を記録できる
- フェイルオーバー機能を使用できる

## 前提条件

アプリケーションルーティング機能を使用する前に、ルーティングサービスを起動する必要があります。

## ルーティングの有効化

### 操作場所

設定 → 詳細 → ルーティングサービス → アプリケーションルーティングエリア

### 操作手順

1. ルーティングサービスが起動していることを確認
2. 「アプリケーションルーティング」エリアを見つける
3. 必要なアプリのスイッチをオンにする

### ルーティングスイッチ

| スイッチ | 作用 |
|------|------|
| Claude ルーティング | Claude Code のリクエストをルーティング |
| Codex ルーティング | Codex のリクエストをルーティング |
| Gemini ルーティング | Gemini CLI のリクエストをルーティング |

複数のアプリのルーティングを同時に有効にできます。

## ルーティングの仕組み

### 設定の変更

ルーティングを有効にすると、CC Switch はアプリの設定ファイルを変更し、API エンドポイントをローカルルーティングに向けます。

**Claude 設定の変更**：

```json
// ルーティング前
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.anthropic.com"
  }
}

// ルーティング後
{
  "env": {
    "ANTHROPIC_BASE_URL": "http://127.0.0.1:15721"
  }
}
```

**Codex 設定の変更**：

```toml
# ルーティング前
base_url = "https://api.openai.com/v1"

# ルーティング後
base_url = "http://127.0.0.1:15721/v1"
```

**Gemini 設定の変更**：

```bash
# ルーティング前
GOOGLE_GEMINI_BASE_URL=https://generativelanguage.googleapis.com

# ルーティング後
GOOGLE_GEMINI_BASE_URL=http://127.0.0.1:15721
```

### リクエストの転送

ルーティングサービスがリクエストを受信すると：

1. リクエスト元を識別（Claude/Codex/Gemini）
2. そのアプリで現在有効なプロバイダーを検索
3. プロバイダーの実際のエンドポイントにリクエストを転送
4. リクエストログを記録
5. アプリにレスポンスを返却

## ルーティングステータスの表示

### メイン画面の表示

ルーティングを有効にすると、メイン画面に以下の変化があります：

- **ルーティング Logo の色**：無色から緑に変化
- **プロバイダーカード**：現在アクティブなプロバイダーに緑の枠が表示

### プロバイダーカードの状態

| 状態 | 枠の色 | 説明 |
|------|----------|------|
| 現在有効 | 青 | 設定ファイル内のプロバイダー（非ルーティングモード） |
| ルーティングアクティブ | 緑 | ルーティングが実際に使用しているプロバイダー |
| 通常 | デフォルト | 使用されていないプロバイダー |

## ルーティングの無効化

### 操作手順

1. ルーティングパネルで対応するアプリのルーティングスイッチをオフにする
2. またはルーティングサービスを直接停止

### 設定の復元

ルーティングを無効にすると、CC Switch は以下を実行します：

1. アプリの設定をルーティング前の状態に復元
2. 現在のリクエストログを保存

## ルーティングとプロバイダーの切り替え

### ルーティングモードでのプロバイダー切り替え

ルーティングモードでプロバイダーを切り替える場合：

1. メイン画面でプロバイダーの「有効化」ボタンをクリック
2. ルーティングサービスが新しいプロバイダーを使用してリクエストを即座に転送
3. **CLI ツールの再起動は不要**

これがルーティングモードの大きなメリットです：プロバイダーの切り替えが即座に反映されます。

### 非ルーティングモードでのプロバイダー切り替え

非ルーティングモードでプロバイダーを切り替える場合：

1. 設定ファイルを変更
2. CLI ツールの再起動が必要

## 複数アプリのルーティング

複数のアプリを同時にルーティングでき、それぞれ独立して管理されます：

- 独立したプロバイダー設定
- 独立したフェイルオーバーキュー
- 独立したリクエスト統計

## 使用シーン

### シーン 1：使用量の監視

ルーティング + ログ記録を有効にして、API の使用状況を監視します。

### シーン 2：素早い切り替え

ルーティングを有効にすると、プロバイダーの切り替えに CLI ツールの再起動が不要になります。

### シーン 3：フェイルオーバー

ルーティングの有効化はフェイルオーバー機能を使用するための前提条件です。

## 注意事項

### パフォーマンスへの影響

ルーティングにより少量のレイテンシ（通常 < 10ms）が追加されますが、ほとんどのシーンでは無視できます。

### ネットワーク要件

ルーティングモードでは、CLI ツールがローカルルーティングアドレスにアクセスできる必要があります。

### 設定のバックアップ

ルーティングを有効にする前に、CC Switch は元の設定をバックアップし、無効化時に復元します。

## よくある質問

### ルーティング後にリクエストが失敗する

確認事項：
- ルーティングサービスが正常に実行されているか
- プロバイダーの設定が正しいか
- ネットワークが正常か

### ルーティングを無効にしても設定が復元されない

考えられる原因：
- ルーティングサービスの異常終了
- 設定ファイルが他のプログラムに変更された

解決方法：
- プロバイダーを手動で編集して保存し直す
- または再度ルーティングを有効にしてから無効にする
