# 動的な値 (/ja/docs/reference/dynamic-values)

動的な値は、`{{ }}`の中に書く関数です。`{{$uuid}}`、`{{$base64('heidi:alpenglow')}}`、`{{$responseJSONPath('auth/sign-in', '$.access_token')}}`などがあります。
Echolotはリクエストの送信時にその値を求めます。動的な値は、変数が使える場所ならどこでも使えます。URL、ヘッダー、ボディ、認証フィールド、メッセージ、設定です。
アプリでの選び方と編集の仕方は、[動的な値](/docs/requests/dynamic-values)を参照してください。

## 書き方 [#writing-them]

- 動的な値は`$`で始まります：`{{$timestamp}}`。引数がない場合、括弧は省略できます。
- 引数は括弧の中にカンマで区切って書きます。引用符で囲んだテキスト（`'…'`または`"…"`）、数値、引用符なしの変数名、ほかの動的な値を使えます。
- テキストの引数には、それ自身のトークンを含められます：`{{$base64('{{email}}:{{password}}')}}`。引用符の中の`}}`でトークンは終わりません。
- 解析できないものは書いたままになり、報告されるため、余分な`{{`でリクエストが壊れることはありません。

```text
{{$sha256('{{body}}', 'base64')}}
{{$date('yyyy-MM-dd', -86400, 'Europe/Zurich')}}
{{$hmacSha256(apiSecret, $timestamp)}}
```

## レスポンス [#responses]

これらは、別の保存済みのリクエストの最新のレスポンスを、そのパス（`folder/request`。たとえば`auth/sign-in`）で指定して読み取ります。
どれも、そのリクエストを先に送信するかどうかを指定する、省略可能な最後の引数を取ります。

| 最後の引数 | 意味 |
| --- | --- |
| `'if-missing'`（デフォルト） | まだレスポンスがない場合に、先に送信します。 |
| `'fresh'` | 毎回、先に送信します。ランでは、1回の実行につき1度です。 |
| `'latest'` | 送信せず、最新のレスポンスを使います。 |

| 値 | 引数 | 得られるもの |
| --- | --- | --- |
| `$responseJSONPath` | リクエスト、JSONPath | JSONPathで選んだ、レスポンスボディの値。`{{$responseJSONPath('auth/sign-in', '$.access_token')}}` |
| `$responseKeyPath` | リクエスト、キーのパス | `data.items.0.id`のようなキーのパスで選んだ値。`{{$responseKeyPath('orders/list-orders', 'items.0.id')}}` |
| `$responseJq` | リクエスト、jqフィルタ | jqフィルタがボディから作った結果。複数の結果は1行に1つずつ。`{{$responseJq('catalog/list-products', '.items[0].sku')}}` |
| `$responseXPath` | リクエスト、XPath | XMLレスポンスの値。`{{$responseXPath('echo/xml', '/catalog/product[1]/@sku')}}` |
| `$responseRegex` | リクエスト、パターン | ボディ内の正規表現の最初の一致。グループがあれば、その最初のグループ。`{{$responseRegex('echo/html', '<title>(\\w+)</title>')}}` |
| `$responseHeader` | リクエスト、ヘッダー | レスポンスヘッダー。`{{$responseHeader('orders/create-order', 'Location')}}` |
| `$responseCookie` | リクエスト、Cookie | レスポンスが設定したCookieの値。`{{$responseCookie('echo/set-cookie', 'flavour')}}` |
| `$responseStatus` | リクエスト | ステータスコード。`{{$responseStatus('auth/sign-in')}}` |
| `$responseBody` | リクエスト | ボディ全体をテキストで。`{{$responseBody('auth/who-am-i')}}` |
| `$responseBodyLength` | リクエスト | ボディのバイト数。`{{$responseBodyLength('catalog/export')}}` |
| `$response` | リクエスト、クエリ | クエリの形式で、上記のいずれか。JSONPath（`$.token`）、XPath（`/a/b`、または`xpath:…`）、`regex:…`、`jq:…`、`keypath:…`、`header:Name`、`cookie:Name`。`{{$response('auth/sign-in', 'header:Content-Type')}}` |

