式

最終公開日 : Sep 25, 2026
StyleBook の最も強力な機能の 1 つは、式の使用です。StyleBook の式は、さまざまなシナリオで動的な値を計算するために使用できます。次の例は、パラメーター値をリテラル文字列と連結する式です。
例:
$parameters.appname + "-mon"
この式は、appname という名前のパラメーターを取得し、それを文字列 -mon と連結します。
注
StyleBook は、StyleBook 定義でパラメーターと式を定義する際に、予約済みキーワードの使用をサポートしています。予約済みキーワードは、and、false、in、not、true、および or です。
次の種類の式がサポートされています。
Related information

算術式

  • 加算 (+)
  • 減算 (-)
  • 乗算 (*)
  • 除算 (/)
  • モジュロ (%)
例:
  • 2 つの数値を加算する: $parameters.a + $parameters.b
  • 2つの数値を乗算する: $parameters.a * 10
  • ある数値を別の数値で除算した後の剰余を求める:
15%10 は 5 になります

文字列式

  • 2つの文字列を連結する (+)
例:
2つの文字列を連結する: str("app-") + $parameters.appname

リスト式

2つのリストをマージする (+)
例:
  • 2つのリストを連結する: $parameters.external-servers + $parameters.internal-servers
  • $parameters.ports-1 が で、$parameters.port-2 が の場合、$parameters.ports-1 + $parameters.ports-2 はリスト として表示されます。

関係式

  • == : 2つのオペランドが等しいかどうかをテストし、等しい場合はtrueを返し、そうでない場合はfalseを返します。
  • != : 2つのオペランドが異なるかどうかをテストし、異なる場合はtrueを返し、そうでない場合はfalseを返します。
  • \> : 最初のオペランドが2番目のオペランドより大きい場合、trueを返し、それ以外の場合はfalseを返します。
  • \>= : 最初のオペランドが2番目のオペランド以上の場合、trueを返し、それ以外の場合はfalseを返します。
  • \< : 最初のオペランドが2番目のオペランドより小さい場合、trueを返し、それ以外の場合はfalseを返します。
  • \<= : 最初のオペランドが2番目のオペランド以下の場合、trueを返し、それ以外の場合はfalseを返します。
例:
  • 等価演算子の使用: $parameters.name = = "abcd"
  • 不等価演算子の使用: $parameters.name != "default"
  • その他の関係演算子の例
    • 10 > 9
    • 10 >= 10
    • 0 < 9
    • 10 <= 9
    • 10 == 10
    • 10 != 1

論理式 - ブール

  • and: 論理演算子「and」です。両方のオペランドが真の場合、結果は真になり、それ以外の場合は偽になります。
  • or: 論理演算子「or」です。オペランドのいずれかが真の場合、結果は真になり、それ以外の場合は偽になります。
  • not: 単項演算子です。オペランドが真の場合、結果は偽になり、その逆も同様です。
  • in: 最初の引数が2番目の引数の部分文字列であるかどうかをテストします
  • in: 項目がリストの一部であるかどうかをテストします
