# 環境と変数 (/ja/docs/workspaces/environments)

変数は、ベースアドレス、ユーザー名、トークンなど、多くの場所で使う値につける名前です。リクエストの任意のフィールドに`{{name}}`と書くと、Echolotは送信時に値を入れます。環境は、Local、Staging、Productionなど、送信先ごとの値のセットです。環境を切り替えると、すべてのリクエストがそちらに向かいます。

## 変数を使う [#use-a-variable]

アドレス、ヘッダー、パラメータ、ボディ、認証のフィールド、設定に`{{name}}`と入力します。Alpenglowでは、すべてのアドレスが`{{baseURL}}`で始まります。

```
{{baseURL}}/products/{{productId}}
```

フィールドに`{{`と入力すると、そのリクエストで使える変数の一覧が表示されます。`{{$uuid}}`のような[動的な値](/docs/requests/dynamic-values)、日付、ハッシュ、ほかのリクエストのレスポンスの値も含まれます。変数が別の変数を含むこともできます。たとえば`baseURL`を`https://{{host}}/v1`にできます。

リクエストが解決できない名前はフィールド内で目印が付き、Echolotが理由を説明します。たとえば`{{productId}} is not defined`や`the secret {{token}} has no value on this Mac`です。

## 変数を定義する場所 [#where-variables-are-defined]

変数は、広いほうから近いほうへ、5つのレベルにあります。

| レベル | 編集する場所 | 保存先 |
| --- | --- | --- |
| **グローバル** | **環境 › グローバル** | このMacのみ（すべてのワークスペース共通）。 |
| **ワークスペース** | **環境 › ワークスペース**、または**ワークスペース設定… › 変数** | `workspace.toml` |
| **環境** | **環境 ›** 該当の環境 | `environments/<name>.toml` |
| **フォルダ** | **フォルダ設定… › 変数** | フォルダの`_folder.toml` |
| **リクエスト** | リクエストの**変数**タブ | リクエストのファイル |

シークレットでない値は、入力するとそれらのファイルに書き込まれます。シークレットの値は決して書き込まれません。[シークレット](/docs/workspaces/secrets)を参照してください。

## どの値が優先されるか [#which-value-wins]

同じ名前が複数のレベルで定義されている場合は、いちばん近いものが優先されます。

1. リクエスト自身の変数。
2. そのフォルダの変数、次に上位のフォルダの変数（近い順に外側へ）。
3. アクティブな環境の変数。
4. ワークスペースの変数。
5. グローバル。

つまり、ワークスペースがデフォルトを持ち、環境がそのサーバで異なる部分を変え、フォルダやリクエストが両方を上書きできます。オフにした変数（チェックボックスを外したもの）はスキップされ、次のレベルの値が使われます。

Alpenglowでは、ワークスペースの`baseURL`は`https://demo.echolot.dev/v1`です。**Staging**をアクティブにすると、Stagingも定義しているため`https://staging.alpenglow.example/v1`になります。**環境なし**のときは、リクエストはワークスペースの値を使い、デモAPIに送信されます。

スクリプトが実行中に設定した値（`pm.environment.set`など）は、それを実行したウインドウまたはコマンドの間だけ続き、ファイルには書き込まれません。[スクリプトとテスト](/docs/requests/scripts-and-tests)を参照してください。[レスポンスのキャプチャ](/docs/requests/captures)は異なり、取得した値をワークスペースまたは環境の変数に保存します。

## 環境を選ぶ [#choose-an-environment]

環境メニューは、すべてのページのページヘッダーにあります。アクティブな環境が点とともに表示されます。環境は緑、[保護された環境](/docs/workspaces/protected-environments)は赤、**環境なし**はグレーです。

クリックして環境を選びます。ワークスペースの値だけを使うには<strong>環境なし</strong>を選びます。<strong>環境を管理…</strong>は環境ページを開きます。

<Shot id="workspaces-environment-menu" alt="ページヘッダーで開いた環境メニュー。環境なし、Local、Staging、盾マーク付きのProductionが並んでいる" />

この選択は、ウインドウとこのMacに属します。ワークスペースには書き込まれないので、環境を選んでもファイルは変わらず、チームメンバーはそれぞれ自分の環境を選べます。Echolotはワークスペースごとにそれを記憶し、次に開いたときにもう一度選択します。

