# 書き出し (/ja/docs/workspaces/exporting)

ワークスペースまたはそのフォルダを書き出すと、ほかのツールを使う人に渡したり、別のMacにコピーを渡したりできます。Echolotは4つの形式で書き出せます。Echolotワークスペース、Postman Collection v2.1、Insomnia v5ファイル、Brunoコレクションです。シークレットの値は、キーチェーンの外には出ません。

## ワークスペースまたはフォルダを書き出す [#export-a-workspace-or-a-folder]

1. 書き出しを開始します。
   - ワークスペース全体: <strong>ファイル › ワークスペースを書き出す…</strong>（<kbd>⇧</kbd><kbd>⌘</kbd><kbd>E</kbd>）、またはサイドバーの<strong>リクエスト</strong>の横にある<strong>+</strong>メニューの<strong>ワークスペースを書き出す…</strong>。
   - 1つのフォルダ: フォルダをControlキーを押しながらクリックして<strong>フォルダを書き出す…</strong>を選ぶか、フォルダを選択して<strong>ファイル › フォルダを書き出す…</strong>を選びます。
2. 形式を選びます。各形式には、リクエストをいくつ含められるかが表示されます。
3. 環境も書き出すには**環境を含める**にチェックを入れたままにします。含めない場合は、チェックを外します。
4. <strong>書き出す…</strong>をクリックし、保存先を選んで、<strong>書き出す</strong>をクリックします。

Echolotは形式を提案します。すべてのリクエストを含められる場合はPostman、そうでなければ最も多く含められる形式、ほかのどの形式でも1件も含められない場合はEcholotワークスペースです。リクエストを1件も含められない形式は、選べません。

<Shot id="workspaces-export-sheet" alt="Alpenglowのワークスペースを書き出すシート。4つの形式が並び、Postman Collection v2.1が選択されている。29件のリクエストのうち、各形式がいくつ含められるかと、含まれない種類が表示されている" />

## 形式 [#the-formats]

| 形式 | 用途 | 含められるリクエストの種類 | 書き出される形 |
| --- | --- | --- | --- |
| **Echolotワークスペース** | 「あらゆる種類のリクエストを含むすべて。別のMacやチームメンバー向けです。」 | すべて | ワークスペースのフォルダ（`.echolot`） |
| **Postman Collection v2.1** | 「ほとんどのAPIツールが読み込める形式：Postman、Insomnia、Bruno、Hoppscotch、Apidog。」 | HTTP、GraphQL | `.postman_collection.json`ファイル。環境も含める場合はフォルダ |
| **Insomnia v5** | 「Insomnia 10以降用の1つのYAMLファイル（環境を含む）。」 | HTTP、GraphQL、WebSocket、Socket.IO、gRPC | `.yaml`ファイル |
| **Brunoコレクション** | 「Gitで管理し、Brunoで開ける.bruファイルのフォルダ。」 | HTTP、GraphQL | フォルダ |

MQTTリクエストと保存済みのMCP呼び出しは、Echolotワークスペースにだけ入ります。書き出す前に、各形式が含められない種類が表示されます。Alpenglowの場合、Postmanには「29件中21件のリクエスト · MCP、MQTT、Socket.IO、WebSocket、gRPCは含まれません」と表示されます。

## フォルダに含まれるもの [#what-a-folder-takes-with-it]

フォルダは、継承しているものと一緒に書き出されます。ワークスペースと、それを囲むフォルダの変数、認証、スクリプトです。そのため、リクエストは、Echolotで送信する内容と同じものを、ほかのツールでも送信します。

## レポート [#the-report]

書き出しの後、シートには書き出された内容が表示されます。たとえば「21件のリクエスト、7個のフォルダ、3個の環境をPostman Collection v2.1として…に書き出しました。」のようにです。伝えることがある場合は、次の2つのリストが続きます。

- **除外**: その形式に入れる場所がないすべてのリクエストと、その理由（「Postman Collection v2.1にはMQTTリクエストを入れる場所がありません。」）。
- **書き出し時に変更**: 異なる内容で書き出されたすべての部分。

<Shot id="workspaces-export-report" alt="AlpenglowをPostmanに書き出した後の書き出しレポート。除外には8件のgRPC、WebSocket、Socket.IO、MQTT、MCPのリクエストが、書き出し時に変更にはキャプチャ、動的な値、平文で書き出されたシークレットが一覧表示されている" />

書き出したものを確認するには**Finderに表示**をクリックします。閉じるには**閉じる**をクリックします。

Postman、Insomnia、Brunoで通常変わるものは次のとおりです。

- **レスポンスのキャプチャ**は書き出されません。ほかのツールでは、スクリプトから変数を設定します。
- **リクエストごとの設定**（タイムアウト、TLS、リダイレクト、HTTPバージョン）は、その形式に同じ設定がある場合を除き、書き出されません。
- **チェック**は、同等のものがあるツールではそのツールのテストになります。ないものは、JSON Schema、OpenAPI、JSONPathフィルタのチェックなど、レポートに件数が表示されます。
- **スクリプト**は、Postmanの`pm` API向けに書かれています。Postmanにはそのまま渡され、Insomnia向けでは`insomnia`に置き換わり、Bruno向けはそのまま渡されますが、BrunoのAPIに合わせて編集が必要なことがあります。
- ほかのツールに同等のものがない**動的な値**は、書かれたまま残されます。そこに送信する前に置き換えてください。
- **ファイルのボディ**は、あなたのMac上のファイルのパスを指します。コレクションを開いた先で、ファイルを選び直してください。
- ほかのツールにない**認証**は、除外されるか変更され、レポートにその名前が表示されます。
- WebSocket経由の**GraphQLサブスクリプション**は通常のGraphQLリクエストになり、GraphQLのファイルアップロードは書き出されません。