たとえば、**Who am I**は、必要なら先に送信して、**Sign in**から直接トークンを取得できます。

```text
Authorization: Bearer {{$responseJSONPath('auth/sign-in', '$.access_token')}}
```

別のリクエストのレスポンスを循環して読み取るリクエストは、循環の経路を示して拒否されます。
リクエスト間で値を受け渡すもう1つの方法は、[レスポンスのキャプチャ](/docs/requests/captures)です。

## リクエスト [#requests]

これらは、送信されるとおりに解決されたリクエストを読み取ります。最初の引数は保存済みのリクエストのパスで、送信中のリクエストを指す場合は空（`''`）にします。

| 値 | 引数 | 得られるもの |
| --- | --- | --- |
| `$requestURL` | リクエスト | 解決されたURL。`{{$requestURL('')}}` |
| `$requestMethod` | リクエスト | メソッド。`{{$requestMethod('')}}` |
| `$requestHeader` | リクエスト、ヘッダー | 解決されたヘッダー（認証が追加するものを含む）。`{{$requestHeader('', 'Content-Type')}}` |
| `$requestQuery` | リクエスト、パラメータ | URLのクエリパラメータ（デコード済み）。`{{$requestQuery('', 'page')}}` |
| `$requestBody` | リクエスト | 解決されたボディをテキストで。`{{$requestBody('')}}` |
| `$requestJSONPath` | リクエスト、JSONPath | JSONボディの値。`{{$requestJSONPath('orders/create-order', '$.lines[0].sku')}}` |
| `$requestJq` | リクエスト、jqフィルタ | jqフィルタがJSONボディから作った結果。`{{$requestJq('', '.lines[0].quantity')}}` |
| `$requestVariable` | リクエスト、変数 | そのリクエストから見た変数。`{{$requestVariable('auth/sign-in', 'email')}}` |

リクエストが送信する内容で署名するのが、典型的な使い方です。

```text
X-Signature: {{$hmacSha256(apiSecret, $requestBody(''))}}
```

## エンコード [#encoding]

| 値 | 引数 | 得られるもの |
| --- | --- | --- |
| `$base64` | テキスト | Base64にしたテキスト。`{{$base64('heidi:alpenglow')}}` |
| `$base64Decode` | Base64 | Base64またはBase64URLをデコードしたテキスト。`{{$base64Decode('aGVpZGk=')}}` |
| `$base64Url` | テキスト | パディングなしのBase64URLにしたテキスト。`{{$base64Url('{"alg":"none"}')}}` |
| `$urlEncode` | テキスト | URLの構成要素としてパーセントエンコードしたテキスト。`{{$urlEncode('ultralight tent')}}` |
| `$urlDecode` | テキスト | パーセントエンコードされたテキストをデコードします。`+`は`+`のままです。`{{$urlDecode('ultralight%20tent')}}` |
| `$hex` | テキスト | テキストのUTF-8バイトを16進数にしたもの。`{{$hex('Grüezi')}}` |
| `$hexDecode` | 16進数 | 16進数をデコードしたテキスト。`{{$hexDecode('6869')}}` |
| `$jsonEscape` | テキスト | JSON文字列の中に入れられるようにエスケープしたテキスト（引用符は含みません）。`{{$jsonEscape(note)}}` |
| `$newline` | なし | ラインフィード（`\n`）。 |
| `$cr` | なし | キャリッジリターン（`\r`）。 |
| `$crlf` | なし | キャリッジリターンとラインフィード（`\r\n`）。 |
| `$tab` | なし | タブ。 |
| `$unescape` | シーケンス | エスケープシーケンスを文字に変換したテキスト：`\n`、`\r`、`\t`、`\0`、`\\`、`\xHH`、`\uHHHH`。`{{$unescape('café')}}` |
| `$basicAuth` | ユーザー、パスワード | HTTP Basic用の`Authorization`の値：`Basic `と`user:password`のBase64。`{{$basicAuth(email, password)}}` |
| `$jwt` | ペイロード、シークレット、アルゴリズム（省略可） | JSONペイロードをシークレットで署名したJWT。`HS384`または`HS512`を選ばない限り`HS256`。`{{$jwt('{"sub": "heidi"}', jwtSecret)}}` |

