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
Nkowne63
May 11, 2024
1
690
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
430
vueで中規模以上のフロントエンドを組んでいて 役に立ったtips
neutron63zf
5
3.2k
20200128_nkowne63
neutron63zf
0
35
Vueで「見た目」「振る舞い」を分離してみよう
neutron63zf
0
580
20190523_nkowne63zf_1.pdf
neutron63zf
0
400
「つなぎこみ」を自動化する
neutron63zf
0
470
for文禁止縛り in JS
neutron63zf
0
710
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
9
760
Automating Front-end Workflow
addyosmani
1370
200k
Into the Great Unknown - MozCon
thekraken
38
1.7k
4 Signs Your Business is Dying
shpigford
183
22k
Navigating Team Friction
lara
184
15k
Product Roadmaps are Hard
iamctodd
PRO
52
11k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
Documentation Writing (for coders)
carmenintech
69
4.7k
GraphQLとの向き合い方2022年版
quramy
46
14k
Designing for humans not robots
tammielis
252
25k
A better future with KSS
kneath
239
17k
Making the Leap to Tech Lead
cromwellryan
133
9.2k
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などを用 いることで、生成しなければいけな いものを減らしていき、運用しやす
くすることができる。
まとめ • コード生成される具体的な処理に依存してしまうと、後々差し替え が効かなくなってつらくなる • コード生成を行うときは、処理だけではなく型の生成をして、デバッ グの難易度を下げたり差し替えをしやすくしよう