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
0
490
AIに安心して任せるためにTypeScriptで一意な型を作ろう
LayerX bet ai day 7days LTのday 4「あえてのNot AI」の発表資料です
Yuki Yata
July 27, 2025
Tweet
Share
More Decks by Yuki Yata
See All by Yuki Yata
ISUCON研修おかわり会 講義スライド
arfes0e2b3c
1
560
新卒0年目がEMの勉強をしてみて 学んだこと、思ったこと
arfes0e2b3c
1
1.3k
YAC2024発表資料(pdf版)
arfes0e2b3c
0
760
Other Decks in Programming
See All in Programming
ふん…おもしれぇ Parser。RubyKaigi 行ってやるぜ
aki_pin0
0
110
開発者から情シスまで - 多様なユーザー層に届けるAPI提供戦略 / Postman API Night Okinawa 2026 Winter
tasshi
0
240
AI時代の認知負荷との向き合い方
optfit
0
180
Sekiban + Microsoft Orleans のアクターをAWS対応しました / Sekiban + Microsoft Orleans actors are now supported on AWS.
tomohisa
0
120
Metaprogramming isn't real, it can't hurt you
okuramasafumi
0
120
AI主導でFastAPIのWebサービスを作るときに 人間が構造化すべき境界線
okajun35
0
110
Go1.26 go fixをプロダクトに適用して困ったこと
kurakura0916
0
200
OSSとなったswift-buildで Xcodeのビルドを差し替えられるため 自分でXcodeを直せる時代になっている ダイアモンド問題編
yimajo
3
650
Claude Code、ちょっとした工夫で開発体験が変わる
tigertora7571
0
100
Package Management Learnings from Homebrew
mikemcquaid
0
260
AIと一緒にレガシーに向き合ってみた
nyafunta9858
0
320
NOT A HOTEL - 建築や人と融合し、自由を創り出すソフトウェア
not_a_hokuts
2
390
Featured
See All Featured
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
1
60
So, you think you're a good person
axbom
PRO
2
1.9k
Un-Boring Meetings
codingconduct
0
210
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
840
Claude Code のすすめ
schroneko
67
210k
How Software Deployment tools have changed in the past 20 years
geshan
0
32k
Bash Introduction
62gerente
615
210k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
150
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
180
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
230
Building an army of robots
kneath
306
46k
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 ご登録はこちら