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
540
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
ISUCON研修おかわり会 講義スライド
arfes0e2b3c
1
600
新卒0年目がEMの勉強をしてみて 学んだこと、思ったこと
arfes0e2b3c
1
1.3k
YAC2024発表資料(pdf版)
arfes0e2b3c
0
790
Other Decks in Programming
See All in Programming
1年で人数1.5倍、PR数5.5倍増。 品質とアウトカムはどうなったか、 何が効いたか
ike002jp
0
120
ローカルLLMでどこまでコードが書けるか -縮小版 / How much code can be written on a local LLM Shortened
kishida
2
190
アルゴリズムは何を圧縮しているのか ─ Haskell から育った「圧縮代数」というメンタルモデル
naoya
16
3.4k
『コードを書く以外の』エンジニアリング〜課金基盤移行プロジェクト推進のためのTips4選
yuriko1211
0
410
symfony/aiとlaravel/boost
77web
0
120
Prismを使った型安全な暗号化_関数型まつり2026
_fhhmm
0
120
気圧・高度・GPSを記録&可視化するアプリ「Koudo」を作った話
hjmkth
1
350
광주소프트웨어마이스터고등학교 DevFest 특강 - 바이브 코딩 시대에서 주니어 개발자로 살아남는 방법
utilforever
1
110
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
7
1.8k
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
0
100
エンジニアと一緒にテストコードの設計と実装を改善した話
mototakatsu
0
260
Creating Composable Callables in Contemporary C++
rollbear
0
200
Featured
See All Featured
Optimizing for Happiness
mojombo
378
71k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
180
Balancing Empowerment & Direction
lara
6
1.2k
For a Future-Friendly Web
brad_frost
183
10k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
AI: The stuff that nobody shows you
jnunemaker
PRO
8
830
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.1k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
190
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
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 ご登録はこちら