スキーマ織りバリデーション

This page is also available in English.

スキーマ織りバリデーション (SWV) は Contact Form 7 が採用する次世代のウェブフォームバリデーション機構です。

それはどんな問題を解決するの ?

ワールドワイドウェブ (WWW) の初期の頃、ウェブフォームを作る役割とフォーム送信を受け取る役割の両方が同一のエンティティ (ウェブサーバー) によって担われるのが当たり前でした。サーバー自身が作ったフォームなので、フォームの入力をどのように扱うべきかサーバーは当然ながらよくわかっていました。

クライアントサイドでのフォームバリデーションを HTML5 が導入するまで、特に留意すべき問題はありませんでした。クライアントサイドバリデーションにより、ユーザーが入力すると即座にバリデーションが実行されるようになります。クライアントサイドバリデーションは優れたユーザー体験をもたらしますが、サーバーサイドのバリデーションを置き換えるものではありません。今後もサーバーサイドでのバリデーションは必要ですが、さてこれにより二つの異なるエンティティがフォームバリデーションに関与するようになりました。ウェブサーバーとクライアント (ブラウザー) です。

ヘッドレス CMS やその他の分離アーキテクチャの普及がこの状況をさらに複雑なものにします。そのようなアーキテクチャにおいては複数のエンティティがウェブフォームに関与することがもはや珍しいものではなくなります。そして、フォームバリデーションの標準化された方法が存在しないため、それらのエンティティにはフォーム入力の正しいバリデーション方法がわからないのです。スキーマ織りバリデーション (SWV) はまさにこの問題を解決するために開発されました。

SWV はユーザー入力の期待される形式を定義する JSON フォーマットのスキーマ言語を提供します。SWV を利用することで、モダンなウェブアーキテクチャの恩恵を犠牲にすることなく、ウェブフォームを安全に実装することが可能になります。

Example

This is an example SWV schema created for the default contact form.

{
    "version": "Contact Form 7 SWV Schema 2022-03",
    "locale": "en_US",
    "rules": [
        {
            "rule": "required",
            "field": "your-name",
            "error": "Please fill out this field."
        },
        {
            "rule": "required",
            "field": "your-email",
            "error": "Please fill out this field."
        },
        {
            "rule": "email",
            "field": "your-email",
            "error": "Please enter an email address."
        },
        {
            "rule": "required",
            "field": "your-subject",
            "error": "Please fill out this field."
        }
    ]
}

Supported rule types

See Predefined rule types.

Schema’s schema

See Meta schema.

WordPress のお問い合わせフォームプラグイン。シンプル、でも柔軟。