Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Standard Schema: スキーマライブラリの統一企画とは何か
Search
Nozomu Ikuta
May 24, 2025
Technology
2.4k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Standard Schema: スキーマライブラリの統一企画とは何か
TSKaigi 2025 の登壇資料です
Nozomu Ikuta
May 24, 2025
More Decks by Nozomu Ikuta
See All by Nozomu Ikuta
Go 1.24 のイテレータ from byte to bite
nozomuikuta
0
110
Demystifying Vite Internals
nozomuikuta
3
2.9k
Nuxt DevTools 101
nozomuikuta
3
2.2k
Deep Dive to UnJS and Nuxt 3
nozomuikuta
3
3.1k
OSS作者はじめの一歩
nozomuikuta
1
260
2022 年は Docus に注目しよう
nozomuikuta
1
140
Go初学者、最初の1週間の学び
nozomuikuta
1
140
Other Decks in Technology
See All in Technology
【Google Cloud Next Tokyo'26】Gemini Enterprise と Oracle AI Database で実現する、業務データ活用を実現する AI エージェント実装
shisyu_gaku
0
240
グローバル基準のSREは、運用現場でどう機能したか:成熟度アセスメントの実践 / SRE NEXT 2026
sorawatanabe
0
170
SO-101×VLAによる3色キューブのピック&プレース
abeja
0
180
Flutterをカメラで動かしたかった話
sony
1
130
Issue設計から始める仕様駆動開発 / 20260731 Mizuki Hirata
shift_evolve
PRO
1
160
FDEの心得
noriakioji
2
1.4k
AWS ネットワーク構築でハマった(ハマりかけた) 5選とそこから得た教訓
nagisa53
4
200
制約理論(ToC)入門 2026版
recruitengineers
PRO
8
2.1k
QAエンジニア起点で進める、SmartHRにおける信頼性向上について
kaomi_wombat
1
130
事業価値と Engineering 2026年度版
recruitengineers
PRO
45
23k
Software Supply Chain Attackからクラウド環境を守るためにできること
lhazy
2
240
関東Kaggler会発表資料
takoi
1
210
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
270
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
How to Ace a Technical Interview
jacobian
281
24k
How to make the Groovebox
asonas
2
2.3k
Embracing the Ebb and Flow
colly
88
5.1k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Designing Experiences People Love
moore
143
24k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
370
Utilizing Notion as your number one productivity tool
mfonobong
4
530
4 Signs Your Business is Dying
shpigford
187
22k
Transcript
Nozomu Ikuta 24th May 2025 Standard Schema: εΩʔϚϥΠϒϥϦͷ౷Ұن֨ͱԿ͔
εΩʔϚϥΠϒϥϦͬͯ·͔͢
• Zod • Valibot • ArkType • etc.
͍͟͏ͱ՝͋Γ·͢
• ϩοΫΠϯ • ΞμϓλɺΞμϓλɺΞμϓλ… • etc.
newmo Ͱͬͯͳ͍Ͱ͢
Tierͷߟ͑ํ Tier 1 : ͜ΕΛࣺͯΔ࣌ίʔυΛҰ͔Β ॻ͖֮͢ޛΛ࣋ͭʮ৺த͢Δʯ૬ख Tier 2 : ࠩ͠ସ͑ʹେ͖ͳ࿑ྗΛඞཁͱ
͢Δʮڧ͘ґଘ͢Δʯ૬ख Tier 3 : ͍ͣΕࠩ͠ସ͑Δ͜ͱΛఆͨ͠ ʮґଘΛܰ͘͢Δʯ૬ख Communication Design 32 Modular Monolith Monorepo ~ γϯϓϧ͞Λอͪͳ͕ΒmonorepoͷϝϦοτΛ࠷େԽ͢Δ ~ JSConf 2024 ΑΓ
ఏڙػೳ΄΅ಉ͡
• ϥϯλΠϜόϦσʔγϣϯ • όϦσʔγϣϯͷResultܕ • όϦσʔγϣϯΤϥʔͷҰཡ • εΩʔϚͷܕਪ
Standard Schema
• Zod, Valibot, ArkType ͷ࡞ऀʹΑͬ ͯઃܭ͞Εͨ • StandardSchemaV1 ͱ͍͏୯Ұͷ interface
͓Αͼ namespace ͱͯ͠ ఆٛ͞Ε͍ͯΔ
interface StandardSchemaV1<Input = unknown, Output = Input> { readonly '~standard':
StandardSchemaV1.Props<Input, Output>; } export declare namespace StandardSchemaV1 { // ϓϩύςΟఆٛ } • APIίϯϑϦΫτճආͷͨΊ `~standard` ϓϩύςΟԼʹͯ͢ఆٛ͢Δ
interface Props<Input = unknown, Output = Input> { readonly version:
1; readonly vendor: string; readonly validate: ( value: unknown ) => Result<Output> | Promise<Result<Output>>; readonly types?: Types<Input, Output> | unde fi ned; } • όϦσʔγϣϯؔ • εΩʔϚͷܕਪ
type Result<Output> = SuccessResult<Output> | FailureResult; interface SuccessResult<Output> { readonly
value: Output; readonly issues?: unde fi ned; } interface FailureResult { readonly issues: ReadonlyArray<Issue>; } • όϦσʔγϣϯͷResultܕ • Τϥʔissuesͱ͍͏ྻͰදݱ͢Δ
interface Issue { readonly message: string; readonly path?: ReadonlyArray<PropertyKey |
PathSegment> | unde fi ned; } interface PathSegment { readonly key: PropertyKey; } • όϦσʔγϣϯΤϥʔ • ͻͱͭͷΤϥʔϝοηʔδͱϓϩύςΟΩʔͰදݱ͢Δ
interface Types<Input = unknown, Output = Input> { readonly input:
Input; readonly output: Output; } type InferInput<Schema extends StandardSchemaV1> = NonNullable< Schema['~standard']['types'] >['input']; type InferOutput<Schema extends StandardSchemaV1> = NonNullable< Schema['~standard']['types'] >['output']; • εΩʔϚͷܕਪ
·ͱΊ
• Standard SchemaͰεΩʔϚϥΠϒϥϦͷ૬ޓӡ༻ੑ͕ߴ·Δ • ओཁͳεΩʔϚϥΠϒϥϦ͢ͰʹରԠࡁΈ • εΩʔϚϥΠϒϥϦͷࠩผԽ͕͘͠ͳΔ͔ʢʁʣ
ࢀߟจݙ • https://github.com/standard-schema • https://github.com/colinhacks/zod • https://github.com/fabian-hiller/valibot • https://github.com/arktypeio/arktype •
https://speakerdeck.com/yuisakamoto/modular-monolith-monorepo- sinpurusawobao-tinagaramonoreponomeritutowozui-da-hua-suru
@nozomuikuta • ιϑτΣΞΤϯδχΞ • Vue.js-JP ڞಉΦʔΨφΠβʔ • UnJS ϝϯόʔ •
Shibuya.go ओ࠵
None
None