Skip to content
Copied!
published on 2026-06-08

検証

Settings (v0.2.2)

v0.2 で追加された機能です。CEL(Common Expression Language)式を使ってフィールド値を検証できます。

validation examplevalidation example

名前付き制約([[constraints]]

スキーマのトップレベルに,再利用可能な検証ルールを名前付きで定義できます。

toml
[[constraints]]
id      = "email_format"
expr    = "validation.email.matches('^[^@\\\\s]+@[^@\\\\s]+$')"
message = { en = "Enter a valid email address", ja = "メール形式で入力してください" }
フィールド説明
idスキーマ内で一意の識別子
exprbool を返す CEL 式。設定ファイルの値をルートコンテキストとして参照する
message違反時にフィールド下へ表示するメッセージ(ローカライズ可)。validate で参照する場合は必須

フィールドへの適用(validate

制約 id を文字列で参照するか,フィールド側にインラインで式とメッセージを書きます。

toml
[[tabs.fields]]
key      = "validation.email"
widget   = "text_input"
validate = ["email_format"]

[[tabs.fields.validate]]
expr    = "validation.password.size() >= 16"
message = { en = "16 or more characters required", ja = "16文字以上必要です" }
  • 複数のルールを指定した場合はすべて評価され,違反したものすべてのメッセージが表示されます
  • 違反が残っている間,保存(OK / Apply / 自動保存のいずれも)はブロックされます
  • 違反のあるフィールドには,枠にエラー表示用のスタイルが付きます

選択肢の無効化(option_states

segmented_controlselect のみで使えます。条件に応じて特定の選択肢をグレーアウトできます。

toml
[[tabs.fields.option_states]]
value = "0"
when  = "chars_min_one"   # [[constraints]] の id を参照

# または式を直接書く場合:
# enabled = "some.other.field > 0"

when(制約 id の参照)と enabled(式の直書き)は排他で,どちらか一方だけを指定します。

スキーマの静的検証(開発時)

GUI をビルドせずにスキーマの整合性(参照関係や CEL 構文など)を検査できる CLI settings-schema-checker が用意されています。詳細はビルドを参照してください。