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
AI Coding Agent Enablement in TypeScript
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Yuku Kotani
May 23, 2025
Programming
21
15k
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
3.3k
MCPとデザインシステムに立脚したデザインと実装の融合
yukukotani
6
2.6k
Scale out your Claude Code ~自社専用Agentで10xする開発プロセス~
yukukotani
10
4.9k
AI Coding Agent Enablement - エージェントを自走させよう
yukukotani
14
8.1k
Expoによるアプリ開発の現在地とReact Server Componentsが切り開く未来
yukukotani
3
800
React 19でお手軽にCSS-in-JSを自作する
yukukotani
6
990
僕が思い描くTypeScriptの未来を勝手に先取りする
yukukotani
12
3.4k
Web技術を駆使してユーザーの画面を「録画」する
yukukotani
14
8k
Capacitor製のWebViewアプリからReact Native製のハイブリッドアプリへ
yukukotani
5
1.9k
Other Decks in Programming
See All in Programming
高速開発のためのコード整理術
sutetotanuki
1
410
Unicodeどうしてる? PHPから見たUnicode対応と他言語での対応についてのお伺い
youkidearitai
PRO
1
2.6k
CSC307 Lecture 03
javiergs
PRO
1
490
Vibe Coding - AI 驅動的軟體開發
mickyp100
0
180
開発者から情シスまで - 多様なユーザー層に届けるAPI提供戦略 / Postman API Night Okinawa 2026 Winter
tasshi
0
210
360° Signals in Angular: Signal Forms with SignalStore & Resources @ngLondon 01/2026
manfredsteyer
PRO
0
130
React 19でつくる「気持ちいいUI」- 楽観的UIのすすめ
himorishige
11
7.5k
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
600
AI & Enginnering
codelynx
0
120
CSC307 Lecture 06
javiergs
PRO
0
690
要求定義・仕様記述・設計・検証の手引き - 理論から学ぶ明確で統一された成果物定義
orgachem
PRO
1
170
Rust 製のコードエディタ “Zed” を使ってみた
nearme_tech
PRO
0
200
Featured
See All Featured
My Coaching Mixtape
mlcsv
0
48
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.2k
Designing for humans not robots
tammielis
254
26k
Designing Powerful Visuals for Engaging Learning
tmiket
0
240
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
280
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
410
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
180
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.6k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
230
Discover your Explorer Soul
emna__ayadi
2
1.1k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.3k
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のブースにいます!