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
フルスタックTypeScript入門 ~Hono RPCとZodで実現する型共有~
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
kouki.miura
July 22, 2026
Programming
38
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
フルスタックTypeScript入門 ~Hono RPCとZodで実現する型共有~
TypeScriptでフロントエンド、バックエンドを開発する場合、型情報をうまく共有する仕組みがあると便利です。hokkaido.jsでのLT発表資料です。
kouki.miura
July 22, 2026
More Decks by kouki.miura
See All by kouki.miura
医療DXって何?~電子カルテ標準仕様まで10分で理解する~
koukimiura
0
11
アプリ開発者が知っておくべき『トランザクション分離レベル』とRead Committed の罠
koukimiura
0
10
ITヒヤリハットを整理してみた ~ライフサイクルと原因から考える再発防止策~
koukimiura
1
110
ReactとVueは仲良くできるのか?
koukimiura
0
37
ポジティブアウトカムを用いた医療費削減の可能性について
koukimiura
0
69
VueSapporo#2
koukimiura
0
56
Vuetify4 v-calendarをちゃんと理解する
koukimiura
0
68
認証統合から始めるフロントエンドの機能単位開発 — マイクロサービス思想の適用
koukimiura
0
130
Fiberとは何か?PHPが“非同期言語”になった瞬間
koukimiura
0
89
Other Decks in Programming
See All in Programming
2年かけて Deno に DOMMatrix を実装した話 / How I implemented DOMMatrix in Deno over two years
petamoriken
0
110
壊れたパーサから始める関数型設計と構成的なパーサ #fp_matsuri
raiga0310
2
390
Built Our Own Background Agent at LayerX #aidevex_findy
layerx
PRO
8
3.1k
【やさしく解説 設計編・中級 #4】ルールの寿命と、システムの年輪
panda728
PRO
2
160
The Bowling Game- From Imperative to Functional Programming - Part 1
philipschwarz
PRO
0
340
はてなアカウント基盤 State of the Union
cockscomb
1
1.3k
自作OSでスライド発表する
uyuki234
1
3.9k
信頼性について考えてみる(SRE NEXT 2026 miniLT)
hayama17
0
210
琵琶湖の水は止められてもNet--HTTPのリトライは止められない / You might be able to stop the water flow of Lake Biwa but you can't stop Net::HTTP retries
luccafort
PRO
0
430
What's New in Android 2026
veronikapj
0
140
継続モナドとリアクティブプログラミング
yukikurage
3
630
地域 SRE コミュニティ最前線 - ホンマでっかSRE勉強会
tk3fftk
0
270
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
Embracing the Ebb and Flow
colly
88
5.1k
Faster Mobile Websites
deanohume
310
32k
GitHub's CSS Performance
jonrohan
1033
470k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
740
Balancing Empowerment & Direction
lara
6
1.2k
Discover your Explorer Soul
emna__ayadi
2
1.2k
So, you think you're a good person
axbom
PRO
2
2.1k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
30 Presentation Tips
portentint
PRO
1
350
Transcript
フルスタックTypeScript入門 〜Hono RPCとZodで実現する型共有〜 2026.07.22 hokkaido.js vol.07@Sapporo 三浦 恒樹 (MIURA KOUKI)
/ 医療ITエンジニア
自己紹介 - ドゥウェル株式会社 に所属(マネージャー) 医療ITエンジニア / 診療情報管理士 / 上級医療情報技師 /
医用画像情報専門技師 TypeScript / Vue.js / Node.js / Java / C# / PHP - 3兄弟の父、休日は習い事の送り迎えとか... - 参加している勉強会 札幌PHP勉強会 ゆるWeb勉強会 AWS初心者LT会in札幌 hokkaido.js さっぽろ医療IT勉強会 - コーディングBGM ラックライフ BLUE ENCOUNT SHANK Dizzy Sun Fist JBUG札幌 えびてく 札幌すごいAI会 函館本線沿線勉強会 JPUG-Ezo - Naru, 名前を呼ぶよ - Survivor, ポラリス JavaDO クラメソ札幌IT勉強会(仮) 札幌IT石狩鍋 VueSapporo
TypeScriptなのに型がズレる? フロントとバックエンド開発で直面する不都合な真実
TypeScript採用時の「型の分断」 型定義の二重管理 スキーマ生成ツールのコスト バックエンド(Node.js/Hono等)とフロントエンド(Vue/React等) OpenAPI (Swagger) や tRPC などを導入して解決しようとする で、同じAPIデータ構造の型を手動で2箇所定義していませんか?
と、ビルド設定の複雑化やコード生成の手間が発生することがあります。 仕様変更時の更新漏れでランタイムエラー発生 小~中規模プロダクトではオーバーヘッドが大きい
フルスタックTypeScriptとは Hono RPC × Zod がもたらす新たなアプローチ
型共有が実現する3つの価値 E2E型安全性 自動補完とリファクタ Single Source of Truth データベース層・バックエンド・フロントエンド IDEの補完機能により、APIパスやクエリ・ボ 型定義と入力バリデーションロジックをZod
まで一切の型断絶がなくなり、APIレスポン ディの型補完が完備。安全かつ高速なコード スキーマに一元化。定義のブレを根本から排 スの変更が即時にフロントに伝播します。 変更が可能です。 除します。
Hono RPC とは? HonoはWeb標準に準拠した高速なWebフレームワークです。その強力な機能 の1つがHono RPCです。 サーバー側のルーター定義から推論された型(AppType)をエクスポートし、フ ロントエンド側でhc()として読み込むだけで、型安全なAPIクライアントが即座 に手に入ります。 コード生成ステップ不要!ビルドのオーバーヘッドゼロ
https://hono.dev/docs/guides/rpc
Zodによるスキーマ駆動開発 ランタイムのデータ検証: TypeScriptの型チェックはコンパイル時のみですが、Zodは実 行時(APIリクエスト時)に実データを確実に検証します。 型推論 (z.infer): Zodスキーマを1つ定義するだけで、z.inferから対応する TypeScript型を自動導出できます。 フロント・バックでの同一共有: フォーム入力検証とサーバー側でのリクエスト検証で全く同じ
Zodスキーマを再利用可能です。 https://zod.dev/
組み合わせる:実践コード解説 Schemas → Backend → Frontend の連携ステップ
1. Zodスキーマの定義 (packages/schemas) ここがポイント • 共通パッケージとして切り出し、型とスキーマをまとめて定義 • z.infer により静的型定義の手動記述をゼロに •
バリデーションルール(文字数やフォーマット)も一所に集約
2. Backend: Hono + zValidator ここがポイント • zValidator でリクエストボディを自動検証 •
c.req.valid(‘json’) には型チェック済みの安全なデータ • メソッドチェインしたAppTypeを抽出・公開
3. Frontend: Vue3 + hc()、Client ここがポイント • hc() でURL補完・HTTPメソッド補完が作動 •
レスポンス型は inferResponseType で簡単にキャプチャ • 送信前にフロントでも safeParse し二重の安全性を確保
まとめ : 型共有が生み出す最高の開発体験 1. スキーマの一元化 2. ビルド負荷ゼロ 3. 抜群のDXと安心感 Zodにより型定義と
Hono RPCはコード生成が不要。 型エラーがAPI不整合を未然に防ぎ、 バリデーションルールを単一の情報源に 型推論だけで軽量・即時反映 大胆なリファクタが可能に ご清聴ありがとうございました!
告知 7/25(土) 17:30~19:00 7/26(日) 13:00~17:00