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

式の変換・判定(フィルタ)

ワークフローの式では、値に対して「変換」や「判定」を行う機能を フィルタ(filter) として提供しています。

一般的なプログラミング用語で言うと、入力(値)を受け取って出力(変換後の値)を返す関数に近いイメージです。

フィルタの読み方(パイプ記法)

|(パイプ)で左から右へ、値にフィルタを適用していきます。

{{ 'ABC' | to_lower | trim }}

この例は「'ABC' を小文字化して、前後の空白を取り除く」という意味になります。

フィルタを使えば、文字列処理・日時操作・パス処理・ハッシュ化など、幅広いデータ変換をシンプルに記述できます。

基本フィルタ

フィルタ名説明
size要素数を返す{{ [1,2,3] | size }}3
type型名を返す{{ 123 | type }}Int32

文字列操作

フィルタ名説明
to_lower / to_upper / trim文字列の整形{{ 'ABC' | to_lower }}abc
contains / starts_with / ends_with一致判定{{ 'abc' | contains 'b' }}true
split / join分割と結合{{ 'a|b|c' | split '|' }}[a,b,c]
regex_match / regex_replace正規表現操作{{ 'abc' | regex_replace 'a' 'z' }}zbc
to_base64 / from_base64Base64変換{{ 'abc' | to_base64 }}YWJj
url_encode / url_decodeURL変換{{ 'a b' | url_encode }}a%20b
sha256 / md5ハッシュ化{{ 'abc' | sha256 }}

JSON / YAML

フィルタ名説明
to_json / from_jsonJSON変換{{ obj | to_json }} / {{ '{"a":1}' | from_json }}
to_yaml / from_yamlYAML変換{{ obj | to_yaml }} / {{ 'a: 1' | from_yaml }}

ignoreNulls オプションで null を無視可能
例: {{ obj | to_json { ignoreNulls: true } }}


日時操作

フィルタ名説明
now / utcnow現在日時取得{{ now }}
add_days / add_hours日時加算{{ '2024-01-01' | add_days 1 }}2024-01-02
format_date日付フォーマット{{ '2024-01-01' | format_date 'yyyy/MM/dd' }}2024/01/01

コレクション操作

フィルタ名説明
sort / reverse並び替え{{ [3,1,2] | sort }}[1,2,3]
unique / flatten重複除去・平坦化{{ [[1,2],[3]] | flatten }}[1,2,3]

パス操作

フィルタ名説明
path_filename / path_basenameファイル名操作{{ '/a/b/file.txt' | path_filename }}file.txt
path_join / path_normalizeパス操作{{ ['a','b','c.txt'] | path_join }}a/b/c.txt
path_change_extension拡張子変更{{ '/tmp/data.txt' | path_change_extension '.json' }}/tmp/data.json

ユーティリティ

フィルタ名説明
uuidUUID生成{{ uuid }}550e8400-e29b-41d4-a716-446655440000
random乱数生成{{ random 1 10 }}7
default / coalesceデフォルト値処理{{ null | default 'x' }}x
is_null / is_empty判定フィルタ{{ '' | is_empty }}true

パラメータ付きフィルタ記法

{{ obj | to_json { ignoreNulls: true } }}

利用例

# JSON文字列をデコードして項目を抽出
{{ '{"a":1,"b":2}' | from_json | size }} → 2

# ファイルパスから拡張子を変更
{{ '/tmp/data.txt' | path_change_extension '.json' }} → '/tmp/data.json'

# 現在日時を整形
{{ now | format_date 'yyyy-MM-dd HH:mm' }}