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と会話する:型を通じてAIに意図を伝えるテクニック
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
uhyo
February 04, 2026
Technology
87
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
型定義でAIと会話する:型を通じてAIに意図を伝えるテクニック
2026-02-04 レバテックLAB 型定義&インタラクションテストでAIフロントエンド開発のガードレールを整備する
uhyo
February 04, 2026
More Decks by uhyo
See All by uhyo
AIのReact習熟度を測る
uhyo
2
650
React、まだ楽しくて草
uhyo
7
4.4k
TypeScript 7.0の現在地と備え方
uhyo
6
3.4k
React 19時代のコンポーネント設計ベストプラクティス
uhyo
20
9.8k
タグ付きユニオン型を便利に使うテクニックとその注意点
uhyo
3
1.1k
ECMAScript仕様の最新動向: プロセスの変化と仕様のトレンド
uhyo
3
900
TypeScript 6.0で非推奨化されるオプションたち
uhyo
18
8.3k
Claude Code 10連ガチャ
uhyo
4
1.1k
AI時代、“平均値”ではいられない
uhyo
8
13k
Other Decks in Technology
See All in Technology
Claude Codeをどのように キャッチアップしているか
oikon48
13
8.6k
FPGAの開発コンペでZephyrを使ってみた
iotengineer22
0
140
データサイエンスを価値につなげるプロジェクト設計 〜 DS一年目が現場で得た気づき 〜
ysd113
1
280
マルチアカウント環境での コーディングエージェントを使った障害調査が大変なので AIエージェントにReadOnly権限を付与してみた / ReadOnly AI Agents for Multi-Account AWS Incident Response
yamaguchitk333
2
110
200個のGitHubリポジトリを横断調査したかった
icck
0
140
フィジカル版Github Onshapeの紹介
shiba_8ro
0
290
AWS Security Hub CSPMの成功・失敗体験
cmusudakeisuke
0
270
【2026年版】 ベクトル検索とEmbedding最前線
mocobeta
17
4.7k
Bucharest Tech Week 2026 - Reinventing testing practices in the AI era
edeandrea
PRO
1
170
GitHub Copilot app最速の発信の裏側
tomokusaba
1
190
GitHub Copilot 最新アップデート – 「一歩先」の実践活用術
moulongzhang
5
1.5k
ザ・データベース、MySQL ~ OSC 2026 Sendai ~
sakaik
0
140
Featured
See All Featured
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Side Projects
sachag
455
43k
KATA
mclloyd
PRO
35
15k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.3k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
430
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
200
Typedesign – Prime Four
hannesfritz
42
3.1k
AI: The stuff that nobody shows you
jnunemaker
PRO
8
720
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.5k
Transcript
型定義でAIと会話する: 型を通じてAIに意図を伝えるテクニック 2026-02-04 レバテックLAB 型定義&インタラクションテストで AIフロントエンド開発のガードレールを整備する
発表者紹介 uhyo 株式会社カオナビ フロントエンドエキスパート 仕事ではずっとJavaScript/TypeScript一筋。 2
本日のテーマ AI時代のプログラミングにおいて 重要になりそうなこと: •AIに的確に意図を伝えること •AIの書いたコードを素早く理解すること 3
This Talk 2つのどちらにも、型定義が効果的! という話をします。 •AIに的確に意図を伝えること •AIの書いたコードを素早く理解すること 4
実際の例 先日FUNSTACK Routerを実装していたとき…… ぼく「useBlocker()」を実装してください AI「わかりました」 5
実際の例 ぼくの想像: // 返り値はとくに無い useBlocker(() => { return confirm(“離脱しますか?”); });
6
実際の例 AIが実装したもの: // 何か返り値がある…… const { blocked, resume } =
useBlocker(() => { return confirm(“離脱しますか?”); }); 7
AI開発のよくある課題 AIが出してきたものが自分の望み通りか、 チェックすることが重要。 AIが出してきたコードを読んで問題に気づくまで の時間を短縮したい。 8
型という救世主 AIが型を申告してくれれば素早く気づける。 AI「できました! interface UseBlockerResult { blocked: boolean; resume: ()
=> void; } 」 ぼく「!?」 9
型の役割 古来から、型はインターフェースの一部であり、 インターフェースを記述できる言語であり、 今では人間とAIの共通言語のひとつとなった。 自然言語よりも、意図を高効率で伝達できる。 10
型の役割 AI→人間: AIの成果物の素早い確認 人間→AI: 要件の効率よい伝達 ぼく「型はuseBlocker(handler: () => boolean): void
で」 AI「なるほど(型から要件を想像・理解)」 11
AIに対する要件伝達の基本 12 要件 (プロンプト) AIが持つ 常識 + = 成果物
AIに対する要件伝達の基本 13 要件 (プロンプト) AIが持つ 常識 + = 成果物 型
型から想像 される要件
AIに対する要件伝達の基本 AIモデルが進化すると「常識」が変化するので、 プロンプトも調整する必要がある。 14 要件 (プロンプト) AIが持つ 常識 + =
成果物
なので…… AIに対して成果物の型を伝えることで、 要件の基礎を成し、成果物が期待から外れない ためのガードレールとする。 型は、プロンプトで与えてもいいし、コードに 書いておいてもいい。 15
コードの中のガードレール 型は要件であると同時にコードの一部である。 つまり、必要に応じて変えなければならない。 期待に反して型を変えられると困る。 (「テストを通してと言ったらテストを直された」と同じ) 16
ガードレールに意図を込める 変えてよい型と変えてはいけない型をどう判断 するのか? その判断のためには、型の意図を明らかにする 必要がある。 コメントとかに書こう(書いてもらおう)。 17
型に意図を明記した例 interface UseBlockerOptions { // beforeunloadと能力を揃えるために、 // Promise<boolean>などではなくbooleanにしている handler: ()
=> boolean; } function useBlocker(options: UseBlockerOptions): void 18
型に意図を明記した例 こうすると、AIは返り値がbooleanであることは 実装詳細や間違いではなく要求仕様の一部である ことを理解してくれる(と思いたい)。 素のAIの「常識」だとPromise<boolean>にされ てしまう。(経験談) 19
インターフェースとしての型 型というインターフェースは、 「ユーザーにどう使ってほしいか」という意図も 込められている。(特にライブラリなどの場合) これは、単にAPIリファレンスのことではなく、 「型レベルでどういう挙動をするのか」という こと。 20
インターフェースとしての型 型レベルの望ましいふるまいをテストするために、 型レベルのテストが有効。 Vitestとかがサポートしているぞ。 型レベルのテストでは、インターフェースに 込めた意図をより明文化しやすい点もよい。 21
型レベルテストの例 import { assertType, expectTypeOf } from 'vitest’ it(‘returns nothing’,
() => { const result = myFunction({ … }); expectTypeof(result).toBeVoid(); }); 22
型レベルテストの意味 型システムは、それ自体が検査を備えた仕組み。 そのため、当たり前すぎるテストを量産するのは 避けるべき。 そうではなく、望ましいインターフェースが維持され ていることをチェックする、ユーザーストーリーを 含んだテストになっていると良い。 23
ガードレールを守るために 型やテストがガードレールなら、 それに意図を込めることは、ガードレールを補強 することに相当する。 24
まとめ 型はAIに要件を伝えるツールでもあるが、 要件を守るガードレールでもある。 AIがうかつにガードレールを壊されないために、 意図を込めることが重要。 型レベルテストも活用しよう。 25