## シークレットは手元に残る [#secrets-stay-home]

シークレット変数は、どの形式でも、値なしで名前だけが書き出されます。書き出しを開いた人が、自分のツールで値を設定します。

シークレット変数に入れずに、認証やヘッダーのフィールドに直接入力したパスワード、トークン、キーは、平文で書き出されます。レポートにはその件数が表示されます。「パスワード、トークン、キーが1件、平文で書き出されます…」。Alpenglowでは、**Auth › Orders with OAuth 2**のOAuth 2.0クライアントシークレットがこれに当たります。ファイルを共有する前に、そのような値をキーチェーンに移してください。[シークレット](/docs/workspaces/secrets)を参照してください。

## Echolotワークスペースのコピー [#an-echolot-workspace-copy]

**Echolotワークスペース**としての書き出しは、独自のIDを持つ新しいワークスペースになるので、キーチェーンのシークレットをあなたのものと共有しません。

- ワークスペース全体では、すべてが含まれます。リクエスト、環境、MCPサーバ、仕様、モック、フロー、共有したアシスタントの会話です。
- フォルダでは、環境、MCPサーバ、仕様が含まれ、フォルダの位置が保たれます。その上位のフォルダも、次の1つ下のフォルダだけを持つ形で含まれるので、継承される内容とリクエスト間の参照は変わりません。フロー、モック、共有したアシスタントの会話はワークスペースに残り、レポートにそのことが表示されます。

Git自身のフォルダと、Finderの`.DS_Store`ファイルはコピーされません。

## 書き出せる場所 [#where-an-export-may-go]

Echolotは、書き出しを、元のワークスペースの上、中、周囲に書き込むことはありません。すでに存在するファイルまたはフォルダを選んだ場合、Echolotは古いものをゴミ箱に入れ、その場所に書き出しを書き込みます。

## コマンドラインで [#on-the-command-line]

`echolot export`は、同じ形式で書き出します。

```sh
echolot export alpenglow.postman_collection.json -w Alpenglow.echolot --format postman
echolot export orders-bruno -w Alpenglow.echolot --format bruno --folder orders --no-environments
```

`--format`は`echolot`、`postman`、`insomnia`、`bruno`のいずれかです。形式に入れる場所がないものは、標準エラー出力に名前が表示されます。[読み込みと書き出し](/docs/cli/import-export)を参照してください。

## リクエストをコードとしてコピーする [#copy-a-request-as-code]

リクエストページで、開いているリクエストについて、次の操作ができます。

- **リクエスト › cURLとしてコピー**（<kbd>⌥</kbd><kbd>⌘</kbd><kbd>C</kbd>）は、変数とシークレットを解決した`curl`コマンドを、ペーストボードに入れます。
- <strong>リクエスト › コードを生成…</strong>（<kbd>⌥</kbd><kbd>⌘</kbd><kbd>G</kbd>）は、変数を解決したリクエストをコードとして表示します。スクリプトは実行されず、シークレットはそのまま表示されます。言語を選び、<strong>コピー</strong>または<strong>保存…</strong>を選びます。

コードの生成は、cURL、Swift（URLSession）、JavaScript（fetchとaxios）、TypeScript（fetch）、Python（requestsとhttpx）、Go（net/http）、Kotlin（OkHttp）、Java（HttpClient）、C#（HttpClient）、PHP（cURL）、Rust（reqwest）に対応しています。

言語を追加するには、**テンプレートフォルダを開く**をクリックして、そこに`.template`ファイルを置きます。1行目にコメントとして、一覧に表示される名前を書きます。`{{! Ruby · Net::HTTP }}`のようにです。`python-requests.template`など、組み込みのものと同じファイル名のテンプレートは、それを置き換えます。

<Callout type="warn">
  コードとcURLコマンドには、リクエストのシークレットが平文で含まれます。ほかの人に読める場所にペーストしないでください。
</Callout>

## やり取りをHARとして書き出す [#export-an-exchange-as-har]

1つのやり取りを、起きたとおりに保存または共有するには、<strong>リクエスト › やり取りをHARとして書き出す…</strong>を選ぶか、レスポンスボディの上にある保存メニューの<strong>やり取りをHARとして書き出す…</strong>を選びます。HARファイルには、リクエストとレスポンスが含まれます。

[ランナー](/docs/requests/runner)は、実行のすべてのやり取りを1つのHARファイルに書き出します。コマンドラインでは`echolot run --reporter har`が同じことをします。

レスポンスボディの上の保存メニューには、**ボディを保存…**、**デフォルトのアプリで開く**もあり、圧縮されたレスポンスやgRPCのレスポンスでは**エンコードされたボディを保存…**（届いたままのバイト列）もあります。

仕様は、[仕様](/docs/specs)ページから書き出します。
