コンボリプレイ使用ガイド

ドキュメントバージョン:20260729

本ドキュメントが対応するアプリバージョン:

  • iOS:>= 3.13
  • Android:>= 1.2.0

コンボリプレイ(Combo Replay)は、複数の HTTP/HTTPS リクエストを1つの「フロー」として編成し、依存関係に基づいて自動的に直列または並列実行します。API 連携テスト、回帰テスト、同一 API の異なる入力値の一括検証などに適しています。

ApiCatcher | コンボリプレイの使用シーン

1. 機能概要

機能説明
複数リクエストの編成キャプチャ履歴からリクエストを選択し、キャンバス上で組み合わせ
同一 API の複数ノード同一エンドポイントを複数回追加でき、各ノードで独立したプリセットパラメータを設定
依存関係実行順序を制御(例:ログイン後に業務 API を呼び出し)
依存性注入上流レスポンスの token などを下流リクエストに自動入力
式注入タイムスタンプや UUID を動的生成、またはグローバル変数を使用
手動実行ワンタップでリプレイし、各ノードのリクエスト/レスポンス詳細を確認
スケジュールタスクCron またはカスタム間隔で自動実行

2. クイックスタート

ステップ 1:まずキャプチャ

コンボリプレイのリクエストはキャプチャ履歴から取得します。先にアプリで HTTP/HTTPS リクエストを通常通りキャプチャしてください(WebSocket リクエストは追加できません)。

ステップ 2:ルールを作成

  1. コンボリプレイ リストを開く
  2. + をタップしてコンボリプレイルールを追加
  3. ルール名を入力(必須、デフォルトは Combo Replay 260729 のような形式)
  4. 右下の + をタップしてキャンバスにリクエストを追加
  5. リストから必要なリクエストを選択

ApiCatcher | コンボリプレイルール作成手順

ステップ 3:実行

  1. ルールを保存(編集画面右上の ✓)
  2. リストで ルール名をタップ して実行画面を開く
  3. リプレイ実行 をタップ

実行完了後、ノードに成功/失敗の状態が表示されます。ノードをタップすると詳細を確認できます。

ApiCatcher | コンボリプレイルールの実行

3. ルール管理

3.1 リスト情報

各ルールカードには以下が表示されます:

  • ルール名
  • ノード数
  • パスプレビュー(最大3件)
  • 依存関係数、パラメータマッピング数
  • 最終更新日時

3.2 作成 / 編集 / 削除

操作方法
作成リスト画面ナビゲーションバーの +
編集左スワイプ → 編集
削除左スワイプ → 削除
保存編集画面右上の

ルールはローカルに保存されます。アプリのアンインストールやデータ削除で失われます。

ApiCatcher | コンボリプレイルールリスト

4. コンボルールの編集

4.1 リクエストの追加

  • 画面右下の + フローティングボタンをタップ
  • URL / Method で検索可能
  • Session、Host、タイプ、ステータスコードでフィルタ

同一 API を複数回追加可能:例として /api/order ノードを3つ追加し、正常系、境界値、異常パラメータをそれぞれテスト。

4.2 ノードメニュー

ノードをタップするとメニューが表示されます:

メニュー機能
依存関係を設定リンクモードに入り、対象ノードをタップして依存関係を作成
プリセットパラメータリクエストの Query / Header / Body を編集(実行画面でも変更可能だが、実行画面での変更は一時的)
依存性注入上流レスポンス → 下流リクエストのパラメータマッピングを設定
削除ノードと関連する依存関係、マッピングを削除

ノードをドラッグ して位置を調整;空白部分をタップ して選択解除またはリンクモードを終了。

ApiCatcher | 依存関係の作成と依存性注入の設定

5. プリセットパラメータ

ルール編集段階 で各ノードのテストデータを固定するために使用。特に「同一 API、異なる入力値」のシナリオに適しています。

5.1 操作手順

  1. ノードをタップ → プリセットパラメータ
  2. クエリパラメータ / リクエストヘッダー / リクエストボディ をそれぞれ編集
  3. すべて編集後、プリセットパラメータシート右上の をタップしてルールに保存

5.2 実行画面の「リクエストを変更」との違い

