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に安心して任せるためにTypeScriptで一意な型を作ろう
Search
Yuki Yata
July 27, 2025
Programming
580
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
180
ISUCON研修おかわり会 講義スライド
arfes0e2b3c
1
640
新卒0年目がEMの勉強をしてみて 学んだこと、思ったこと
arfes0e2b3c
1
1.3k
YAC2024発表資料(pdf版)
arfes0e2b3c
0
810
Other Decks in Programming
See All in Programming
クラウドエージェントは、 何がそんなに便利なのか / what makes cloud agents so useful
rkaga
3
590
[2026-10-14](C)Re:ゼロから始める異世界生活〜始まりの終わりと終わりの始まり〜
tosite
0
160
PyConTW 2026 - AI Coding 不只是工具升級, 區域醫院醫療資訊系統協作開發與資訊團隊轉型實踐
cclai999
0
200
Coding with AI: How to trust the storyteller (AWS Community Day Adria, Ljubljana 2026)
slobodan
0
120
オーケストレーション記述言語 Katari
yukikurage
0
200
Spec-Driven Development - Why Vaadin Is the Perfect Fit
simas
PRO
0
110
Optunaを作ったときにやりたかったこと、その後 (2026/10/16, Optuna Meetup #3)
iwiwi
4
1.3k
エージェントを使い続けるためのメタワーク / Meta-work for keeping using the agent
rkaga
6
1.9k
パスワード再設定メールのURLについて知っておこう
uyuki234
0
190
ActionController meets Protocol Buffers
sorah
1
730
AI時代のIaC入門 〜なぜインフラをコードで管理したいのか?〜 / Introduction to IaC in the AI Era
akihisaikeda
5
970
FactoryBotをやめればRSpecは速くなるのか?
yuta_onishi_97
0
1.2k
Featured
See All Featured
HDC tutorial
michielstock
2
980
How to Talk to Developers About Accessibility
jct
2
590
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
43k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.9k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
490
Claude Code のすすめ
schroneko
67
230k
A designer walks into a library…
pauljervisheath
211
25k
KATA
mclloyd
PRO
35
16k
Balancing Empowerment & Direction
lara
6
1.3k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
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 ご登録はこちら