## ハッシュと署名 [#hashes-and-signatures]

各ハッシュはテキストと、必要に応じて出力形式（`'hex'`（デフォルト）、`'base64'`、`'base64url'`）を取ります。各HMACはキー、メッセージ、そして必要に応じて出力形式を取ります。

| 値 | 引数 | 得られるもの |
| --- | --- | --- |
| `$md5` | テキスト、出力 | テキストのMD5。`{{$md5('alpenglow')}}` |
| `$sha1` | テキスト、出力 | SHA-1。`{{$sha1('alpenglow')}}` |
| `$sha224` | テキスト、出力 | SHA-224。 |
| `$sha256` | テキスト、出力 | SHA-256。`{{$sha256($requestBody(''), 'base64')}}` |
| `$sha384` | テキスト、出力 | SHA-384。 |
| `$sha512` | テキスト、出力 | SHA-512。 |
| `$hmacMd5` | キー、メッセージ、出力 | キーを使ったメッセージのHMAC-MD5。 |
| `$hmacSha1` | キー、メッセージ、出力 | HMAC-SHA1。 |
| `$hmacSha224` | キー、メッセージ、出力 | HMAC-SHA224。 |
| `$hmacSha256` | キー、メッセージ、出力 | HMAC-SHA256。`{{$hmacSha256(apiSecret, $timestamp)}}` |
| `$hmacSha384` | キー、メッセージ、出力 | HMAC-SHA384。 |
| `$hmacSha512` | キー、メッセージ、出力 | HMAC-SHA512。 |

## 時刻 [#time]

これらはすべて、リクエストを送信する時点の時刻です。

| 値 | 引数 | 得られるもの |
| --- | --- | --- |
| `$timestamp` | なし | 秒単位のUnix時間：`1793525000`。 |
| `$timestampMs` | なし | ミリ秒単位のUnix時間：`1793525000123`。 |
| `$isoTimestamp` | なし | UTCのISO 8601形式（ミリ秒付き）：`2026-11-01T09:30:00.123Z`。 |
| `$httpDate` | なし | `Date`や`If-Modified-Since`用のHTTP日付：`Sun, 01 Nov 2026 09:30:00 GMT`。 |
| `$date` | フォーマット、秒単位のオフセット（省略可）、タイムゾーン（省略可） | Unixの日付パターンで表した時刻。オフセット分だけずらし、指定したタイムゾーン（指定がなければUTC）で表します。`{{$date('yyyy-MM-dd')}}`、`{{$date('yyyy-MM-dd HH:mm', 3600, 'Europe/Zurich')}}` |

## ランダム [#random]

送信のたびに新しい値になります。

| 値 | 引数 | 得られるもの |
| --- | --- | --- |
| `$uuid` | なし | ランダムなUUID（小文字）。`$guid`と`$randomUUID`も同じです。`{{$uuid}}` |
| `$randomInt` | 最小値、最大値 | 2つの値の間（両端を含む）の整数。引数が1つなら0からその値まで、なければ0から1000。`{{$randomInt(1, 5)}}` |
| `$randomString` | 長さ、文字（省略可） | ランダムな文字列。長さの指定がなければ16（最大4096）。英数字、または指定した文字から作られます。`{{$randomString(8, 'ABCDEF0123456789')}}` |
| `$randomHex` | バイト数 | ランダムなバイト列を16進数にしたもの。指定がなければ16バイト（最大2048）で、桁数はその2倍です。`{{$randomHex(8)}}` |