プリセットパラメータ(編集画面)リクエストを変更(実行画面)
入口ノードメニュー → プリセットパラメータ実行画面でノードをタップ
永続化ルールに保存、次回も残る今回の実行のみ、ルールには書き戻さない
用途固定テストケース一時的な調整後に再実行

5.3 典型的な使い方:同一 API の複数シナリオ

ノード A: POST /api/login     → body: 正常なアカウント
ノード B: POST /api/login     → body: パスワード誤り
ノード C: POST /api/login     → body: 空パスワード
(3ノードに依存関係なし → 並列実行)

5.4 式注入のサポート

参照:【8. 式注入】

ApiCatcher | プリセットパラメータ

6. 依存関係

6.1 意味

接続 A → B は:A は B に依存B が先に実行され、A が後に実行されることを意味します。

矢印は 下流(A) から 上流(B) へ向かいます。

6.2 依存関係の作成

  1. 下流ノード をタップ → 依存関係を設定
  2. 上部に青いヒントが表示:「対象ノードをタップして依存関係を作成」
  3. 上流ノード をタップ
  4. 接続線が表示される

6.3 制限

  • 同一の依存関係を重複して作成できない
  • ループ を形成できない
  • 接続線を削除すると、関連する パラメータマッピング も削除される

6.4 実行順序のイメージ

        ┌─ ノード B ─┐
ノード A ─┤            ├─ 並列(同一レイヤー)
        └─ ノード C ─┘
              ↓
           ノード D(A、C が両方成功した後に実行)
  • 同一レイヤー(相互依存なし):並列実行
  • 異なるレイヤー(依存関係あり):直列実行、前のレイヤーがすべて成功してから次のレイヤーを実行
  • いずれかのレイヤーで失敗:以降のすべてのノードが スキップ とマーク

7. 依存性注入(パラメータマッピング)

上流レスポンスの token、userId などを下流リクエストに自動入力するために使用します。

7.1 前提条件

対象ノードには 少なくとも1つの上流依存関係 が必要です。ない場合は「上流ノードがありません。先に依存関係を作成してください」と表示されます。

7.2 設定手順

  1. 下流ノード をタップ → 依存性注入
  2. マッピングを追加 をタップし、以下を設定:
設定項目説明
ソースノードどの上流からレスポンスを取得するかログインノード
上流レスポンスから抽出レスポンスヘッダー / レスポンスボディの JSON パスdata.token
リクエストへ注入リクエストヘッダー / クエリパラメータ / リクエストボディヘッダー Authorization
オプションのプレフィックス注入値の前に付加する文字列Bearer
  1. マッピングを保存

ApiCatcher | 依存性注入

7.3 典型的なシナリオ:ログイン + Token 付きリクエスト

[ログイン POST /login] ──→ [ユーザー情報取得 GET /user/profile]
         │                            ↑
    レスポンス: data.token    Authorization = Bearer ${注入された token}
  1. 2つのリクエストを追加
  2. GET /user/profile で → 依存関係を設定POST /login をタップ
  3. GET /user/profile で → 依存性注入
    • ソース:ログインノード、レスポンスボディ data.token
    • ターゲット:ヘッダー Authorization
    • プレフィックス:Bearer

7.4 実行時の処理順序

プリセットパラメータ / リクエスト変更
        ↓
   式注入(${method.timestamp()} など)
        ↓
   依存性注入(パラメータマッピング)
        ↓
     HTTP リクエスト送信

8. 式注入

リクエストヘッダー、クエリパラメータ、リクエストボディ${...} 式を記述すると、実行時に自動置換されます。

8.1 組み込みメソッド

置換結果
${method.timestamp()}現在のタイムスタンプ(ミリ秒)
${method.uuid()}UUID(小文字)
${method.date()}日付、例:2026-07-29
${method.time()}時刻、例:14:30:00
${method.datetime()}日時、例:2026-07-29 14:30:00

例:

{
  "requestId": "${method.uuid()}",
  "timestamp": "${method.timestamp()}",
  "date": "${method.date()}"
}

8.2 グローバル変数

${token}${appId} など method. で始まらない式はグローバル変数です。

設定方法(実行画面):

  1. ルール内の任意のノードで ${variableName} 式を使用
  2. 実行画面のステータスバー右側に 🌐 ボタンが表示される
  3. タップして各変数の値を入力
  4. 保存後 ルールと一緒に永続化(ルール削除時にクリア)

