
VeeValidateは2017年にAbdelrahman Awad氏が公開した、Vue.js向けのフォームバリデーションライブラリである。「Vueのリアクティブシステムと自然に統合し、宣言的にバリデーションルールを記述する」という設計で、Vue界における事実上の標準として広く採用されてきた。Vue 2時代はディレクティブ風のテンプレート構文を提供し、Vue 3移行後はComposition API中心の構成へと進化し、Yup/ZodなどとのリゾルバもサポートしてReactのReact Hook Formに匹敵する体験を実現している。本記事ではVeeValidateの設計、Vue3への進化、活用シーンを整理する。
この記事の目次
- VeeValidateを支える3つの軸
- Vue 2からVue 3への大改修
- 実装で押さえるべきパターン
- VueエコシステムでのVeeValidateの位置
- まとめ
VeeValidateを支える3つの軸

VeeValidateの根本にあるのは「Vueのリアクティブシステムに違和感なく溶け込む」という設計目標である。Vue 2時代はv-validateディレクティブで属性的にルールを宣言する書き味が主流で、required|email|min:5のようなパイプ区切り文字列で複数ルールを連結する直感的なAPIが人気を集めた。Vue 3移行後はComposition APIのuseFormやuseFieldフックを中心とした構成に書き直され、より型安全で柔軟な統合が可能になった。
ルール宣言の手段は「組み込みルール文字列」「カスタム関数」「Yup/Zodスキーマ」の三本立てで、プロジェクトの規模や好みに応じて選べる。Yupと組み合わせれば複雑なオブジェクト検証が可能で、ZodリゾルバもありTypeScript型推論を活かしたフォームが組める。国際化対応も組み込みで、エラーメッセージの多言語化が容易な点も実務で重宝されている。
Vue 2からVue 3への大改修

VeeValidateは2017年のVue 2時代に最初のバージョンが公開された。当時はディレクティブベースのAPIで、テンプレートに直接バリデーションルールを書く設計が支持された。v3でTypeScriptへの本格対応と内部設計の整理が行われ、エコシステムでの利用がさらに広がった。
2020年のVue 3リリースに合わせて、VeeValidateも大規模な書き直しを敢行しv4が公開された。Composition API中心の新設計では、useFieldとuseFormの2つのフックを軸にフォーム状態を組み立てる体験となり、Vue 3のScript Setup構文とも自然に噛み合う。従来のディレクティブAPIから完全に切り替わったため、Vue 2からVue 3への移行プロジェクトでは書き換えが必要だが、得られる開発体験の向上は大きい。
実装で押さえるべきパターン

Vue 3でのVeeValidate実装は、まずuseFormでフォーム全体の状態とhandleSubmitを取り出す。validationSchemaにYupまたはZodスキーマを渡すと、各フィールドが自動的に検証されエラーがバインドされる。useField('email')で個別フィールドのvalueやerrorMessageを取り出し、template側ではv-modelで素直にバインドできる。
より宣言的に書きたい場合は

コメント