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
760
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.3k
20200128_nkowne63
neutron63zf
0
38
Vueで「見た目」「振る舞い」を分離してみよう
neutron63zf
0
600
20190523_nkowne63zf_1.pdf
neutron63zf
0
410
「つなぎこみ」を自動化する
neutron63zf
0
510
for文禁止縛り in JS
neutron63zf
0
750
Featured
See All Featured
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
120
A Modern Web Designer's Workflow
chriscoyier
698
190k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
0
980
First, design no harm
axbom
PRO
1
1.1k
30 Presentation Tips
portentint
PRO
1
180
We Are The Robots
honzajavorek
0
130
More Than Pixels: Becoming A User Experience Designer
marktimemedia
2
270
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
54
48k
The Invisible Side of Design
smashingmag
302
51k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
1.8k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
130
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などを用 いることで、生成しなければいけな いものを減らしていき、運用しやす
くすることができる。
まとめ • コード生成される具体的な処理に依存してしまうと、後々差し替え が効かなくなってつらくなる • コード生成を行うときは、処理だけではなく型の生成をして、デバッ グの難易度を下げたり差し替えをしやすくしよう