# ランナー (/ja/docs/requests/runner)

ランナーはリクエストを順に送信し、どれが合格したかを知らせます。リクエストが合格するのは、応答が得られ、その[テストタブとスクリプト](/docs/requests/scripts-and-tests)のチェックがすべて成立したときです。
変更後にAPI全体を試すとき、同じリクエストを多くの入力で実行するとき、レポートを作るときに使います。

<Shot id="requests-runner-results" alt="Alpenglowワークスペース全体を実行した後のランナーページ。左に実行カード、リクエスト・成功・失敗・失敗したチェックの件数、ステータスコードと時間が並ぶ結果のリスト" />

## 実行を開始する [#start-a-run]

開始する方法はいくつかあります：

- サイドバーでフォルダを右クリックして<strong>フォルダを実行</strong>を、リクエストを右クリックして<strong>リクエストを実行</strong>を選びます。実行はすぐに始まり、ランナーのページが開きます。
- サイドバーで複数のフォルダやリクエストを選択して右クリックし、<strong>N件の項目を実行</strong>を選びます。
- コマンドパレットで<strong>ワークスペースを実行</strong>を選びます。
- ランナーのページを開き、実行を設定して<strong>実行</strong>を選びます。ランナーはサイドバーの<strong>テスト</strong>の下にあるほか、<strong>表示 › ランナー</strong>（<kbd>⌥</kbd><kbd>⌘</kbd><kbd>R</kbd>）でも開けます。

ランナーのページでは、<strong>実行</strong>カードに設定があります：

| 設定 | 内容 |
| --- | --- |
| <strong>対象</strong> | <strong>ワークスペース全体</strong>、<strong>フォルダ</strong>から選んだフォルダ、または<strong>1件のリクエスト</strong>から選んだ1つのリクエスト |
| <strong>環境</strong> | リクエストが解決される環境。ウインドウのほかの部分と同じです |
| <strong>データ</strong> | データファイルを選ぶ<strong>CSVまたはJSONを選択…</strong>：1行につき1回の反復 |
| <strong>反復</strong> | すべてを何回実行するか。1〜1000。データファイルがあると<strong>データ行ごとに1回</strong>と表示されます |
| <strong>遅延</strong> | リクエスト間の一時停止。0〜60,000 msを100刻みで |
| <strong>再試行回数</strong> | 失敗したリクエストの追加試行回数。0〜5 |
| <strong>同時実行数</strong> | 並行して実行する反復の数。1〜32。反復が複数あるときに表示されます |
| <strong>最初の失敗で停止</strong> | 最初に失敗したリクエストで実行を終了します |

<strong>実行</strong>（<kbd>⌘</kbd><kbd>R</kbd>）を選ぶと開始し、<strong>停止</strong>（<kbd>⌘</kbd><kbd>.</kbd>）で実行を途中で終了します。
保護された環境が有効な間、ボタンには環境名付きで<strong>Productionで実行…</strong>と表示され、実行は何かを送信する前に確認します。
[保護された環境](/docs/workspaces/protected-environments)を参照してください。

## 何がどの順に実行されるか [#what-runs-and-in-which-order]

リクエストはサイドバーの順に実行されます。フォルダのリクエストは上から下へ、その中のフォルダはその位置で実行されます。
各リクエストは、自分で送信したときとまったく同じように送信されます。変数、認証、スクリプト、チェックも同じです。
後のリクエストは、同じ実行内の前のリクエストのレスポンスを、[レスポンスの値](/docs/requests/dynamic-values)や、スクリプトまたは[キャプチャ](/docs/requests/captures)が設定する変数を通じて使えます。
たとえばAlpenglowワークスペースの実行では、最初に<strong>Auth › Sign in</strong>が送信され、<strong>Orders</strong>のリクエストが送信するトークンをキャプチャします。

すべての種類のリクエストを実行できます：

- HTTP、GraphQL、gRPCのリクエストとMCP呼び出しは、ほかのリクエストと同じように送信され、チェックされます。
- WebSocket、Socket.IO、MQTTのリクエストは、接続し、実行用に有効にしてある保存済みのメッセージ、イベント、パブリッシュを送信し（MQTTは有効なフィルタをサブスクライブします）、10秒間待ち受けて閉じます。
  メッセージログがレスポンスなので、<strong>ボディ</strong>に対するチェックを使えます。待ち受け時間を変えるには、リクエストファイルの`[settings]`で`stream-limit`（秒）を設定します。
- Server-Sent Eventsのストリームは、10秒間保持されてから終了します。

