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に安心して任せるためにTypeScriptで一意な型を作ろう
Search
Yuki Yata
July 27, 2025
Programming
510
0
Share
AIに安心して任せるためにTypeScriptで一意な型を作ろう
LayerX bet ai day 7days LTのday 4「あえてのNot AI」の発表資料です
Yuki Yata
July 27, 2025
More Decks by Yuki Yata
See All by Yuki Yata
ISUCON研修おかわり会 講義スライド
arfes0e2b3c
1
570
新卒0年目がEMの勉強をしてみて 学んだこと、思ったこと
arfes0e2b3c
1
1.3k
YAC2024発表資料(pdf版)
arfes0e2b3c
0
770
Other Decks in Programming
See All in Programming
LM Linkで(非力な!)ノートPCでローカルLLM
seosoft
0
460
Laravel Nightwatchの裏側 - Laravel公式Observabilityツールを支える設計と実装
avosalmon
1
330
メッセージングを利用して時間的結合を分離しよう #phperkaigi
kajitack
3
580
UIの境界線をデザインする | React Tokyo #15 メイントーク
sasagar
1
270
今こそ押さえておきたい アマゾンウェブサービス(AWS)の データベースの基礎 おもクラ #6版
satoshi256kbyte
1
240
ハンズオンで学ぶクラウドネイティブ
tatsukiminami
0
120
それはエンジニアリングの糧である:AI開発のためにAIのOSSを開発する現場より / It serves as fuel for engineering: insights from the field of developing open-source AI for AI development.
nrslib
1
840
Coding at the Speed of Thought: The New Era of Symfony Docker
dunglas
0
4.8k
The Monolith Strikes Back: Why AI Agents ❤️ Rails Monoliths
serradura
0
300
의존성 주입과 모듈화
fornewid
0
130
CDK Deployのための ”反響定位”
watany
4
700
Make GenAI Production-Ready with Kubernetes Patterns
bibryam
0
110
Featured
See All Featured
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
180
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
340
Mind Mapping
helmedeiros
PRO
1
150
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
110
Agile that works and the tools we love
rasmusluckow
331
21k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
380
Making Projects Easy
brettharned
120
6.6k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
What does AI have to do with Human Rights?
axbom
PRO
1
2.1k
The untapped power of vector embeddings
frankvandijk
2
1.7k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Transcript
AIに安心して任せるために TypeScriptで一意な型を作ろう バクラク事業部 勤怠開発グループ yata YATA, Yuki DAY04 topic あえてのnot
AI Speaker
Speaker バクラク勤怠 ソフトウェアエンジニア • 2025年 新卒入社 • スマブラとヨルシカが好きです yata(@0e2b3c) YATA,
Yuki
© LayerX Inc. 技術組織としての分岐点 • ⽂字列リテラルの⼀括変換をAIに任せるために、 • TypeScriptの型でガードレールを作ったけど、 • 実⾏速度の問題でうまく⾏かなかった!
3⾏サマリ AIに安⼼して任せるためにTypeScriptで⼀意な型を作ろう
© LayerX Inc. 技術組織としての分岐点 AIに安⼼して任せるためにTypeScriptで⼀意な型を作ろう • バクラク勤怠ではGraphQLを使って開発を⾏なっている • 最近graphql-codegenでenumがas constオブジェクトとして⽣成される様になった
きっかけ
© LayerX Inc. 技術組織としての分岐点 AIに安⼼して任せるためにTypeScriptで⼀意な型を作ろう • 私「だったらコードベース上の⽂字列リテラルも全部変換したい...!」 • でも数えてみたら2000件くらい⽂字列リテラルがある... •
⼿動で変換するのは時間がかかりすぎる... • AIに全任せすると変換ミスに気付けない... きっかけ
© LayerX Inc. 技術組織としての分岐点 ガードレールを作る • AIが変換を間違えても気付ける様にすればいい ◦ 修正箇所も明確 ◦
安⼼してリリースできる • じゃあカスタムlintとか作る? ◦ エラーが出る様になれば安⼼ じゃあどうする? AIに安⼼して任せるためにTypeScriptで⼀意な型を作ろう
© LayerX Inc. 技術組織としての分岐点 • どのオブジェクト問題 ◦ “AMY”←これどのオブジェクトの”AMY”?PersonType.AMY?SongType.Amy? • 野良かも問題
◦ “AMY”←これ野良の⽂字列リテラル?それともGraphQL由来のプロパティ? 少なくとも⾃分ではこのアプローチは無理だった😢 カスタムlintじゃ無理そう AIに安⼼して任せるためにTypeScriptで⼀意な型を作ろう
© LayerX Inc. 他に⼿はないのか... AIに安⼼して任せるためにTypeScriptで⼀意な型を作ろう
© LayerX Inc. 技術組織としての分岐点 • どのオブジェクト問題:型エラーで気付ける! ◦ 例:PersonType.Amyとすべき”AMY”をSongType.Amyに変換してしまう • 野良かも問題:型エラーで気付ける!
◦ 例:GraphQLと関係ない”AMY”をSongType.Amyに変換してしまう 全ての文字列に一意な型を付ければいいんじゃない? AIに安⼼して任せるためにTypeScriptで⼀意な型を作ろう
© LayerX Inc. 技術組織としての分岐点 • typescriptの解析や修正を⾏うことができるツールキット • 置換部分まで⾏うのはコストが⼤きそうだったので ⼀旦型を付けてエラーを出させるところまでをやってみる ts-morphで型付けやってみた
AIに安⼼して任せるためにTypeScriptで⼀意な型を作ろう
© LayerX Inc. 技術組織としての分岐点 • graphql.tsの中からas constを⾛査して、全ての⽂字列に型アサーションする ◦ • 型はstringと{
__${オブジェクト名}_${値}__: unknown }の直⾏型 ◦ できるだけ嘘が少ないbranded typeを使う様にした ◦ 変数名と値の組み合わせが⼀意なことは保証されるのでsymbolを使うのはサボりました ◦ ⽂字列リテラル型ではなくstring型にした理由は省略 ts-morphで型付けやってみた AIに安⼼して任せるためにTypeScriptで⼀意な型を作ろう
© LayerX Inc. その結果 AIに安⼼して任せるためにTypeScriptで⼀意な型を作ろう
© LayerX Inc. うまくいかなかった! AIに安⼼して任せるためにTypeScriptで⼀意な型を作ろう
© LayerX Inc. 技術組織としての分岐点 • 変換の精度はかなり⾼くなったし、ミスしていても気付ける様になった • でも時間がかかりすぎて無理だった ◦ 10分かけて3ファイルくらいしか処理できない
◦ 2,30件くらい処理した段階で「完了です!」とか⾔ってくる ◦ Claude Codeにやらせたのが間違いだったかもしれないが、他のAIだと従量課 ⾦になってしまう 結果 AIに安⼼して任せるためにTypeScriptで⼀意な型を作ろう
© LayerX Inc. 技術組織としての分岐点 • 変換部分をAIにやらせるのは悪くないアプローチだったと思う ◦ AIの「よしなに⼒」が活かせる場⾯ ◦ ts-morphだと成功判定は型エラーを⾒るしかないが、
↓のコードだと4⾏に渡って型エラーが出るので2つ同時に修正されな いと成功判定にならない 考察 AIに安⼼して任せるためにTypeScriptで⼀意な型を作ろう
© LayerX Inc. 技術組織としての分岐点 • roo codeなどの厳密にサブタスクを切るAI Agentにやらせてみる • 全てをNot
AIで進めるのであれば、⼀旦決めつけで全て変換してみて最後 に評価する様な⽅法を取ってみると良いかも 改善点 AIに安⼼して任せるためにTypeScriptで⼀意な型を作ろう
AIに安心して任せるために TypeScriptで一意な型を作ろう バクラク事業部 勤怠開発グループ yata YATA, Yuki DAY04 topic あえてのnot
AI Speaker
AIに安心して任せるために TypeScriptで一意な型を作ろう バクラク事業部 勤怠開発グループ yata YATA, Yuki DAY04 topic あえてのnot
AI Speaker
TypeScriptで一意な型を作ったけど AIには任せられなかった 😭 バクラク事業部 勤怠開発グループ yata YATA, Yuki DAY04 topic
あえてのnot AI Speaker
2025年8月1日 13:00−18:30 オンライン配信 https://layerx.co.jp/events/2025/bet-ai-day ご登録はこちら