Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
型安全RESTで爆速プロトタイピング – Hono RPC実践
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
tacke
May 27, 2025
Programming
720
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
型安全RESTで爆速プロトタイピング – Hono RPC実践
https://layerx.connpass.com/event/355401/
でのLTスライド
tacke
May 27, 2025
More Decks by tacke
See All by tacke
スモールチームがAmazon Cognitoでコスパよく作るサービス間連携認証
tacke_jp
4
5.7k
Androidエンジニアが抑えておくべきUnicode Emojiの知識 (DroidKaigi 2019) / Unicode Emoji for Android Engineer DroidKaigi09
tacke_jp
12
5k
Parse.comからGCPへ移行した話 ~1年間にわたる脱出プロジェクト~
tacke_jp
2
2.2k
Other Decks in Programming
See All in Programming
Performance Optimization With LLMs
xleitix
0
190
sbt 2.0: takeoff
eed3si9n
0
170
ジョジョの世界をXRで再現する
mofurune
0
180
Web Framework Benchmark Battle 2026, Any%
a_matsuda
2
2.7k
[2026-10-14](C)Re:ゼロから始める異世界生活〜始まりの終わりと終わりの始まり〜
tosite
0
140
Agentic Software Factoryに、すごく賢いIF文を。 / super smart IF statement into the Agentic Software Factory.
rkaga
8
2.3k
dotNET_vulnclicker_intro.pdf
deka_morita
0
150
気持ちぃ〜角丸 Squircle
ryu1013
0
330
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
300
最近”作らせてる” ローカルAIアプリの話
akit37
0
490
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
200
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
520
Featured
See All Featured
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
3.5k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
67k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.7k
The Pragmatic Product Professional
lauravandoore
37
7.5k
Git: the NoSQL Database
bkeepers
PRO
433
67k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
The Spectacular Lies of Maps
axbom
PRO
1
1.1k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Intergalactic Javascript Robots from Outer Space
tanoku
273
28k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
Thoughts on Productivity
jonyablonski
76
5.4k
Paper Plane
katiecoart
PRO
5
54k
Transcript
商号等 三井物産デジタル‧アセットマネジメント株式会社 ⾦融商品取引業者 関東財務局⻑(⾦商)第3277号 加⼊協会 ⽇本証券業協会、⼀般社団法⼈ ⽇本投資顧問業協会、⼀般社団法⼈ 第⼆種⾦融商品取引業協会 ©Mitsui & Co.
Digital Asset Management, Ltd. 型安全RESTで爆速プロトタイピング ‒ Hono RPC実践 TS Kaigi 2025 After Night LT 2025.5.27
Who am I? • AI Product Team Manager in MDM
(LayerXから出向) • 社内向け内製 LLM Webアプリ を full TypeScript で開発 • モットー: “Build → Ship → Feedback” を最速ループ • 今⽇のテーマ: そのループを⽀える Hono RPC 2 武市 融紀 (X: @tacke_jp)
The “API-Typing” Problem • フロント ↔ サーバー間は ただの JSON •
🛑 型がない → 仕様 drift / runtime error • 既存解 ◦ gRPC ▶ readable じゃない ◦ tRPC ▶ JSON が独特 ◦ GraphQL / JSON-RPC ▶ 汎⽤だけど over-spec • 欲しいのは: ⼈間が読める REST + TypeScript 型安全 3
Landscape Quick Scan 4 ⽅式 プロトコル∕ペイロード 読みやすさ コード⽣成 gRPC HTTP/2,
ProtoBuf 😵 必要 GraphQL POST 1本 😐 (スキーマ必要) tRPC JSON-RPC 😐 不要 Hono RPC 純REST 😀 不要
Enter Hono RPC • Hono: 超軽量Webアプリケーションフレームワーク (24k stars) • RPC
機能 ◦ export type AppType = typeof app → hc<AppType>() だけ ◦ コード⽣成ゼロで型を共有 5 RESTful JSON に 型 をのせる コード⽣成 0, Hot-reload 100%を実現
How it Works // server.ts const route = app .post(
'/posts', zValidator('json', z.object({ title: z.string(), body: z.string(), })), (c) => c.json({ ok: true, message: 'Created!', }, 201) ) export type AppType = typeof route 6 // client.ts import { hc } from 'hono/client' import type { AppType } from '../server' const client = hc< AppType>('/api') const res = await client.posts.$post({ json: { title: 'Hello', body: 'Hono RPC is cool', }, }) // data: { ok: boolean; message: string } const data = await res.json()
✨ What I Like • 普通の REST + 強い型 =
学習コストほぼゼロ • 変更 → 即 red-squiggle (tRPC 同等体験) • ルート毎に HTTP ステータス × 型 を区別可 • 型安全だから UI <-> API 断絶を防⽌ 7
⚠ Caveats / Gotchas in Practice • full-TS プロジェクト限定 •
ミドルウェア経由の Response型は 現状推論されない • 複雑な型は IDE 上で … 折り畳まれる ◦ Tips: 末端 hover ∕ c.json<Foo>() のように明⽰型を付ける • ルータは method chain で書かないと推論が途切れる ◦ 公式ドキュメントでも⾮RPC部分の例はchainしていないので Coding Agentが引っ張られがち 8
⚠ Caveats / Gotchas in Practice (2) // ❌ NG:
各ハンドラを後から繋げる const app = new Hono() app.get('/hello', (c) => c.json({ msg: 'hi' })) app.post('/hello', (c) => c.json({ ok: true })) export type AppType = typeof app // ←推論されない! 9 // ✅ OK: chain してから変数に束ねる const route = new Hono() .get('/hello', (c) => c.json({ msg: 'hi' })) .post('/hello', (c) => c.json({ ok: true })) export type AppType = typeof route // works
Case Study: “Copilot” for ファンド契約書 • pnpm workspaceで web (Next.js)
と backend (Hono API server) を分離 ◦ api で export type AppType → web で hc<AppType>() • SWR + Hono Client = 型安全 Data Fetching • API で { success: true | false } union を返す ◦ UI 側で toast 必須チェック を静的解析 • cookieAuth middleware は new Hono<{ Variables: AuthUser }>() で推 論注⼊ 10
まとめ • REST 可読性 × 型安全 × 開発速度 = Hono
RPC • プロトタイピング勢‧Edge Deploy 勢に特におすすめ • 試したくなったら 👉 pnpm add hono @hono/zod-validator 11
コーポレートサイト https://corp.mitsui-x.com/ サービスサイト(ALTERNA) https://alterna-z.com/