注
文字列が数値に変換され (int() 組み込み関数を使用)、数値が文字列に変換される (str() 組み込み関数を使用) 式を型キャストできます。同様に、tcp-port を数値にキャストし (int() 組み込み関数を使用)、IPアドレスを文字列にキャストできます (str() 組み込み関数を使用)。
演算子の前後に区切り文字を使用します。次の区切り文字を使用できます。
  • 演算子の前: space, tab, comma, (, ), [, ]
  • 演算子の後: space, tab, (, [
例:
  • abc + def
  • 100 % 10
  • 10 > 9
  • $item in $parameters.some-list

スプラット式

スプラット式 [*] を使用すると、複雑なリストから特定の属性をすべての反復処理で取得する簡単な方法が提供されます。StyleBook の定義にスプラット式を含めることができるようになりました。
構文:
list[*].attribute
この式は、左側に指定されたリストのすべての項目を反復処理し、右側に指定された属性値を返します。
リストから各仮想サーバーの IP アドレスまたはホスト名を取得する場合は、次のスプラット式を使用できます。
例 1:
$parameters.server-members[*].hostname
この式は、すべてのサーバーメンバーからホスト名のリストを返します。
例 2:
$parameters.server-members[*].sub-domains[*].name
この式は、各サーバーメンバーのサブドメインの下にあるすべての名前のリストを返します。
これらの式は常に、最も右側の要素タイプのリストを返します。

逐語的文字列式

文字列内の特殊文字をリテラル形式にする必要がある場合は、逐語的文字列を使用できます。これらの文字列には、エスケープ文字、バックスラッシュ、引用符、括弧、空白、角括弧などを含めることができます。逐語的文字列では、特殊文字の通常の解釈はスキップされます。文字列内のすべての文字はリテラル形式で保持されます。
StyleBook では、NetScaler ポリシー式を逐語的文字列を使用してリテラル形式で含めることができます。ポリシー式には通常、特殊文字が含まれています。逐語的文字列を使用しない場合、文字列を部分文字列に分割して特殊文字をエスケープする必要があります。
逐語的文字列を作成するには、次のように特殊文字の間に文字列をカプセル化します。
~{string}~
StyleBook 式で逐語的文字列を使用できます。
注
入力文字列で文字シーケンス }~ を使用しないでください。このシーケンスは、逐語的文字列の終わりを示します。
例:
~{HTTP.REQ.COOKIE.VALUE("jsessionid") ALT HTTP.REQ.URL.BEFORE_STR("=").AFTER_STR(";jsessionid=") ALT HTTP.REQ.URL.AFTER_STR(";jsessionid=")}~
詳細については、StyleBook で特殊文字をリテラル形式で許可する を参照してください。

ターゲット式

StyleBook の定義では、現在のターゲット NetScaler インスタンスを参照するために $current-target 式を使用できます。ターゲット NetScaler インスタンスの IP アドレスを具体的に参照するには、この式を次のように使用します。
$current-target.ip
例:
components:
 -
  name: lb-comp
  type: ns::lbvserver
  properties:
    name: $current-target.ip + "-lbvserver"
この例では、lbvserver の名前はターゲット NetScaler インスタンスの IP アドレスを使用しています。

式の型検証

StyleBook エンジンは、コンパイル時のより厳密な型チェックを可能にするようになりました。つまり、StyleBook の作成中に使用される式は、構成パックの作成時ではなく、StyleBook 自体のインポート中に検証されます。
パラメータ、置換、コンポーネント、コンポーネントのプロパティ、コンポーネントの出力、ユーザー定義変数 (repeat-item、repeat-index、置換関数の引数) などへのすべての参照は、その存在と型についてすべて検証されます。
型チェックの例:
次の例では、lbvserver StyleBook のポートプロパティの予期される型は tcp-port です。NetScaler Console では、型検証はコンパイル時 (インポート時) に行われます。コンパイラは、文字列と tcp-port が互換性のない型であると判断し、そのため StyleBook コンパイラはエラーを表示し、StyleBook のインポートまたは移行に失敗します。

components:
  -
    name: lbvserver-comp
    type: ns::lbvserver
    properties:
      name: mylb
      ipv46: 10.102.190.15
      port: str("80")
      servicetype: HTTP
この StyleBook を正常にコンパイルするには、コンパイラで以下を数値として宣言します。
port: 80
無効な式のフラグ付けの例:
StyleBookをNetScaler Consoleにインポートすると、コンパイラが無効な式を識別してフラグを付けます。その結果、StyleBookはNetScaler Consoleにインポートされません。
次の例では、lb-sg-binding-compコンポーネントのnameプロパティに割り当てられた式は$components.lbvserver-comp.properties.lbvservernameです。しかし、lbvserver-compコンポーネントにはlbvservernameというプロパティはありません。
Components:
  -
    name: lbvserver-comp
    type: ns::lbvserver
    properties:
      name: mylb
      ipv46: 10.102.190.15
      port: 80
      servicetype: HTTP
  -
    name: sg-comp
    type: ns::servicegroup
    properties:
      servicegroupname: mysg
      servicetype: HTTP
  -
    name: lb-sg-binding-comp
    type: ns::lbvserver_servicegroup_binding
    condition: $parameters.create-binding
    properties:
      name: $components.lbvserver-comp.properties.lbvservername
      servicegroupname: $components.sg-comp.properties.servicegroupname

データ型の暗黙的な型変換

異なるデータ型にStyleBook式を使用すると、StyleBookエンジンは出力を適切なデータ型に暗黙的に型変換するようになりました。データ型の暗黙的な型変換は、二項演算と値の割り当てをサポートします。
二項演算の例:
  • string型とnumber型の2つの変数を加算(+)すると、出力データ型はstringに設定されます。
$parameters.appname + '_' + $parameters.app_instance_num
  • string型とipaddress型の2つの変数を加算(+)すると、出力データ型はstringに設定されます。
$parameters.appname + '_' + $parameters.instance_ip
  • ipaddress型とnumber型の2つの変数を加算(+)すると、出力データ型はipaddressに設定されます。
$parameters.instance_ip + $parameters.number
  • ipaddress型とnumber型の2つの変数を減算(-)すると、出力データ型はipaddressに設定されます。
$parameters.instance_ip - $parameters.number
  • string型とnumber型の2つの変数を乗算(*)すると、出力データ型はstringに設定されます。
$parameters.dummy_str * $parameters.count
値の割り当ての例:
  • 変数がstringデータ型として定義されている場合、割り当てられた値は定義されたデータ型に変換されます。
name: $parameters.port * 3
  • 変数がportnumberデータ型として定義されている場合、割り当てられた値は例外を除いてportnumberデータ型に変換されます。
port: $index + $parameters.lower_limit

リストのインデックス付け

リストの項目は、直接インデックスを付けることでアクセスできるようになりました。
式 説明
$components.test-lbs[0] thetest-lbsコンポーネントの最初の項目を参照します
$components.test-lbs[0].properties.p1 test-lbsコンポーネントの最初の項目のプロパティp1を参照します
$components.lbcomps[0].outputs.servicegroups[1].properties.servicegroupname lbcompsコンポーネントの最初の項目からの出力である、servicegroupsコンポーネントの2番目の項目のプロパティservicegroupnameを参照します

StyleBooksにおけるポリシー式

StyleBooks GUIを使用すると、リストから項目を選択してNetScaler®ポリシー式を構築でき、より迅速かつ正確に式を作成するのに役立ちます。
StyleBooksのポリシー式を使用すると、柔軟でカスタマイズ可能な構成を作成できます。さまざまなパラメーター、属性、または変数に基づいて条件を指定できます。ポリシー式は、NetScalerポリシー構成を実装するためによく使用されます。

StyleBooks GUIでポリシー式エディターを有効にする

パラメーターでEPAまたは式エディターを使用できるようにするには、パラメーター定義でis_policy_expression GUI属性を指定します。この設定を有効にすると(trueに設定すると)、このパラメーターの値を入力する際に式エディターを呼び出すことができます。
parameters:
  -
    name: expression
    type: string
    label: Expression
    required: true
    gui:
      is_policy_expression: true

ポリシー式を作成および構築する

  1. Applications > Configurations > StyleBooksに移動します。StyleBooksページには、NetScaler Consoleで利用可能なすべてのStyleBooksが表示されます。
  2. パラメーターにポリシー式を含むStyleBookを選択します。
  3. Create Configurationをクリックします。Create Configurationページで、このStyleBookで定義されているすべてのパラメーターの値を入力します。
  4. Expressionsフィールドの横にあるアイコンをクリックします。Create an expressionページが表示されます。
    式を含む構成の作成
  5. Create an expressionで、直感的なドロップダウンを使用してポリシー式を構築します。Submitをクリックします。
    式エディター
    カスタムポリシー式を作成する場合は、EPA EditorまたはExpression Editorをクリックして式を構築します。Preview Expressionsで式を確認し、Submitをクリックします。
  6. 構成を展開するターゲットのNetScalerインスタンスを選択し、Submitをクリックします。
    式を含む構成パック(/en-us/netscaler-console-service/media/sample-config-pack-expressions.png)