メインコンテンツまでスキップ

KurocoEdge の変数の利用方法

概要

KurocoEdgeには、各リクエストごとに保持されるメモリデータストレージが含まれています。アクション処理にはリクエストフェーズとレスポンスフェーズの2つのフェーズがあり、リクエストフェーズで作成された変数はレスポンスフェーズまで保持されます。レスポンスがユーザーに送信された後、関連するメモリストレージは解放されます。

特定のルールにより特別な変数が作成されることがありますが、ほとんどの場合、それらはユーザー定義の変数です。

変数の種類

変数は型付けされており、以下のいずれかのタイプ(JSONタイプに対応)を持つことができます:

タイプ説明
NullJSONのnull値を表しますnull
BoolJSONのブール値を表しますtrue
NumberJSONの数値を表します。整数または浮動小数点数12.5
StringJSONの文字列を表します"a string"
ArrayJSONの配列を表します["an", "array"]
ObjectJSONのオブジェクトを表します{"an": "object"}

文字列表現とネスト

ほとんどのアクションで、{$my_variable}の記法を使用して変数に保持された文字列を利用できます。変数が文字列でない場合は、JSON文字列化されます。

これらの文字列は例えば、ヘッダールールの値やHTML編集ルールのコンテンツに使用できます。

さらに、変数はネスト構造に保存されるため、ドット.表記を使用してアクセスできます。例えば、オブジェクト変数parent_varには2つの子parent_var.child1parent_var.child2がある場合、子に保存された文字列は{$parent_var.child1}のようにアクセスできます。また、parent_arrの配列形式の変数があった場合、整数インデックスを使用して{$parent_arr.0}のようにアクセスできます。

存在しない変数にアクセスしようとした場合(例:{$parent_arr.9})、指定した文字列は置き換えられず、{$parent_arr.9}の文字列としてそのまま使用されます。この動作は、ユーザーデータとの衝突の可能性を最小限にするためです。

変数の作成

いくつかの特別なルールを除き、ほとんどの場合、変数はアクションの「条件/変数」部分で条件と共に作成されます。

KurocoEdge では、ルールのアクション内で主に4つの異なる方法で変数を扱うことができます。

このドキュメントでは、それぞれの変数の種類の概要を説明し、基本的な使用方法とベストプラクティスを提供します。

各変数の種類は、ルール内の任意のアクションの「条件 / 変数」セクションで作成および管理することができます。

スタティック変数

スタティック変数は、アクションの「条件/変数」セクションで新しい「スタティック変数」を作成することで明示的に割り当てることができます。

これは、KurocoEdge で使用できる最も基本的な変数の形式です。

備考

スタティック変数の条件は常にtrueとなります。

スタティック変数の利用目的

プログラミング言語と同様に、値を格納する変数を定義して後で簡単に呼び出すことは便利です(値を繰り返し入力する必要がないため)。

スタティック変数は、アクションの「実行」セクションのフィールドで使用でき、値を入力するためのよりクリーンで効率的な方法です。

備考

スタティック変数の作成と使用方法についてのチュートリアルは、以下のドキュメントを参照してください。

静的変数を使用する

キャプチャ変数

キャプチャ変数は、アクション内のルールの「条件/変数」セクションで明示的に定義される「スタティック」または「API」変数とは異なり、特別な「キャプチャ」変数を定義することもできます。このタイプの変数は、キャプチャされた「フィールド設定」の値として作成されます。

たとえば、「条件 / 変数」で「ヘッダー」、「ボディプレフィックス」、または「変数の一致」フィールドを選択し、名前付きキャプチャグループの正規表現の構文 (?P<name>...) を使用して現在の値をキャプチャすることができます。名前なしでキャプチャされた変数は登録されませんので注意してください。

キャプチャ変数の利用目的

これは、KurocoEdge で変数を「オンザフライ」で作成するための便利で非常に柔軟な方法です。これらのキャプチャ変数は、アクションの「実行」セクション内で他の KurocoEdge 変数と同様に {$variable} の構文を使用して再利用することができます。

よくある使用例は、値をキャプチャしてそれをパラメータとして URL に挿入することです(例: データを取得するための API 呼び出し時にパラメータとして挿入する場合)。

備考

キャプチャ変数の作成と使用方法についてのチュートリアルは、以下のドキュメントを参照してください。

キャプチャされた変数を使用する

API変数

KurocoEdge での最も高度な変数の形式は、API変数です。これにより、API エンドポイントから取得した値を変数に割り当てることができます。API変数は、スタティック変数と同様にアクションの「実行」セクション内で使用することができます。ただし、API のデータはしばしばネストされた値を持つオブジェクトであるため、API変数への値の割り当てはより複雑になる場合があります。

ネストされた値にアクセスするためには、ドット記法を使用する必要があります。

たとえば、address という名前の API変数(オブジェクト)には、street というネストされた値が含まれている場合、「実行」セクションで使用する正しい構文は次のとおりです:

{$address.street}

通常、API変数を使用する場合、トップレベルの文字列値(オブジェクト内のトップレベルのキー/値ペアから返される値)を返すか、ドット記法を使用してネストされた文字列値を返すことがベストプラクティスです。

備考

API変数の条件は、API呼び出しが成功し、適切なJSON応答ボディがあり、指定されたすべての期待変数がそのJSON内に見つかった場合にのみtrueを返します。

API変数の利用目的

API のレスポンスオブジェクトを操作することは複雑で扱いにくい場合があります。値(またはネストされた値)を変数に割り当てることで、作業が容易になります。たとえば、値を URL のパラメータとして挿入する必要がある場合や、API エンドポイントから動的なデータを取得する必要がある場合などです。

備考

API変数の作成と使用方法についてのチュートリアルは、以下のドキュメントを参照してください。

API変数を使用する

変数の変換

この機能は、既存の変数を1つ以上の関数で変換することを可能にします。関数は順番に適用され、新しい変数が作成されます。変換された結果は元の変数には影響しません。

変数の変換を使用する理由

正規表現を利用したキャプチャ変数では文字列変数からさまざまな文字列を部分抽出できますが、特定の関数を適用したり、オブジェクトや配列を希望に沿った形式に変換したりすることがより便利な場合があります。

備考

変数の変換の使用方法についてのチュートリアルは、以下のドキュメントを参照してください。

変数の変換を使用する


サポート

お探しのページは見つかりましたか?解決しない場合は、問い合わせフォームからお問い合わせいただくか、Discordコミュニティにご参加ください。