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でDXを上げろ! Hono編
Search
Yusuke Wada
July 14, 2025
Programming
3
810
TypeScriptでDXを上げろ! Hono編
2025-07-14 / Zenncafe#3 日比谷
Yusuke Wada
July 14, 2025
Tweet
Share
More Decks by Yusuke Wada
See All by Yusuke Wada
AI Ramen Fight
yusukebe
0
86
Honoをフロントエンドで使う 3つのやり方
yusukebe
8
4.5k
Honoのおもしろいミドルウェアをみてみよう
yusukebe
2
360
MCP with Cloudflare Workers
yusukebe
2
400
Remix on Hono on Cloudflare Workers
yusukebe
3
720
僕がつくった48個のWebサービス達
yusukebe
21
18k
Honoの来た道とこれから
yusukebe
20
7.1k
JS RPCを理解する
yusukebe
5
880
Honoとhtmx
yusukebe
6
2k
Other Decks in Programming
See All in Programming
ソフトウェア品質を数字で捉える技術。事業成長を支えるシステム品質の マネジメント
takuya542
2
15k
Advanced Micro Frontends: Multi Version/ Framework Scenarios @WAD 2025, Berlin
manfredsteyer
PRO
0
410
「テストは愚直&&網羅的に書くほどよい」という誤解 / Test Smarter, Not Harder
munetoshi
1
200
GPUを計算資源として使おう!
primenumber
1
270
RailsGirls IZUMO スポンサーLT
16bitidol
0
200
Python型ヒント完全ガイド 初心者でも分かる、現代的で実践的な使い方
mickey_kubo
1
240
型で語るカタ
irof
0
730
Agentic Coding: The Future of Software Development with Agents
mitsuhiko
0
150
AI コーディングエージェントの時代へ:JetBrains が描く開発の未来
masaruhr
1
210
Claude Code で Astro blog を Pages から Workers へ移行してみた
codehex
0
120
ふつうの技術スタックでアート作品を作ってみる
akira888
1
1.3k
iOS 26にアップデートすると実機でのHot Reloadができない?
umigishiaoi
0
140
Featured
See All Featured
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
The Pragmatic Product Professional
lauravandoore
35
6.7k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Practical Orchestrator
shlominoach
189
11k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.4k
The Language of Interfaces
destraynor
158
25k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Scaling GitHub
holman
460
140k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
Mobile First: as difficult as doing things right
swwweet
223
9.7k
Transcript
;FOODBGFൺ୩ 5ZQF4DSJQUͰ%9Λ্͛Ζʂ )POPฤ :VTVLF8BEB
.F w :VTVLF8BEB w 8FCGSBNFXPSLEFWFMPQFS w 4FOJPS%FWFMPQFS"EWPDBUF !$MPVE fl BSF
w #PLFUFDPGPVOEFS w $SFBUPSPG)POP w IUUQTHJUIVCDPNZVTVLFCF
ࠓͷςʔϚ 5ZQF4DSJQU
5ZQF4DSJQUͱ%9 w 5ZQF4DSJQU%FWFMPQFS&YQFSJFODF ։ൃऀମݧ Λ্ͤ͞Δ w ΤσΟλͷิ w ࣮ߦલʹΤϥʔʹؾͮ͘ w
υΩϡϝϯτ͕ͳͯ͘ʮͳΜͱͳ͘ʯઌ͕ಡΊΔ
ྫϔομʔ໊ͷิ
)POPͱ5ZQF4DSJQU w ࠷ॳ+BWB4DSJQUͰ࡞ΒΕ͍͕ͯͨɺૣʑʹ5ZQF4DSJQUҠߦ w %9͕༏Ε͍ͯΔେ͖ͳཁҼʹ5ZQF4DSJQUͷܕαϙʔτΛڍ͍͛ͯΔ
ܕʹ·ͭΘΔ֤τϐοΫΛհ͠·͢ w DSFRQBSBN ͷিܸ w #JOEJOHT7BSJBCMFT w 31$ͷੜ w )POP31$ʹ͍ͭͯ
w $MJFOU1SPYZʹܕΛ͚͍ͭͯΔ w 7BMJEBUPSͷઃܭ w ܕͷύϑΥʔϚϯε
DSFRQBSBNͷিܸ
DSFRQBSBNͷিܸ w 13ʮ"EEFEUZQFUPDSFRQBSBNLFZʯͰಋೖ͞Εͨ w ύεύϥϝʔλͷΩʔ͕จࣈྻϦςϥϧܕʹͳΔ
DSFRQBSBN ʹܕ͕ͭ͘ QPTUTDPNNFOUT QPTU*E DPNNFOU*E
࣮DSFRQBSBN
#JOEJOHT7BSJBCMFT
#JOEJOHT7BSJBCMFT w #JOEJOHT$MPVE fl BSFɺ"84-BNCBEBFUDͷڥґଘͷมΦϒδΣ Ϋτͷܕ w 7BSJBCMFTDTFUDHFUͰઃఆɾऔಘՄೳͳͷܕ
ྫ#JOEJOHT7BSJBCMFT
ྫDFOWʹܕ͕ͭ͘
5JQT$MPVEGMBSFͷ#JOEJOHT w AXSBOHMFSUZQFTAίϚϯυͰXSBOHMFSKTPODʹఆٛͨ͠#JOEJOHT ͔Βܕੜͯ͠XPSLFSDPO fi HVSBUJPOEUTΛ࡞ͬͯ͘ΕΔ
31$ͷੜ
31$ͷੜ w αʔόʔ͕͋ͬͯΫϥΠΞϯτ͕ଓ͢Δ߹ͷ w ࠷ॳU31$.JEEMFXBSFΛ࡞͍ͬͯͨ w )POPಠࣗͷ31$࡞ΕΔͷͰͳ͍͔ʁ w αʔόʔαΠυ͔ΒܕΛڞ༗ w
ΫϥΠΞϯτΛ৽ͭͬͯ͘͘͠ܕΛཧղ͢Δ
U31$ w αʔόʔαΠυͰ"1*Λఆٛ w "1*ఆٛ ϝιουҾฦΓ Λ5ZQF4DSJQUͷܕͰڞ༗ w ΫϥΠΞϯταΠυͰܕΛಡΈࠐΉͱΫϥΠΞϯτͰܕ͕ޮ͘
U31$αʔόʔαΠυ IFMMPͱ͍͏ΤϯυϙΠϯτ͕ RVFSZʹ{ name: string, age: number}Λ ظ͍ͯ͠Δ
U31$ΫϥΠΞϯταΠυ AIFMMPRVFSZA͕ύεͱͯ͠ੜ͑Δ {name:string; age:number}͕ ҾͰ͋Δ͜ͱ͕Θ͔Δ
)POPಠࣗͷ31$Λ࡞Εͳ͍͔ w 13ʮUSQDBEBQUFSʯͷίϝϯτͰ ఏҊ͞Εͨ w ʮU31$Ͱͳ͘ɺ)POP༻ʹωΠςΟϒ ͷ1SPYZΫϥΠΞϯτΛ࡞͢Δํ͕ྑ ͍ͷͰͳ͍͔ʁͦͷํ͕ͣͬͱγϯϓ ϧͰ৴པੑ͕ߴ͍ͱࢥ͏ʯ
W Ͱ31$ػೳ͕ಋೖ
)POP31$ʹ͍ͭͯ
)POPͷ31$ಛ w ൚༻తͳόϦσʔλɺGFUDIϥούʔͷΫϥΠΞϯτ AIDA ΛAIPOPA͕ఏڙ w ;PEɺ7BMJCPUɺ"SL5ZQFͳͲόϦσʔγϣϯϥΠϒϥϦͰεΩʔϚఆٛ w όϦσʔγϣϯରΫΤϦɺϑΥʔϜϘσΟɺ+40/ϘσΟɺϔομFUD w
ϨεϙϯεADKTPO AΛฦ͚ͩ͢ w )POPΦϒδΣΫτͷܕΛڞ༗ͯ͠ΫϥΠΞϯτͷδΣωϦΫεʹ͢ w ύεͱϦΫΤετ߲͕ิ͞ΕΔ w ฦ͖ͬͯͨ3FTQPOTFͱ+40/ϘσΟʹܕ͕͍͍ͭͯΔ
"1*ͷྫ (&5IFMMP OBNF)POP { message: “Hello Hono” } όϦσʔτ
⭕IFMMP OBNF)POP ❌IFMMP ❌IFMMP BHF
εΩʔϚΛఆٛ͢Δ TFSWFSUT { name: string} Λظ͢Δɾݕূ͢Δ
όϦσʔλʹ͢ TFSWFSUT ྫ ⭕IFMMP OBNF)POP ❌IFMMP ❌IFMMP BHF
όϦσʔτͨ͠Λऔಘ͢Δ TFSWFSUT IFMMP OBNF)POPͷ߹ { name: “Hono” } ͕ೖΔ
ϨεϙϯεΛฦ͢ TFSWFSUT { message: string } ͕ฦΓͷܕͩͱఆٛ͞ΕΔ
αʔόͷܕΛFYQPSU͢Δ TFSWFSUT )POPΠϯελϯεͷܕΛऔΔ BQQHFU ܕ͖ͭͷ)POPΠϯελ͢Λฦ͢
AID AͷδΣωϦΫεʹαʔόͷܕΛ͢ DMJFOUUT
ύεͱҾʹܕ͕ͭ͘ DMJFOUUT (&5IFMMP OBNF)POP Λ͍ͯ͠Δ
ASFTKTPO Aʹ݁Ռʹܕ͕ͭ͘ DMJFOUUT { message: string } ͷܕ͕ͭ͘
εΩʔϚͷมߋΛͨ͠ΒܕΤϥʔ͕ग़Δ
)POPΠϯελϯεͷฦΓͷܕ͕"1*Λද͢ (&5AIFMMPA ΫΤϦύϥϜʹOBNFΛظ͢Δ +40/Ϩεϙϯε ελʔςε { message: string }
$MJFOU1SPYZʹܕΛ͚͍ͭͯΔ
+BWB4DSJQUͷA1SPYZA w +BWB4DSJQUͷ1SPYZɺΦϒδΣΫτʹର͢Δૢ࡞ʢϓϩύςΟΞΫηεɺؔ ݺͼग़͠ͳͲʣΛԣऔΓͯ͠ɺΧελϜͷಈ࡞ΛఆٛͰ͖ΔΈ ྫ͑ύεͱϝιουΛνΣʔϯͰදݱͰ͖Δ ࣮ྫ
ύεɺϝιουɺύϥϝʔλɺϨεϙϯεʹܕΛ͚͍ͭͯΔ Ϩεϙϯε ύεɾϝιου ύϥϝʔλ
݁Ռ ύε ϝιου ύϥϝʔλ Ϩεϙϯε 💡͋͘·ͰAGFUDIAͷϥούʔ ͳͷͰϨεϙϯε3FTQPOTF ΦϒδΣΫτ
όϦσʔλͷઃܭ
όϦσʔλͷઃܭ w AIPOPWBMJEBUPSAബ͍ w ϛυϧΣΞʹͳ͍ͬͯΔ w όϦσʔγϣϯϩδοΫΛ࣋ͨͳ͍ w ରͷΛόϦσʔγϣϯؔʹ͚ͩ͢ w
ܕఆٛ
AIPOPWBMJEBUPSAΛૉͰ͏ ΫΤϦύϥϝʔλͷ͕དྷΔ { name: “Hono” } ݕূͨ݁͠ՌΛฦ͢ { name: “Hono”
} ܕ͕ࣗಈతʹͭ͘ { name: string }
;PE7BMJEBUPSͷ࣮ w AIPOPWBMJEBUPSAΛϥοϓ w όϦσʔγϣϯؔΛ࣮ w TDIFNBQBSTF ૬Λ࣮ߦ
όϦσʔλϛυϧΣΞ w "SL5ZQFWBMJEBUPS w &GGFDU4DIFNB7BMJEBUPS w 4UBOEBSE4DIFNB7BMJEBUPS w 5ZQF#PY7BMJEBUPS w
5ZQJB7BMJEBUPS w VOLOPXOVUJM7BMJEBUPS w 7BMJCPU7BMJEBUPS w ;PE7BMJEBUPS 💡4UBOEBSE4DIFNBʹد͍ͤͯ͜͏ͱ͍͏͕͋Δ
ܕͷύϑΥʔϚϯε
ܕͷύϑΥʔϚϯε w ܕఆ͕ٛෳࡶ w νΣʔϯ͢Δ͜ͱͰܕ͕ੵΈ্͕͍ͬͯ͘
͘ͳΔPSܕΛࣦ͏ w ྫ w ϧʔτͷ͕ͩͱิ͕͍ w ϧʔτͷ͕ͩͱܕΛࣦ͏ ͩͱBOZʹͳΔ
ରࡦ w ܕఆٛΛγϯϓϧʹ͢Δ w ύϑΥʔϚϯεͷଌఆ w σόά͢Δ w UTHPͷظ
ܕఆٛΛγϯϓϧʹ͢Δ w AUZQFTUTA w ෳࡶɾͩͬͨΓ͢Δ w ߦ͋Δ
ύϑΥʔϚϯεଌఆ w AUTDEJBHOPTUJDTA w $*Ͱଌఆ݁Ռ͕͔ΔΑ͏ʹͳ͍ͬͯΔ w 5PUBMUJNFΒ͖͕ͭ͋Δ w *OTUBOUJOBUJPOTΛݟ͍ͯΔ
σόά͢Δ w AUTDHFOFSBUF5SBDFA w ग़ྗͨ͠USBDFKTPOΛ$ISPNF 1FSGFUUPʹಡΈࠐ·ͤΔ
UTHPͷظ w ίϯύΠϥΤσΟλଆͷύ ϑΥʔϚϯε্͕͕Ε͍͍ͱ ͍͏ൃ w AUTHPAͷ/BUJWF1SFWJFXͩͱ ݄ʹଌఆͯ͠ഒ͘ͳͬͨ
ܕͷύϑΥʔϚϯε࠷ॏཁ՝ w ࠓϥϯλΠϜͷ࣮ߦΑΓܕ͕ʹͳΔ߹͕͋Δ w ͦͦ"1*Λม͑Δ͜ͱ͋Γ͏Δ w ؤுΓ·͢
·ͱΊ
ࠓͬͨ͜ͱ w DSFRQBSBN ͷিܸ w #JOEJOHT7BSJBCMFT w 31$ͷੜ w )POP31$ʹ͍ͭͯ
w $MJFOU1SPYZʹܕΛ͚͍ͭͯΔ w 7BMJEBUPSͷઃܭ w ܕͷύϑΥʔϚϯε )POP5ZQF4DSJQUΛ׆༻ͯ͠%9 Λ্͍͛ͯΔ
)POPΛࢀߟʹ 5ZQF4DSJQUΛ׆༻ͯ͠Έ͍ͯͩ͘͞