インプレース補間

最終公開日 : Sep 25, 2026
StyleBook式を使用して文字列の一部を置き換えることが可能になりました。これらの文字列式がStyleBookコンパイラによって評価されると、StyleBook式を使用する文字列の部分は、その式の値に置き換えられます。文字列にStyleBook式を含めるには、次の表記を使用します。
"...%{...}%..."
「%{」と「}%」で囲まれた文字がStyleBook式を形成します。これらの式は「インプレース補間」として知られています。
例えば、文字列 lb-%{$parameters.appname}%-svc は、StyleBook式のインプレース補間を含む文字列式です。文字列式の値は、補間式の値に依存します。$parameters.appname に「app1」が割り当てられているとします。この場合、文字列式は lb-app1-svc と評価されます。これにより、値が文字列式にハードコードされるのではなく、ユーザー定義の値に基づいて評価されるようになります。
インプレース補間の実用的なユースケースは、StyleBookのポリシー式をパラメータ化することです。HTTP URLに特定の単語、例えば「jpeg」が含まれているかどうかをチェックするポリシー式を作成したいシナリオを考えてみましょう。
このためには、次のようにポリシー式を記述します。「HTTP.REQ.URL.CONTAINS(\\"jpeg\\")」。
さて、HTTP URL内のオブジェクトをパラメータ化したい場合、StyleBookに文字列パラメータ(例えば $parameters.url-object)を追加できます。ポリシー式はこのパラメータに基づいて記述されます。これを行うには、文字列連結を使用して結果を実現します。式は次のようになります。
str("HTTP.REQ.URL.CONTAINS(\\"" + $parameters.url-object + "\\")")
$parameter.url-object に「csv」が割り当てられている場合、上記の式は「HTTP.REQ.URL.CONTAINS(\\"csv\\")」と評価されます。しかし、この式は読みにくいです。このパラメータ化を読みやすく理解しやすくするために、インプレース補間を使用できます。
インプレース補間を使用した式は次のとおりです。
str("HTTP.REQ.URL.CONTAINS(%{quotewrap($parameters.url-object)}%)")
上記の式では、$parameters.url-object の値の周りに内部引用符を追加する補間式を使用しました。この式の結果は上記と同じですが、より直感的で実際の結果に近いものに見えます。
Related information

補間内で許可される型

補間内では、boolean、number、tcp-port、ipaddress、およびstringの型の値を生成する式を使用できます。生成された値は、補間が結果に置き換えられるときに自動的に文字列に変換されます。
文字列式は、0個、1個、またはそれ以上の補間を持つことができます。シーケンシャル補間では、文字列式の異なる部分が異なるStyleBook式に置き換えられます。例えば、$parameters.appname が「app1」で $parameters.vip が「1.1.1.1」の場合、文字列 lb-%{$parameters.appname}%-%{$parameters.vip}% は「lb-app1-1.1.1.1」を返します。
文字列式はネストされた補間もサポートしています。つまり、ある補間式を別の補間式の中にネストすることができ、それによって一方の式の値がもう一方の式の入力となることができます。
例えば、文字列「%{lb-%{$parameters.port + 1}%}%」を考えてみましょう。
内部文字列「%{$parameters.port + 1}%」は、$parameters.portが80の場合、「lb-81」を返します。ここでは、この式が別の補間式の中にネストされています。
次の表は、補間のさまざまなタイプを例と対応する結果とともに示しています。例で使用されているパラメータの値は次のとおりです。
  • $parameters.appname: 「lb1」
  • $parameters.vip: 「1.1.1.1」
  • $parameters.n1: 1
  • $parameters.n2: 3

単純な補間

式 結果
lb-%{$parameters.appname}%-def lb-lb1-def

自動型変換

式 結果
lb-%{1}% lb-1
lb-%{$parameters.vip}% lb-1.1.1.1
lb-%{真}% lb-真

シーケンシャル補間

式 結果
%{$parameters.appname}%-%{str($parameters.appname)}% ロードバランサー1-ロードバランサー1
lb-%{1}%-%{2}% lb-1-2

入れ子補間

式 結果
%{abc-%{$parameters.n1 + 1}%}% abc-2
str("%{abc-%{$parameters.n1}%}%-%{$parameters.n2}%") bc-1-3

quotewrap を使用した補間

式 結果
str("%{quotewrap(abcd)}%") \"abcd
str("%{quotewrap(https://)}%+HTTP.REQ.HOSTNAME+HTTP.REQ.URL") <https://"+HTTP.REQ.HOST NAME+HTTP.REQ.URL

補間におけるエスケープ文字

文字列に「%{」または「}%」の文字が含まれている場合、StyleBookコンパイラがこれらを補間タグとして評価しないように、エスケープ文字として「\」を指定する必要があります。
例:
str("%{\%\{ + str($parameters.vip) + \}\%}%") returns "%{1.1.1.1}%" if $parameters.vip is 1.1.1.1
次の表に、いくつかの式とその結果を示します。
カテゴリ 式 結果
補間のエスケープ str("%{str($parameters.n1) + \}\%}%") 1}%
lb-%{str($parameters.n1) + \}\%}% lb-1}%
"%{str($parameters.n1) + \\"\\}\\%\\"}%"\|1}%