Alpenglowの**Create order**は`Idempotency-Key: {{$uuid}}`を送信するので、送信される注文はそのつど新しいものになります。

## ダミーデータ [#fake-data]

リクエストボディ、テストデータ、[モックのルート](/docs/mocks/routes#bodies-with-fake-data)用の作り物の値です。名前、住所、会社、価格、日付、ロレムイプサムなどがあり、送信のたびに新しくなります。
名前はPostmanの動的変数と同じなので、それらを使っているコレクションでも、ここで実際の値が送信されます。`{{`の候補リストでは、**ダミーデータ**の下にグループ別に並んでいます。

引数は省略可能です。数値は-10^15から10^15までです。モックのボディでは、[ランダム](#random)と[時刻](#time)の`$uuid`（`$randomUUID`として）、`$randomInt`、`$randomString`、`$randomHex`、`$timestamp`、`$timestampMs`、`$isoTimestamp`も使えます。
ターミナルからは、[`echolot fake`](/docs/cli/fake)がそれらでテンプレートを埋めます。

### 共通 [#common]

| 値 | 引数 | 得られるもの |
| --- | --- | --- |
| `$randomFloat` | 最小値、最大値、小数桁数 | 範囲内（0から1000）の小数。指定がなければ小数2桁。 |
| `$randomDigits` | 長さ | ランダムな数字の文字列。長さの指定がなければ6桁。 |
| `$randomBoolean` | なし | trueまたはfalse。 |
| `$randomElement` | 選択肢 | 引数のうちランダムに選んだ1つ：$randomElement(active, paused, closed)。 |
| `$randomAlphaNumeric` | なし | 英字または数字1文字。 |
| `$randomColor` | なし | 色の名前：teal。 |
| `$randomHexColor` | なし | 16進数の色：#3f8acb。 |
| `$randomAbbreviation` | なし | 技術的な略語：SQL。 |

### 名前と職業 [#names-and-jobs]

| 値 | 引数 | 得られるもの |
| --- | --- | --- |
| `$randomFirstName` | なし | 名：Amelia。 |
| `$randomLastName` | なし | 姓：Okafor。 |
| `$randomFullName` | なし | 名と姓：Amelia Okafor。 |
| `$randomNamePrefix` | なし | Mr.、Ms.、Dr.… |
| `$randomNameSuffix` | なし | Jr.、PhD… |
| `$randomJobArea` | なし | Mobility、Security… |
| `$randomJobDescriptor` | なし | Lead、Senior… |
| `$randomJobTitle` | なし | Senior Security Engineer。 |
| `$randomJobType` | なし | Engineer、Designer… |

### インターネット [#internet]

| 値 | 引数 | 得られるもの |
| --- | --- | --- |
| `$randomEmail` | なし | メールアドレス：amelia.okafor@gmail.com。 |
| `$randomExampleEmail` | なし | example.com、example.net、example.orgのメールアドレス。 |
| `$randomUserName` | なし | ユーザー名：amelia_okafor42。 |
| `$randomPassword` | なし | ランダムな英数字15文字。 |
| `$randomUrl` | なし | https://northwind.io |
| `$randomDomainName` | なし | northwind.io |
| `$randomDomainSuffix` | なし | com、io、dev… |
| `$randomDomainWord` | なし | northwind |
| `$randomIP` | なし | IPv4アドレス：192.168.14.7。 |
| `$randomIPV6` | なし | IPv6アドレス。 |
| `$randomMACAddress` | なし | MACアドレス：3a:f1:0c:5e:92:b4。 |
| `$randomProtocol` | なし | httpまたはhttps。 |
| `$randomSemver` | なし | セマンティックバージョン：2.14.3。 |
| `$randomLocale` | なし | ロケール：de_CH。 |
| `$randomUserAgent` | なし | ブラウザのUser-Agent。 |

### 住所と場所 [#addresses-and-places]

| 値 | 引数 | 得られるもの |
| --- | --- | --- |
| `$randomStreetName` | なし | Maple Avenue |
| `$randomStreetAddress` | なし | 42 Maple Avenue |
| `$randomCity` | なし | Lisbon |
| `$randomZipCode` | なし | 5桁の郵便番号。`$randomZip`も同じです。 |
| `$randomCountry` | なし | Portugal |
| `$randomCountryCode` | なし | ISO 3166の国コード：PT。 |
| `$randomLatitude` | なし | 緯度：38.7223。 |
| `$randomLongitude` | なし | 経度：-9.1393。 |

### 電話 [#phone]

| 値 | 引数 | 得られるもの |
| --- | --- | --- |
| `$randomPhoneNumber` | なし | 電話番号：555-201-4417。 |
| `$randomPhoneNumberExt` | なし | 国番号付きの電話番号：+44 555-201-4417。 |

### 会社 [#companies]

| 値 | 引数 | 得られるもの |
| --- | --- | --- |
| `$randomCompanyName` | なし | Northwind Labs |
| `$randomCompanySuffix` | なし | Inc、LLC、GmbH… |
| `$randomBs` | なし | streamline seamless platforms |
| `$randomBsAdjective` | なし | seamless |
| `$randomBsBuzz` | なし | streamline |
| `$randomBsNoun` | なし | platforms |
| `$randomCatchPhrase` | なし | Adaptive real-time framework |
| `$randomCatchPhraseAdjective` | なし | Adaptive |
| `$randomCatchPhraseDescriptor` | なし | real-time |
| `$randomCatchPhraseNoun` | なし | framework |

### 金融 [#finance]

| 値 | 引数 | 得られるもの |
| --- | --- | --- |
| `$randomPrice` | 最小値、最大値 | 小数2桁の価格。範囲の指定がなければ1から1000。 |
| `$randomCurrencyCode` | なし | EUR |
| `$randomCurrencyName` | なし | Euro |
| `$randomCurrencySymbol` | なし | € |
| `$randomBankAccount` | なし | 8桁の口座番号。 |
| `$randomBankAccountName` | なし | Savings Account |
| `$randomBankAccountIban` | なし | チェックディジットが正しいIBAN。 |
| `$randomBankAccountBic` | なし | BIC（SWIFTコード）。 |
| `$randomCreditCardMask` | なし | カードの下4桁。 |
| `$randomTransactionType` | なし | deposit、payment、refund… |
| `$randomBitcoin` | なし | 作り物のビットコインアドレス。 |

### ショップと商品 [#shops-and-products]

| 値 | 引数 | 得られるもの |
| --- | --- | --- |
| `$randomProduct` | なし | Chair |
| `$randomProductName` | なし | Ergonomic Wooden Chair |
| `$randomProductAdjective` | なし | Ergonomic |
| `$randomProductMaterial` | なし | Wooden |
| `$randomDepartment` | なし | Garden |

### 日付 [#dates]

| 値 | 引数 | 得られるもの |
| --- | --- | --- |
| `$randomDatePast` | なし | 過去1年間のある時点（ISO 8601）。 |
| `$randomDateFuture` | なし | 今後1年間のある時点（ISO 8601）。 |
| `$randomDateRecent` | なし | 過去2日間のある時点（ISO 8601）。 |
| `$randomDate` | なし | 過去1年間のある日：2026-03-14。 |
| `$randomWeekday` | なし | Tuesday |
| `$randomMonth` | なし | March |

### 単語 [#words]

| 値 | 引数 | 得られるもの |
| --- | --- | --- |
| `$randomWord` | なし | 単語1つ。 |
| `$randomWords` | 個数 | 数個の単語。個数の指定がなければ3個。 |
| `$randomNoun` | なし | router |
| `$randomVerb` | なし | compile |
| `$randomIngverb` | なし | compiling |
| `$randomAdjective` | なし | wireless |
| `$randomPhrase` | なし | 上記の単語で作った短いフレーズ。 |

### ロレムイプサム [#lorem-ipsum]

| 値 | 引数 | 得られるもの |
| --- | --- | --- |
| `$randomLoremWord` | なし | dolor |
| `$randomLoremWords` | 個数 | ロレムイプサムの単語。個数の指定がなければ3個。 |
| `$randomLoremSentence` | なし | 1文。 |
| `$randomLoremSentences` | 個数 | 数文。個数の指定がなければ2〜6文。 |
| `$randomLoremParagraph` | なし | 1段落。 |
| `$randomLoremParagraphs` | 個数 | 段落。個数の指定がなければ3段落。 |
| `$randomLoremText` | なし | 1文から数文。 |
| `$randomLoremSlug` | なし | dolor-sit-amet |
| `$randomLoremLines` | なし | 数文を1行に1文ずつ。 |

### ファイル [#files]

| 値 | 引数 | 得られるもの |
| --- | --- | --- |
| `$randomFileName` | なし | router_matrix.pdf |
| `$randomFileType` | なし | image、text、video… |
| `$randomFileExt` | なし | pdf |
| `$randomCommonFileName` | なし | 一般的な拡張子のファイル名。 |
| `$randomCommonFileType` | なし | image、video、text… |
| `$randomCommonFileExt` | なし | png |
| `$randomFilePath` | なし | /var/reports/router_matrix.pdf |
| `$randomDirectoryPath` | なし | /var/reports |
| `$randomMimeType` | なし | application/pdf |

### 画像 [#images]

| 値 | 引数 | 得られるもの |
| --- | --- | --- |
| `$randomAvatarImage` | なし | アバター画像のアドレス。 |
| `$randomImageUrl` | なし | 640×480の画像のアドレス。 |
| `$randomAbstractImage` | なし | abstractをテーマにした640×480の画像のアドレス。ほかのテーマ：`$randomAnimalsImage`、`$randomBusinessImage`、`$randomCatsImage`、`$randomCityImage`、`$randomFoodImage`、`$randomNightlifeImage`、`$randomFashionImage`、`$randomPeopleImage`、`$randomNatureImage`、`$randomSportsImage`、`$randomTransportImage`。 |
| `$randomImageDataUri` | なし | data: URIとしての小さなSVG画像。 |

### データベース [#databases]

| 値 | 引数 | 得られるもの |
| --- | --- | --- |
| `$randomDatabaseColumn` | なし | createdAt |
| `$randomDatabaseType` | なし | varchar |
| `$randomDatabaseCollation` | なし | utf8mb4_unicode_ci |
| `$randomDatabaseEngine` | なし | InnoDB |

## テキスト [#text]

| 値 | 引数 | 得られるもの |
| --- | --- | --- |
| `$lowercase` | テキスト | 小文字にしたテキスト。`{{$lowercase(email)}}` |
| `$uppercase` | テキスト | 大文字にしたテキスト。`{{$uppercase(productId)}}` |
| `$trim` | テキスト | 両端のスペースと改行を取り除いたテキスト。`{{$trim($responseBody('auth/who-am-i'))}}` |

## ファイルとシステム [#files-and-the-system]

| 値 | 引数 | 得られるもの |
| --- | --- | --- |
| `$file` | パス | ファイルの内容。ワークスペースからの相対パスまたは絶対パス。`{{$file('fixtures/order.json')}}` |
| `$env` | 名前 | Echolotプロセスの環境変数。`{{$env('HOME')}}` |

## 動的な値とエージェント [#dynamic-values-and-agents]

AIエージェントがリクエストを送信するとき（EcholotのMCPサーバまたはアシスタント経由）、`$env`は何も返さず、`$file`はワークスペース内のファイルだけを読み取ります。シークレットの値がエージェントに渡ることはありません。
[エージェント](/docs/ai/agents)を参照してください。
