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
kouki.miura
July 22, 2026
Programming
63
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
1
58
アプリ開発者が知っておくべき『トランザクション分離レベル』とRead Committed の罠
koukimiura
0
82
ITヒヤリハットを整理してみた ~ライフサイクルと原因から考える再発防止策~
koukimiura
1
150
ReactとVueは仲良くできるのか?
koukimiura
0
46
ポジティブアウトカムを用いた医療費削減の可能性について
koukimiura
0
88
VueSapporo#2
koukimiura
0
67
Vuetify4 v-calendarをちゃんと理解する
koukimiura
0
87
認証統合から始めるフロントエンドの機能単位開発 — マイクロサービス思想の適用
koukimiura
0
150
Fiberとは何か?PHPが“非同期言語”になった瞬間
koukimiura
0
99
Other Decks in Programming
See All in Programming
変わらないものが、変わるものを決める — 意図駆動開発 × イベントソーシング × イミュータブル | What Doesn't Change Decides What Can — IDD × Event Sourcing × Immutability
tomohisa
0
1.8k
メールのエイリアス機能を履き違えない
isshinfunada
0
250
in-process GraphQL のすすめ #ginzajs
izumin5210
4
1.4k
freeeにおけるEvalsの実践例の紹介
freee
PRO
0
140
jsmini JavaScript Engine を作ってみた話
yosuke_furukawa
PRO
0
350
Android CLI
fornewid
0
230
バグを直したら useEffect が消えた
colorful12
3
690
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
500
Detecting Compromised CI with eBPF and Cilium Tetragon
lizrice
0
240
いまどきの Codex で開発する visionOS アプリの開発スタイルについて
karad
0
160
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
5.1k
プロポーザルを書いてもらう
pvcresin
0
570
Featured
See All Featured
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
420
Statistics for Hackers
jakevdp
799
230k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
66
57k
GitHub's CSS Performance
jonrohan
1033
470k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
380
How to make the Groovebox
asonas
2
2.3k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
450
Darren the Foodie - Storyboard
khoart
PRO
3
3.7k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
210
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
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