Upgrade to PRO for Only $50/YearâLimited-Time Offer! ð¥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AI Coding Agent Enablement in TypeScript
Search
Yuku Kotani
May 23, 2025
Programming
21
14k
AI Coding Agent Enablement in TypeScript
TSKaigi 2025
https://2025.tskaigi.org/
Yuku Kotani
May 23, 2025
Tweet
Share
More Decks by Yuku Kotani
See All by Yuku Kotani
äžåç·æ¥åæ¹åãæ¯ãã瀟å AIãšãŒãžã§ã³ãåºç€ã®èŠè«Š
yukukotani
8
2.8k
MCPãšãã¶ã€ã³ã·ã¹ãã ã«ç«èãããã¶ã€ã³ãšå®è£ ã®èå
yukukotani
6
2.3k
Scale out your Claude Code ~âšâ©èªç€Ÿå°çšAgentã§10xããéçºããã»ã¹~
yukukotani
10
4.6k
AI Coding Agent Enablement - ãšãŒãžã§ã³ããèªèµ°ãããã
yukukotani
14
8k
Expoã«ããã¢ããªéçºã®çŸåšå°ãšReact Server Componentsãåãéãæªæ¥
yukukotani
3
730
React 19ã§ãæè»œã«CSS-in-JSãèªäœãã
yukukotani
6
950
åãæãæãTypeScriptã®æªæ¥ãåæã«å åããã
yukukotani
12
3.4k
Webæè¡ãé§äœ¿ããŠãŠãŒã¶ãŒã®ç»é¢ããé²ç»ããã
yukukotani
14
7.9k
Capacitor補ã®WebViewã¢ããªããReact Native補ã®ãã€ããªããã¢ããªãž
yukukotani
5
1.8k
Other Decks in Programming
See All in Programming
FluorTracer / RayTracingCamp11
kugimasa
0
180
20251127_ãŒã£ã¡ã®ããã®æèŠªäŒå¯ŸçäŒè°
kokamoto01_metaps
2
400
ã¹ã¿ãŒãã¢ãããæ¯ããæè¡æŠç¥ãšçµç¹ã¥ãã
pospome
8
15k
ZOZOã«ãããAI掻çšã®çŸåš ~ã¢ãã€ã«ã¢ããªéçºã§ã®AI掻çšç¶æ³ãšäºäŸ~
zozotech
PRO
8
4.1k
å ç¢ãªããã³ããšã³ããã¹ãåºç€ãæ§ç¯ããããã«è¡ã£ãåãçµã¿
shogo4131
6
1.9k
ã¢ãã³JSãã¬ãŒã ã¯ãŒã¯ã®ãã«ãããã»ã¹ ããªãReactã¯503è¡ãSvelteã¯12è¡ãªã®ãã
fuuki12
0
190
æ°åãšã³ãžãã¢ã®ãã«ãªã¯ãšã¹ã with AIé§å
fukunaga2025
0
140
Socio-Technical Evolution: Growing an Architecture and Its Organization for Fast Flow
cer
PRO
0
260
[SF Ruby Conf 2025] Rails X
palkan
0
440
AWS CDKã®æšããã€ã³ãNéž
akihisaikeda
1
240
ãCA.ai #3ãã¯ãŒã¯ãããŒããèŠçŽãAIãšãŒãžã§ã³ã â å¿ èŠãªå Žé¢ãšâéžã°ãªãâ倿
satoaoaka
0
210
Microservices Platforms: When Team Topologies Meets Microservices Patterns
cer
PRO
1
910
Featured
See All Featured
Six Lessons from altMBA
skipperchong
29
4.1k
How GitHub (no longer) Works
holman
316
140k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.2k
Visualization
eitanlees
150
16k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
253
22k
Automating Front-end Workflow
addyosmani
1371
200k
[RailsConf 2023] Rails as a piece of cake
palkan
58
6.1k
Context Engineering - Making Every Token Count
addyosmani
9
460
Transcript
AI Coding Agent Enablement in ~ãšãŒãžã§ã³ãã ãããã~ TypeScript èªèµ° @yukukotani
2025/05/23 - TSKaigi 2025
èªå·±çŽ¹ä» Yuku Kotani VP of Technology @ Ubie, Inc. Tech
Advisor @ SALESCORE, Inc. @yukukotani @yukukotani
ç®æ¬¡ 1. åºæ¬çãªèãæ¹ 2. ã€ããŒããªã³ã°ã®ã¢ãããŒã 3. ãšã³ã·ã¹ãã ã®æªæ¥ 4. ãŸãšã
ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ã ãã£ãšäœ¿ãããªãããïŒ
䜿ãããªãã£ãŠãªãã ããïŒ
䜿ãããªãã£ãŠãªãã ããïŒ ãã£ãšèªèµ°ããŠã»ããïŒ
èªèµ°ã£ãŠãªãã ããïŒ
èªèµ° = Human-in-the-Loop ããªãã¹ããããªã Copilotæä»£ã¯ã¹ããããåäœã§Human-in-the-LoopãåããŠãã Agentæä»£ã«ã¯ã§ããã ãèªåŸçã«å€æãããŠ1ã«ãŒãã®äœæ¥åäœã倧ããããã
ããã©ã«ãã®è§£ç©ºéã¯å€§ãããã ããã©ã«ãã§ã¯ãä»»æã®TypeScriptããããã®â𠿥µããŠåºã解空éã§ãšãŒãžã§ã³ããåã â 粟床ãäœã 解空é è§£ çæå¯Ÿè±¡ã®èšèªã®Syntaxå šäœ ïŒçã«ã¯ããããããã¹ãïŒ
åºæ¬æ¹éïŒå¯èœãªéã解空éãçµã äŒç€Ÿã»ãããžã§ã¯ãåºæã®è§£ç©ºéã¯æ¬æ¥ãã£ãšçãã¯ã é©åã«å¶çŽãäžããŠè§£ç©ºéãçµããã 解空é äŒç€Ÿã»ãããžã§ã¯ãåºæã®âš èŠçŽã»ãã¡ã€ã³ç¥èã»ãã¶ã€ã³ãªã© è§£
ã©ããã£ãŠïŒ
人éãšåæ§ã«ã€ããŒããªã³ã°ãã ã©ããã£ãŠïŒ
(1) ã³ã³ããã¹ãæ³šå ¥
解空éã®å®çŸ©ãLLMã«äžãã ããã¥ã¡ã³ããªã©äœããã®æ¹æ³ã§LLMã«ã解空éã®å®çŸ©ããäžãã 代衚çã«ã¯ Cursor Rules / Cline Rules ãªã© 解空é
äŒç€Ÿã»ãããžã§ã¯ãåºæã®âš èŠçŽã»ãã¡ã€ã³ç¥èã»ãã¶ã€ã³ãªã©
(2) æ©æ¢°çæ€æ»
æ©æ¢°çæ€æ»ã§å®çŸ©ãã解空éã«æŒãæ»ã LLMã®åºåãæ©æ¢°çã«åãå ¥ãæ€æ»ããNGã®å Žåã¯ãã£ãŒãããã¯ãã è§£ç©ºé æ©æ¢°çã«ãã£ãŒãããã¯ãäžã㊠解空éãžæŒãæ»ã
ç®æ¬¡ 1. åºæ¬çãªèãæ¹ 2. ã€ããŒããªã³ã°ã®ã¢ãããŒã 3. ãšã³ã·ã¹ãã ã®æªæ¥ 4. ãŸãšã
åãã§ãã¯
ããããåã£ãŠã³ãŒãçæã«æå¹ãªã®ïŒ  TS(åæ³šéä»ã)ãšJSã§ãã³ãããŒã¯ã¹ã³ã¢ã¯ã»ãŒå€ãããªã [arXiv:2208.08227h  anyãã€ããTSã§ã¯ã¹ã³ã¢ãäžãã [arXiv:2208.08227h âä»ã®ãšãããåããããã ãè¯ãã³ãŒããçæããããã§ã¯ãªã Â
åããããã粟床ãäžããããã§ã¯ãªÂ Â äžæãªåã¯ããããã€ãºã«ãªãé广 https://nuprl.github.io/MultiPL-E/
ãšãŒãžã§ã³ããªãïŒ åçºã®ã³ãŒãçæã«ã¯åœ¹ã«ç«ããªããšããŠãã â解空éã«æŒãæ»ãâããã®ãšãŒãžã§ã³ããžã®å ¥åãšããŠã¯åœ¹ç«ã¡ããïŒ èªåŸçã«ãšã©ãŒæ¹åïŒçæ³ïŒ
ããããŸããããªããã¡ 3åãããã«ãŒãããæ«ã«anyãšããã£ã¹ãã§èª€éåããã¡ TSã®é«åºŠãªåã解決ããèœåã¯ãŸã ãªããã
ã®ã§ãåã ãã¯æžããŠããã ãã¡ã€ã³ã¢ãã«ã颿°ã®ã·ã°ããã£ãå®çŸ©ãããŸã§ã¯ã¬ãããªäŒŽèµ°ãã ãã®åŸã®å®è£ ãèªåŸçã«ãã£ãŠããã å ã«ã·ã°ããã£ãããããšã§ åãšã©ãŒã®ã¹ã³ãŒãã»è€é床ãäœãïŒ
ãŠãã³ãŒããçæããæç¹ã§åãå®ããªãã®ã LLMãã³ãŒããåºåããæç¹ã§åå¶çŽãå®ã£ãŠãããã°ã ãããããâ解空éã®äžâãªã®ã§äœãèããªããŠæžã
å¶çŽä»ããã³ãŒãã£ã³ã°ã§ ãå®ã ææ³ LLMã®ãã³ãŒãã£ã³ã°ã®ã¿ã€ãã³ã°ã§ææ³ã«ãããããªãããŒã¯ã³ãé€e  ãã³ãŒãã£ã³ã°: LLMãåºåããããŒã¯ã³ç¢ºçãããçµæã®ããŒã¯ã³ã決G  xGrammar[arXiv:2411.15100]ãDOMINO[arXiv:2403.06988] ãªã©
(CFG baseX   å°ãªããšãStructured Outputã¯ããããããšããã£ãŠãã â»å瀟LLMããã®ææ³ã䜿ã£ãŠãããåã«ãã£ããåŠç¿ãããŠãã ããã¯äžl
Structured Output ã®ä»çµã¿ https://openai.com/ja-JP/index/introducing-structured-outputs-in-the-api/#zhi-yue-fu-kidekodo
Structured Output ã®ä»çµã¿ https://openai.com/ja-JP/index/introducing-structured-outputs-in-the-api/#zhi-yue-fu-kidekodo
LLMã®ãã³ãŒãã£ã³ã°ã®ã¿ã€ãã³ã°ã§åã«ãããããªãããŒã¯ã³ãé€Â e ã°ã©ããšãªãŒãããã³ã§ããã以äžçæããŠã絶察åãšã©ãŒããªããŒã¯ã³ããã¹ãŠ é€Â e Type-Constrained Decoding[arXiv:2504.092464 e HumanEval(æ°èŠå®è£ ãã³ã)ã§ã¯ã³ã³ãã€ã«ãšã©ãŒç å¹³å75%6
e pass@1 ã¯æ°èŠå®è£ ã¿ã¹ã¯ +3.5pp, ãšã©ãŒä¿®æ£ã¿ã¹ã¯ +37pp, etc..e e e ãã¡ããã¡ãå°ããTSã®ãµãã»ããã§ããåããªã â»ãŸã å šãå®ç𿮵éã§ã¯ãªÂ â ãã®ã¢ãããŒããé²ãã°ãæ¢åã³ãŒãã®åãæŽ»èºãããïŒ åæ§ã«å¶çŽä»ããã³ãŒãã£ã³ã°ã§ ãå®ã å
Linter
å€å žçãªéçè§£æã»èªåãã¹ã H ãšãŒãžã§ã³ãã«Linterãåãã§ãã¯ãèªåãã¹ããå®è¡ããU H ãã®çµæãããšã«èªåŸæ¹åããŠãpassãããŸã§åæã«ã«ãŒã
ãªãå€å žçææ³ïŒ p LLM-as-a-judgeã®ããã«å é²çãªè©äŸ¡ææ³ãããããâš ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ããžã®ãã£ãŒãããã¯ã«ã¯éã®åŒŸäžžã§ã¯ãªX p éæ±ºå®è«çã§ãããçã®æå³ã§âä¿èšŒâã§ããªX p å®è¡é床ãé ãããšãŒãžã§ã³ãã®PDCAã®ããã«ããã¯ã«ãªã â å€å žçãªéçè§£æã»èªåãã¹ããæå¹ãäžè¬çãªã«ãŒã«ã»ããã ãã§ãªã
ã ãããžã§ã¯ãåºæã®ã«ãŒã«ãã©ãã©ãæžããŠè§£ç©ºéãçµã£ãŠãã
ãããªã«ãŒã«æžãã®å€§å€ã»ã»ã»
誰ã§ãç°¡å3ã¹ããã
æ°ã«ãªã£ãåºåã«ãã£ãŒãããã¯
ÃÃ è©°ãã
ÃÃ ã§ãããã
LLMã¯LLMã®æ°æã¡ãããã ãã£ãŒãããã¯ããŒã¹ã§è©°ãããšãâ2床ãšç¹°ãè¿ããªãâããã®ãšã©ãŒãèãã
ããã³ãããçŽãåã«Linter g Linterã¯åãã§ãã¯ãéã£ãŠâãã¯ã¹ãã¢ã¯ã·ã§ã³âãæç€ºã§ã) g Linterã¯ããã³ãããšéã£ãŠæ±ºå®çã§ãã(=ä¿èšŒã§ããq g ãªãã¹ãåãã¬ãã¥ãŒã2床ããªããŠè¯ãããã«ãã
ãã¶ã€ã³ã·ã¹ãã
ãã¶ã€ã³ã·ã¹ãã (Ubie Vitals)ã®MCPãµãŒããŒå ãã¶ã€ã³ã·ã¹ãã ãMCPãµãŒããŒã«ããããšã§ LLMã«ã³ã³ããã¹ããæ³šå ¥ã HTML+CSSãšããåºå€§ãªè§£ç©ºéããçµã
DEMO
ãã¢ã倱æãããšãçš MCPã§get_componentsããŒã«ãå©ã
ãã¢ã倱æãããšãçš ã³ã³ããŒãã³ãã®å®è£ ããã®ãŸãŸè¿ããŠãããã³ãŒããšJSDocãããã³ãã代ãã
ãã¢ã倱æãããšãçš ã³ã³ããŒãã³ãã®ãã¹ããå«ãããfew-shot prompting 代ããã«ãªã
ãã¢ã倱æãããšãçš ããŸããããšãã
åè https://zenn.dev/ubie_dev/articles/f927aaff02d618
ã³ãŒããããã¥ã¡ã³ãã«ãªã W ããããéçãªãŠãŒã¹ã±ãŒã¹ã«ãããŠMCPãšãå ¥åæ¹æ³ã¯ã©ãã§ããw W MCPãããã®ãã³ã³ããã¹ãã«å ¥ããã®ãããã®ãã¯ã¢ãã«ç¹æ§æ¬¡d W 倧äºãªã®ã¯å ¥åã«å€ããæ å ±(ããã¥ã¡ã³ã,ãã¶ã€ã³ã·ã¹ãã ,etc...)ã®æŽ ãã¶ã€ã³ã·ã¹ãã 以å€ã«ããŠãŒã¹ã±ãŒã¹ããããããã W TypeScriptã³ãŒããããã¥ã¡ã³ããšããŠè²ãŠã䟡å€ããÂ
W
[宣äŒ] ã¢ãã¿ãŒã€ãã³ããããŸã TypeScriptã³ãŒããããã¥ã¡ã³ããšããŠæ©èœããã話ã®ç¶ãã¯ãã¡ã https://bitkey.connpass.com/event/351174/
ç®æ¬¡ 1. åºæ¬çãªèãæ¹ 2. ã€ããŒããªã³ã°ã®ã¢ãããŒã 3. ãšã³ã·ã¹ãã ã®æªæ¥ 4. ãŸãšã
Speed is King t ã¶ã£ã¡ããä»ãŸã§ãLinterãšãã«ãããŸã§éåºŠãæ±ããŠããªãã£Â t CIåŸ ã£ãŠãéã¯ä»ã®ããšãããã»ã»T t ãŠãã©ã¡ãã«ããtscãé ããã»ã»T t
ãã©ããã¯äººéã®æé軞ã§ã®9 t 1åéã®éçè§£æã§ããããã³ãŒãã30åã§æžã人éãš30ç§ã§æžãAIãšã§ã¯âš ããã«ããã¯å ·åãæ®µéã t ããŒã«ãã§ã€ã³ã¯ããã·ãªã¢ã¹ã«é床ã«åãåãå¿ èŠããã
Speed is King Linter以å€ã«ãã»ã»Â d ã¯ã©ãŠãåãšãŒãžã§ã³ãã¯ã³ã³ããã«ããisolationãäž»æµ! d 1ãã£ããããšã«ã³ã³ãããäœx d âããã±ãŒãžãããŒãžã£ã®é床ãããã«ããÂ
d çç£éãçå¢ããããšã§ãããã€ã®æ©äŒãå¢ãx d âãã«ãïŒãã³ãã©ãŒïŒãããã«ãã d LLMãã³ãŒãã£ã³ã°ã®ã¿ã€ãã³ã°ïŒããŒã¯ã³çæããšïŒã«åã°ã©ãæ§Â d âåãã§ãã«ãŒãããã«ããã¯ïŒtsgoæé«ïŒïŒ TSãšã³ã·ã¹ãã ã¯ãã§ã«è¯ãæµãã«ä¹ã£ãŠããã®ã§æåŸ ã§ãã
Code Generation over Complex Puzzle 2 è€éãªåãšã©ãŒããã¯ãã¯ã¹ãã¢ã¯ã·ã§ã³ãå°ãã®ããããã( 2 ã³ãŒãçæã«å¯ãããšåãšã©ãŒãã·ã³ãã«ã«ããã( 2
ã³ãŒãçæãè€éæ§ã ããâãªããããããã£ããåçæããŠã¿ãâã¯æç
ç®æ¬¡ 1. åºæ¬çãªèãæ¹ 2. ã€ããŒããªã³ã°ã®ã¢ãããŒã 3. ãšã³ã·ã¹ãã ã®æªæ¥ 4. ãŸãšã
ãŸãšã é£ã³éå ·ã®åã«ãæ®éã®äººéãšå°ç¶ãã®ã€ããŒããªã³ã°ã§AIãèªèµ°ãããã7 5 話ãè¶³ããªãããšïŒããŒã¹ãæèŠªäŒã§è©±ããŸããã! 5 ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ããåã¶ã¢ãŒããã¯ã0 5 LLMã«ããæ¢çŽ¢çãã¹ãïŒV.S. 決å®è«çãªå€å žçãã¹ãïŒ
ããããšãããããŸãã Ubieã®ããŒã¹ã«ããŸãïŒ