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
560
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
イテレーターとジェネレーターで巨大CSVをサクッとプレビューしたい
arfes0e2b3c
1
160
ISUCON研修おかわり会 講義スライド
arfes0e2b3c
1
620
新卒0年目がEMの勉強をしてみて 学んだこと、思ったこと
arfes0e2b3c
1
1.3k
YAC2024発表資料(pdf版)
arfes0e2b3c
0
790
Other Decks in Programming
See All in Programming
DynamoDBの基礎を振り返りながらベクトル検索機能を理解する
musan
3
260
源内ハンズオン概要編
hideg
0
240
Go 1.27からのGODEBUG / Go 1.27 リリースパーティ #go127party
mazrean
0
280
KotlinConf Extended South Korea 2026 Keynote
l2hyunwoo
0
130
Flow は今どうなっているか
mizdra
PRO
0
840
GKE アップグレード前に知っておきたい Blue/Green と PDB の関係
stkk
0
130
Press start. Python's next generation.
willingc
PRO
3
300
kubernetes コンポーネント開発入門 / 新卒N年目の勉強会&交流会!〜〇〇への誘い〜 #n_study
mazrean
0
140
「つくるAI」だけではバグは見つからない ~テストに必要な「見つけるAI」を分離させる戦略~
mfunaki
0
230
tsc.rip を支える技術 / Kyoto.なんか #8
susisu
0
4.2k
{ Android | Kotlin } Gradle Plugin in 2026
ryunen344
1
250
Kiroで創り、AgentCoreで繋ぐ!AWSで実践する「AI-DLC」から「AIエージェント統合」までの最新地図
licux
1
140
Featured
See All Featured
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.7k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.8k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Designing for Performance
lara
611
70k
Site-Speed That Sticks
csswizardry
13
1.5k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
180
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Exploring anti-patterns in Rails
aemeredith
3
490
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
400
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
810
Making Projects Easy
brettharned
120
6.7k
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 ご登録はこちら