リクエスト前スクリプトは、`pm.execution.skipRequest()`でリクエストをスキップできます。結果には<strong>プリリクエストスクリプトによってスキップ</strong>と表示されます。
スクリプトは`pm.execution.setNextRequest("Request name")`で移動することも、`pm.execution.setNextRequest(null)`で実行を終了することもできます。
移動して戻り続ける実行は、1回の反復で10,000回送信した時点で停止されます。

## 反復とデータファイル [#iterations-and-data-files]

<strong>反復</strong>は、すべてをその回数だけ実行します。`{{$uuid}}`のような`{{$…}}`の値は毎回新しくなり、`pm.info.iteration`が何回目の反復かを示します（0から）。

データファイルを使うと、実行がデータ駆動になります。1行につき1回の反復で、各列が変数となり、リクエストは`{{sku}}`のように、ほかの変数と同じように使えます。スクリプトは`pm.iterationData.get("sku")`で行を読み取ります。

- <strong>CSV</strong>：変数名のヘッダー行に続いて、1反復につき1行。引用符、二重の引用符、引用符内の改行に対応しています。
- <strong>JSON</strong>：オブジェクトの配列。1反復につき1つのオブジェクト。

たとえば、`{{baseURL}}/products/{{sku}}`へのリクエストと、`$.sku`が`{{sku}}`と等しいというチェックに使う`skus.csv`：

```csv
sku,quantity
TNT-MH-2P,1
PCK-TIT-30,2
```

または、同じ内容のJSON：

```json
[
  { "sku": "TNT-MH-2P", "quantity": 1 },
  { "sku": "PCK-TIT-30", "quantity": 2 }
]
```

<strong>データ</strong>欄には、ファイル名と行数が表示されます。隣の×でファイルを外せます。

## 並列の反復 [#parallel-iterations]

反復が複数あるとき、<strong>同時実行数</strong>で複数の反復を並行して実行できます。1つの反復内のリクエストは順番どおりで、各反復はそれぞれのスクリプトが設定した変数を保持するため、
ある反復のトークンがほかの反復に漏れることはありません。反復同士が依存している場合や、サーバが呼び出し頻度を制限している場合は、<strong>1（1つずつ順番に）</strong>のままにします。

## 再試行、遅延、停止 [#retries-delays-and-stopping]

- <strong>再試行回数</strong>は、失敗したリクエストをその回数まで再送します。リクエストが失敗するのは、応答がないか、チェックが失敗したときです。
  結果には<strong>3回試行</strong>のように試行回数が表示され、最後の結果が保持されます。
- <strong>遅延</strong>は、レート制限のあるサーバ向けに、リクエスト間で待機します。[デモAPI](/docs/tutorials/demo-api)などです。
- <strong>最初の失敗で停止</strong>は、リクエストが（再試行の後に）失敗したとき、実行を終了します。概要には<strong>失敗で停止しました</strong>と表示されます。

## 結果 [#results]

実行中は、リストが埋まっていき、送信中のリクエストが表示されます。上には件数が並びます：<strong>リクエスト</strong>、<strong>成功</strong>、<strong>失敗</strong>、<strong>失敗したチェック</strong>、そして終了時には<strong>時間</strong>と、<strong>すべて成功</strong>または<strong>N件失敗</strong>です。

各行には、リクエストの種類またはメソッド、名前とアドレス、ステータス、時間が表示されます。反復が複数あると、`#2`のように、その行がどの反復かが分かります。
失敗したリクエストの下には、失敗したチェックが、それぞれのメッセージ付きで、またはレスポンスがなかった理由とともに表示されます。行をクリックするとリクエストが開きます。

ページは、ウインドウが開いている間、最新の実行を保持します。実行のやり取りはすべて、ランナーからのものとして印が付いて[履歴](/docs/workspaces/history)にも残ります。

## レポート [#reports]

実行後、<strong>結果</strong>カードの<strong>レポートを保存</strong>で、ファイルとして保存できます：

| 形式 | 用途 |
| --- | --- |
| <strong>JUnit XML…</strong> | CIシステムとテストのダッシュボード |
| <strong>JSON…</strong> | 独自のツール |
| <strong>HTML…</strong> | 読んだり共有したりするページ |
| <strong>HAR（すべてのやり取り）…</strong> | 実行のすべてのリクエストとレスポンス。ブラウザの開発者ツールやほかのHTTPツール向け |

JUnit、JSON、HTMLのレポートでは、含まれるアドレス、チェックの値とメッセージ、スクリプトのテストとログにあるシークレットがマスクされます。

## コマンドラインから実行する [#run-from-the-command-line]

`echolot run`は、CIとターミナル向けに、同じワークスペースを同じ設定で実行します。反復、データファイル、遅延、再試行、並列の反復、同じレポート形式に対応しています。
[echolot run](/docs/cli/run)と[CIでの実行](/docs/cli/ci)を参照してください。
