Standard Schemaで何が実現できる?
初めに
本記事では先日v1.0.0が公開されたStandard Schameについて紹介します。
本記事で紹介すること
-
Standard Schemaとは何か -
Standard Schemaで実現できること -
Standard Schemaに準拠済みのツール・フレームワーク
本記事で紹介しないこと
- スキーマライブラリでの準拠方法
Standard Schemaとは
Standard Schemaはzodやvalibotといったスキーマバリデーションライブラリの共通インターフェースの仕様です。
主にzodやvalibot, ArkTypeの開発者により設計されています。
先日、v1.0.0が公開となり徐々に対応するツールも多くなっています。
これにより何を実現したいのか
現状、各ツール・フレームワークはそれぞれのスキーマライブラリに対応するためのロジックやアダプター(ex. xxx/zod,xxx/arktype,xxx/valibot..)を作成する必要があります。
これらは実装コストやメンテナンスコストが非常に高くなります。
Standard Schemaに準拠することでスキーマライブライブラリ独自のロジックやアダプターの実装が不要となり、エコシステムツールがユーザー定義の型バリデーターの受け入れを容易にします。
準拠するとどうなるのか
t3-envを例に準拠前後を比較してみます。
t3-envはv0.12.0でStandard Schemaに準拠しており、公式ドキュメントにも以下のような追記がなされています。

準拠前のv0.11.0と準拠後のv0.12.0とではvalibotで指定しているプロパティがエラーにならなくなることがわかります。
このように極端な例ではありますが、例のように複数ライブラリの併用も可能です。

設計目標
この仕様は以下の目標を満たすよう設計されています。
ランタイムバリデーションのサポート
このインターフェースに準拠したバリデータを使うことでデータの検証できます。すべてのエラーは標準化された形式のエラーを出力します。
静的型インターフェースのサポート
TypeScriptライブラリの型推論のために、仕様は推論された型を「公開」する標準的な方法を提供し、外部ツールで抽出して使用できるようにします。
最小限
ライブラリが既存の関数やメソッドを呼び出す数行のコードでこの仕様を実装することが容易であるべきです。
APIコンフリクトを回避
仕様全体は~standardという単一のオブジェクトプロパティ内に収められており、既存ライブラリのAPIサーフェスとの名前の競合を避けています。
開発者体験(DX)を損なわない。
~standardプロパティはチルダ(~)プレフィックスを付けることで、オートコンプリートの優先順位を下げています。対照的に、アンダースコアプレフィックスのプロパティは英数字の名前のプロパティやメソッドより前に表示されてしまいます。
準拠済のスキーマライブラリ
2025/01/30時点で 以下のスキーマライブラリはStandard Schemaに対応済みです。
インストールするバージョンには気を付けてください。
*サポートリストに追加してもらう場合は、自身でPRを作れば良いようです。(参考)
| ライブラリ | バージョン |
|---|---|
| Zod | 3.24.0+ |
| Valibot | v1.0+ |
| ArkType | v2.0+ |
| Arri Schema | v0.71.0+ |
| TypeMap | v0.8.0+ |
準拠済のツール / フレームワーク
2025/01/30時点で、以下のツール / フレームワークはStandard Schemaに準拠しています。
*サポートリストへの追加手順はスキーマライブラリと同じです。
| インテグレーター | 説明 |
|---|---|
| tRPC | 型安全かつ高速で安全なe2eのAPIを簡単に作成 |
| TanStack Form | TS/JS、React、Vue、Angular、Solid、Lit向けのヘッドレスで高性能な型安全なフォーム状態管理 |
| TanStack Router | データフェッチング、stale-while-revalidateキャッシング、ファーストクラスの検索パラメータAPIを備えた完全な型安全なReactルーター |
| Hono Middleware 🚧 | Web標準に基づいた高速で軽量なサーバー |
| Qwik 🚧 | 必要最小限のJavaScriptのみを読み込むことで高速で即時起動が可能なモダンなWebフレームワーク |
| UploadThing | モダンなWeb開発者向けのファイルアップロード |
| T3 Env | フレームワークに依存しない型安全な環境変数のバリデーション |
| OpenAuth | ユニバーサルな標準ベースの認証プロバイダー |
| renoun | React用ドキュメンテーションツールキット |
| Formwerk | 高品質でアクセシブルなフォームを構築するためのVue.jsフレームワーク |
| GQLoom | Standard Schemaを使用してGraphQLスキーマとリゾルバーを織り込む |
| Nuxt UI (v3) | VueとTailwind CSSを使用して構築された、モダンなWebアプリのためのUIライブラリ |
| oRPC | 型安全なAPIをシンプルに |
| Regle | Vue.jsのための型安全なモデルベースのフォームバリデーションライブラリ |
| upfetch | 小規模で組み合わせ可能なフェッチ設定ツール。適切なデフォルトと組み込みのスキーマバリデーションを備える |
まとめ
今回はStandard Schemaについて紹介しました。
この仕様に準拠することでツール開発者の負担を軽減するだけでなく、使用者としては選択肢が広がるので非常に良い取り組みだなと個人的に感じました。
今後、ツールの採用基準の1つとして見てみようと思います。
Discussion