[ランナー](/docs/requests/runner)、フロー、[クイック送信](/docs/mac/quick-send)も、ウインドウのアクティブな環境を使います。コマンドラインでは、`--env`で環境を選びます。

```sh
echolot run Alpenglow.echolot --env staging
```

`--env`には、環境のファイル名（`.toml`を除いたもの）か、環境の名前を指定します。

## 環境ページ [#the-environments-page]

<strong>表示 › 環境</strong>（<kbd>⌥</kbd><kbd>⌘</kbd><kbd>E</kbd>）、または環境メニューの<strong>環境を管理…</strong>で開きます。左側には次のものがあります。

- **デフォルト**: **グローバル**と**ワークスペース**。
- **環境**: 1つにつき1行。**アクティブ**はウインドウが使っているもの、盾マークは保護された環境を示します。

行を選択すると、右側でその変数を編集できます。

<Shot id="workspaces-environments-page" alt="Stagingを選択した環境ページ。名前、保護のスイッチ、変数baseURL、wsURL、passwordが表示されている" />

### 環境を追加する [#add-an-environment]

1. 環境ページで、<strong>環境</strong>の横の<strong>+</strong>（<strong>環境を追加</strong>）をクリックします。
2. `New Environment`という名前の新しい環境が開きます。名前のフィールドに名前を入力して<kbd>↩</kbd>を押します。
3. このサーバで異なる変数を追加します。

各環境は`environments/`内の1つのファイルです。ページには、変数の下にその名前が`File: environments/staging.toml`のように表示されます。

### 変数を編集する [#edit-variables]

各行には次のものがあります。

| 列 | 内容 |
| --- | --- |
| チェックボックス | 変数を削除せずに、オンまたはオフにします。 |
| **名前** | `{{…}}`の中に書く名前。 |
| **値** | 値。シークレットの場合は、値をキーチェーンに保存するフィールド。 |
| **シークレット** | 値をファイルではなく、このMacのキーチェーンに保存します。[シークレット](/docs/workspaces/secrets)を参照してください。 |
| **−** | 変数を削除します。 |

**変数を追加**をクリックすると、新しい行が追加されます。Echolotは、入力が止まった少し後にテーブルを保存します。すべての変更は**編集 › 取り消す**で取り消せます。

環境に必要なのは、ワークスペースと異なる変数だけです。それ以外はすべて、ワークスペースのデフォルトから取られます。

### 環境の名前変更、保護、削除 [#rename-protect-or-delete-an-environment]

環境の上部には次のものがあります。

- 名前のフィールドで名前を変更します。ファイルの名前は変わらないので、そのファイルを参照しているものは引き続き見つかります。このページで追加した環境は`New Environment`として始まるため、あとでどんな名前にしても、ファイルは`new-environment.toml`のままです。`--env`には名前も指定できます。
- **保護**をオンにすると、その環境へのすべての送信が先に確認されます。[保護された環境](/docs/workspaces/protected-environments)を参照してください。
- **環境を削除…**は、確認してから、そのファイルをゴミ箱に入れます。アクティブだった場合、ウインドウは**環境なし**に切り替わります。

### グローバル変数 [#global-variables]

**グローバル**には、あなた自身のユーザー名など、このMacのすべてのワークスペースで使う変数を置きます。いちばん広いレベルで、同じ名前のワークスペース、環境、フォルダ、リクエストの変数に上書きされます。どのワークスペースにも含まれないので、チームメンバーやコマンドラインツールからは見えません。

## 値の出どころを確認する [#see-where-a-value-comes-from]

**表示 › 変数を表示**（<kbd>⌥</kbd><kbd>⌘</kbd><kbd>V</kbd>）は、変数パネルを開きます。現在のリクエストが参照できるすべての変数が、グローバル、ワークスペース、各環境、リクエストのフォルダ、リクエストの列に並びます。使用中の値には目印が付き、アクティブでない環境は比較用に表示されます。シークレットはマスクされたままです。列のタイトルをクリックすると、その編集場所に移動します。パネルをピン留めすると、ページの横の列として残せます。

<Shot id="workspaces-variables-panel" alt="Catalog › Get productの上に開いた変数パネル。ワークスペース、Local、Staging、Productionの列にbaseURLとproductIdが並び、使用中の値に目印が付いている" />

リクエストのフィールド内の`{{variable}}`にポインタを置くと、クイックルックが表示されます。値、どのレベルから来ているか、パネルをその変数の位置で開く<strong>すべての変数…</strong>が表示されます。
