Skip to content

Schema Reference

SV::object() に渡すフィールド定義の全表現を一覧します。

各表現は JSON Schema draft 2020-12 のキーワードに対応し、サーバー側バリデーション(Respect/Validation)とクライアント側バリデーション(client / Zod)の両方に適用されます。


フィールド型

表現JSON Schema type説明
SV::string()"string"テキスト入力。長さ・形式・正規表現の制約を持てる
SV::integer()"integer"整数。範囲制約を持てる
SV::number()"number"整数または小数。範囲制約を持てる
SV::boolean()"boolean"真偽値
SV::enum(values)"string" + enum選択肢から1つを選ぶ
SV::array(items)"array"配列。各要素のスキーマを指定できる
SV::file(accept)-(JSON Schema 非対応)ファイルアップロード
RespectRules::rule()-(JSON Schema 非対応)Respect/Validation ルールの直接指定
RespectRules::postalCode()-(JSON Schema 非対応)国別郵便番号
RespectRules::creditCard()-(JSON Schema 非対応)クレジットカード番号(Luhn)
RespectRules::iban()-(JSON Schema 非対応)IBAN

文字列制約

表現JSON Schema キーワード説明
.min(n)minLength最小文字数
.max(n)maxLength最大文字数
.email()format: "email"メールアドレス形式
.url()format: "uri"URL 形式
.pattern(p)pattern正規表現
.date()format: "date"日付(YYYY-MM-DD)
.dateTime()format: "date-time"日時(RFC 3339)
.time()format: "time"時刻(HH:mm:ss)
.uuid()format: "uuid"UUID
.ipv4()format: "ipv4"IPv4 アドレス
.ipv6()format: "ipv6"IPv6 アドレス
.slug()patternURL スラッグ(小文字英数字・ハイフン)
.domain()format: "hostname"ドメイン名

配列制約

表現JSON Schema キーワード説明
.minItems(n)minItems最小要素数
.maxItems(n)maxItems最大要素数

数値制約

表現JSON Schema キーワード説明
.min(n)minimum最小値
.max(n)maximum最大値

修飾子

表現効果
.optional()required 配列から除外。未入力を許容する
.nullable()type[type, "null"] に拡張。null 値を許容する

オブジェクト・出力

表現説明
SV::object(fields)フィールドの集合を定義する
.when(field, expr, require)条件付き必須
.toJsonSchema()JSON Schema (array) として出力
.toJson()JSON Schema (string) として出力
.toValidator()Respect/Validation ベースの Validator を生成

条件式(when() の第2引数)

.when() に渡す比較式。スカラー値を直接渡した場合は SV::equal() と等価。

比較演算子用途
SV::equal($value)===値が一致するとき
SV::notEqual($value)!==値が一致しないとき
SV::greaterThanOrEqual($n)>=値が $n 以上のとき
SV::lessThanOrEqual($n)<=値が $n 以下のとき
SV::greaterThan($n)>値が $n より大きいとき
SV::lessThan($n)<値が $n 未満のとき
SV::field('name')-比較先を別フィールドの値にする