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
68
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
VueプロジェクトをTypeScript7に対応させる- Side-by-Side戦略による一部高速化 -
koukimiura
0
75
VueSapporo#4
koukimiura
0
34
Vue3_Capacitorでモバイルアプリ開発
koukimiura
0
37
Vueが軽く&速くなる!Vapor Modeを試してみた
koukimiura
0
42
Vue3.6.0-rc_CHANGELOG読み合わせ
koukimiura
0
41
医療DXって何?~電子カルテ標準仕様まで10分で理解する~
koukimiura
1
72
アプリ開発者が知っておくべき『トランザクション分離レベル』とRead Committed の罠
koukimiura
0
91
ITヒヤリハットを整理してみた ~ライフサイクルと原因から考える再発防止策~
koukimiura
1
160
ReactとVueは仲良くできるのか?
koukimiura
0
51
Other Decks in Programming
See All in Programming
XHTMLが残したもの
yosuke_furukawa
PRO
1
380
AWS Step Functions 大規模並列の壁を越える / jaws-sonic-2026-niigata-step-functions
kasacchiful
PRO
0
310
XP祭りでしか伝わらないフリップネタ #xpjug
murabayashi
0
110
「AI時代、配布するPythonコードをどう守るか: 難読化の実験と判断軸」 #PyconJP2026
pkshadeck
PRO
2
150
My Marp Sample
sinoue0108
0
140
片田舎のおっさん、 Swift Buildのダイアモンド問題解決の不具合修正PRを出すが、解決方法がキャッシュをしないようにすることであり、ビルド時間が伸びると言われてマージされないので高速化もする/swiftbuild
yimajo
0
350
異なる設計思想のフレームワークを経験して得た学び
amekuhideki
2
1.5k
in-process GraphQL のすすめ #ginzajs
izumin5210
4
1.5k
Oxlintはいいぞ(続)
yug1224
1
540
Laravelのアプリケーションをどこにデプロイするか #ツナギメオフライン.9
akase244
0
110
FastAPI の並行処理モデルを完全に理解する
hoto17296
9
3.7k
KotlinConf Extended South Korea 2026 Keynote
l2hyunwoo
0
130
Featured
See All Featured
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
490
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.1k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.8k
The Cult of Friendly URLs
andyhume
79
7k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
240
Abbi's Birthday
coloredviolet
3
9.7k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
So, you think you're a good person
axbom
PRO
2
2.1k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
400
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
Crafting Experiences
bethany
1
280
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
800
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