Slide 1

Slide 1 text

What is Standard Schema? Mita.ts #4(2025-02-26) Takashi Machinaga @macchiitaka

Slide 2

Slide 2 text

⾃⼰紹介 ● @macchiitaka ● 2024年8⽉ IVRy に⼊社 ○ 主に WEB フロントエンド Takashi Machinaga 2 エンジニア

Slide 3

Slide 3 text

Zod v3.24.0 3

Slide 4

Slide 4 text

@standard-schema/spec? 4

Slide 5

Slide 5 text

@standard-schema/spec ? 5

Slide 6

Slide 6 text

Colin McDonnell 6 “これは、Zod(👋)、Valibot、ArkType の作成者が、相互運⽤性を促進するため に共同で作成した、すべて TypeScript スキーマライブラリが実装する「共通イン ターフェース」の仕様です。”

Slide 7

Slide 7 text

= Standard Schema はTypeScript の型定義(意訳) 7

Slide 8

Slide 8 text

Standard Schema が⽣まれる前の世界 8

Slide 9

Slide 9 text

スキーマと連携するライブラリ 9 ● React Hook Form ● Hono ● tRPC ● TanStack Router ● ...

Slide 10

Slide 10 text

React Hook Form とスキーマ 10 ● React Hook Form + Zod ● React Hook Form + Yup ● React Hook Form + Joi ● React Hook Form + Valibot ● React Hook Form + ArkType ● ...

Slide 11

Slide 11 text

React Hook Form とスキーマ 11 ● React Hook Form + Zod Resolver + Zod ● React Hook Form + Yup Resolver + Yup ● React Hook Form + Joi Resolver + Joi ● React Hook Form + Valibot Resolver + Valibot ● React Hook Form + ArkType Resolver + ArkType ● ...

Slide 12

Slide 12 text

Standard Schema なしで連携する世界 12 React Hook Form Zod Resolver Valibot Resolver Zod Valibot Input RHF Result Zod Validate Zod Result Valibot Validate Valibot Result

Slide 13

Slide 13 text

サポートするスキーマの数だけ Resolver を提供 13

Slide 14

Slide 14 text

😇😇😇 14

Slide 15

Slide 15 text

Standard Schema がある世界 15

Slide 16

Slide 16 text

Standard Schema なしで連携する世界 16 React Hook Form Zod Resolver Valibot Resolver Zod Valibot Input RHF Result Zod Validate Zod Result Valibot Validate Valibot Result Standard Schema は この間の共通 インターフェイス

Slide 17

Slide 17 text

Standard Schema で連携する世界 17 React Hook Form Standard Schema Resolver Zod Valibot Input RHF Result Validate Result

Slide 18

Slide 18 text

🎉 ひとつの Resolver で連携できる 🎉 18

Slide 19

Slide 19 text

🥳🥳🥳 19

Slide 20

Slide 20 text

直接スキーマライブラリを利⽤する

Slide 21

Slide 21 text

直接スキーマライブラリを利⽤する

Slide 22

Slide 22 text

直接スキーマライブラリを利⽤する

Slide 23

Slide 23 text

スキーマ定義と実装サンプルを⾒てみよう 23

Slide 24

Slide 24 text

スキーマ 24 https://github.com/standard-schema/standard-schema/blob/main/packages /spec/src/index.ts ● 100 ⾏未満のコード ● バリデーターの呼び出し⽅、実⾏結果、エラーメッセージと位置 ● `~standard` プロパティ配下に実装する ○ `~` で始まるプロパティは⾃動補完の優先順位が低い

Slide 25

Slide 25 text

スキーマライブラリ 25 https://github.com/standard-schema/standard-schema/blob/main/packages /examples/implement.ts

Slide 26

Slide 26 text

スキーマ連携ライブラリ 26 https://github.com/standard-schema/standard-schema/blob/main/packages /examples/integrate.ts