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
型定義でAIと会話する:型を通じてAIに意図を伝えるテクニック
Search
uhyo
February 04, 2026
Technology
120
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
Reactの設計論
uhyo
25
16k
型があると何が嬉しいか
uhyo
3
150
Baseline対応のDOMの型定義を作った
uhyo
3
980
AIのReact習熟度を測る
uhyo
2
1.1k
React、まだ楽しくて草
uhyo
7
5.1k
TypeScript 7.0の現在地と備え方
uhyo
6
3.9k
React 19時代のコンポーネント設計ベストプラクティス
uhyo
20
11k
タグ付きユニオン型を便利に使うテクニックとその注意点
uhyo
3
1.2k
ECMAScript仕様の最新動向: プロセスの変化と仕様のトレンド
uhyo
3
980
Other Decks in Technology
See All in Technology
GitHub Agentic Workflows を触ってみる
htkym
2
920
AWS FinOps Agent 結局何が得意なの?
siromi
0
230
Lambda MicroVMsが分からなすぎたので使い所を1から考えてみた
tsukuboshi
2
310
[2026 Oracle Technical Deep Dive] エンタープライズAIエージェントを支えるOCIソリューション。ラインナップと特徴を理解しよう! (2026年9月17日開催)
oracle4engineer
PRO
0
310
2026-09-26 Platform Engineering Kaigi 2026 インフラとアプリの境界線と委譲の設計 / Drawing the Infra and App Line
masasuzu
0
610
ログラスのマルチプロダクトを 支える認証基盤 〜テナントごとに異なる統制とどう向き合うか〜
dada4386
3
340
顧客の成果創出とプロダクトの成長を 両立するためのFDE
sansantech
PRO
0
640
Databricksメトリクスビューはじめてのもくもく会
taka_aki
0
170
行動するAIのためのオントロジー | DevRev — Encraft #26.pdf
dvrv_tknrszk
2
680
覗いてみよう 関数型ビジュアル言語×2Dグラフィックスの世界
yohyamasaki
0
170
VS Code × GitHub Copilot での Fabric 開発
ryomaru0825
1
220
全社共通データ基盤をつくる。ソニーのDatabricks活用とデータガバナンス設計の裏側
sony
0
300
Featured
See All Featured
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
260
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
510
Ethics towards AI in product and experience design
skipperchong
2
410
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
330
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
The Invisible Side of Design
smashingmag
301
52k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
290
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
540
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
470
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
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