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
TypeScriptのコード生成をつらくしないために
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Nkowne63
May 11, 2024
1
770
TypeScriptのコード生成をつらくしないために
Nkowne63
May 11, 2024
Tweet
Share
More Decks by Nkowne63
See All by Nkowne63
2020-11-05-side-effects-composition__1_.pdf
neutron63zf
1
450
vueで中規模以上のフロントエンドを組んでいて 役に立ったtips
neutron63zf
5
3.4k
20200128_nkowne63
neutron63zf
0
41
Vueで「見た目」「振る舞い」を分離してみよう
neutron63zf
0
610
20190523_nkowne63zf_1.pdf
neutron63zf
0
410
「つなぎこみ」を自動化する
neutron63zf
0
510
for文禁止縛り in JS
neutron63zf
0
760
Featured
See All Featured
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
59
50k
Designing for Timeless Needs
cassininazir
0
150
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Crafting Experiences
bethany
1
74
GraphQLの誤解/rethinking-graphql
sonatard
75
11k
Art, The Web, and Tiny UX
lynnandtonic
304
21k
The Language of Interfaces
destraynor
162
26k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
290
Done Done
chrislema
186
16k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
78
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
The SEO Collaboration Effect
kristinabergwall1
0
380
Transcript
TypeScriptのコード生成をつ らくしないために ノーン(@nkowne63)
自己紹介 ノーン(@nkowne63) 大学院に通いながら株式会社ventusでエンジニ アをしている。 今日の話は2019年~から開発しているプロダクト で遭遇したコード生成についての話。
コード生成をどういうときに書く? APIやDBといった「TypeScriptの外」とのやりとり 基本的にはライブラリがあるのでそれを使えばよいが...... 今回は「自分たちで実装しなきゃいけなくなった」ときに避けるべきアンチ パターンを1つ紹介する。
処理だけをコード生成 TypeScriptの型推論の能力は割と 優れているので、 処理だけをコード生成しても適切に アノテーションされていれば問題なく 使える → 最初のうちは開発が高速化する が......
処理だけコード生成することのつらさ 生成されたコードがバグっていると 厳しいデバッグが始まる...... 後からより優れたOSSやコード生成 が出てきた時に影響範囲が大きす ぎる → 乗り換えられない!
対策:型をまずは生成して処理は別で書く 型(インターフェース)だけ生成し、 処理を別で書く(or生成する)こと で、速いサイクルで処理を差し替え られるようになる。
対策:型をまずは生成して処理は別で書く 後に良いOSSが出たときに、そちら に段階的に移行する戦略を取りや すい。 具体的な処理はコード生成を用い てもよいし、GenericsやProxyを用 いた動的な実装でもよい。
TSの機能を積極的に使ってless codegenを志向する Template Literal TypesやMapped Types, Conditional Typesなどを用 いることで、生成しなければいけな いものを減らしていき、運用しやす
くすることができる。
まとめ • コード生成される具体的な処理に依存してしまうと、後々差し替え が効かなくなってつらくなる • コード生成を行うときは、処理だけではなく型の生成をして、デバッ グの難易度を下げたり差し替えをしやすくしよう