プリセットパラメータ、実行画面の「リクエストを変更」はいずれも式構文をサポート;実際の置換は「リプレイ実行」をタップした時点で行われます

8.3 組み合わせ例

Header:  X-Request-Id: ${method.uuid()}
Query:   ts=${method.timestamp()}
Body:    {"token": "${token}", "userId": "123"}

実行前に 🌐 で token の実際の値を入力してください。

ApiCatcher | 式注入

9. 実行画面

9.1 画面構成

ApiCatcher | 実行画面

9.2 実行前

  • ノードをタップリクエストを変更(今回の実行のみ、ルールには書き戻さない)
  • グローバル変数式がある場合 → 🌐 をタップして変数値を入力

9.3 実行後

  • ノードをタップ実行詳細(実際に送信されたリクエスト、レスポンス、所要時間、エラー情報)
  • ナビゲーションバーの リセット(赤):すべての結果をクリアし、再編集・再実行可能

9.4 ノードの状態

状態意味
灰色の円実行待ち
青色のプログレス実行中
緑色 ✓成功(HTTP 2xx)
赤色 ✗失敗
オレンジ色 −スキップ(上流が失敗)

9.5 成功判定

HTTP ステータスコード 200–299 を成功とみなし、それ以外は失敗とみなします。

10. 典型的なシナリオ集

シナリオ 1:同一 API の複数入力値を並列テスト

POST /api/order  ノード1  body: {"type":"normal"}
POST /api/order  ノード2  body: {"type":"edge"}
POST /api/order  ノード3  body: {"type":"invalid"}
  • 依存関係を作成しない → 3ノードが並列実行
  • 各ノードで プリセットパラメータ により異なる body を設定
  • 実行後に各ノードの結果を比較

シナリオ 2:ログインチェーン呼び出し

POST /login  →  GET /user  →  POST /order
     │              ↑              ↑
     └──── token を Authorization に注入 ─┘
  • 依存関係を設定:GET /userPOST /login に依存、POST /orderGET /user に依存
  • GET /userPOST /order で token マッピングを設定
  • 直列実行:ログイン → ユーザー情報取得 → 注文

シナリオ 3:動的パラメータ + 固定 Token

  • Body に記述:{"ts":"${method.timestamp()}","id":"${method.uuid()}"}
  • Header に記述:Authorization: Bearer ${token}
  • 実行前に 🌐 で token を入力
  • 実行のたびにタイムスタンプと UUID が自動更新

11. よくある質問

Q:リクエストを追加したのに実行画面が空?
A:編集画面で をタップしてルールを保存し、リストから実行画面を開いてください。

Q:プリセットパラメータを変更したのに実行画面に反映されない?
A:編集画面でルールが保存されているか確認してください。実行画面の「リクエストを変更」は今回の実行にのみ影響し、プリセットパラメータを上書きしません。

Q:依存性注入が効かない?
A:確認事項:① 依存関係が作成されているか;② JSON パスがサンプルレスポンスと一致しているか;③ 上流ノードが成功したか;④ 式注入は依存性注入より先に実行されるため、順序に注意。

Q:グローバル変数が空に置換される?
A:実行画面で 🌐 をタップして変数値を入力・保存する必要があります。未入力の場合は空文字列に置換されます。

Q:なぜ一部のノードがスキップされる?
A:同一レイヤーまたは上流ノードの実行が失敗した場合、後続レイヤーのすべてのノードが「スキップ」とマークされます。

Q:WebSocket リクエストは追加できる?
A:できません。通常の HTTP/HTTPS リクエストのみサポートしています。

12. 操作早見表

やりたいこと操作方法
新規ルール作成リスト + → 名前入力 → リクエスト追加 →
同一 API で複数パラメータをテスト同一リクエストを複数回追加 → 各ノードで プリセットパラメータ
実行順序を制御依存関係を設定 → 上流ノードをタップ
token を自動付与依存性注入 でマッピング設定
動的タイムスタンプ/UUIDパラメータに ${method.timestamp()} などを記述
token などを共有設定${token} を記述 → 実行画面 🌐 で入力
一時的にパラメータを変更して再実行実行画面でノードをタップ → リクエストを変更
リクエスト詳細を確認実行後にノードをタップ
再実行リセットリプレイ実行