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
630
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
400
vueで中規模以上のフロントエンドを組んでいて 役に立ったtips
neutron63zf
5
3.1k
20200128_nkowne63
neutron63zf
0
32
Vueで「見た目」「振る舞い」を分離してみよう
neutron63zf
0
560
20190523_nkowne63zf_1.pdf
neutron63zf
0
390
「つなぎこみ」を自動化する
neutron63zf
0
460
for文禁止縛り in JS
neutron63zf
0
680
Featured
See All Featured
A Philosophy of Restraint
colly
203
16k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.1k
Java REST API Framework Comparison - PWX 2021
mraible
28
8.3k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
127
18k
Faster Mobile Websites
deanohume
305
30k
Building Your Own Lightsaber
phodgson
103
6.1k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
29
2k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Unsuck your backbone
ammeep
669
57k
Designing for Performance
lara
604
68k
Side Projects
sachag
452
42k
Producing Creativity
orderedlist
PRO
341
39k
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などを用 いることで、生成しなければいけな いものを減らしていき、運用しやす
くすることができる。
まとめ • コード生成される具体的な処理に依存してしまうと、後々差し替え が効かなくなってつらくなる • コード生成を行うときは、処理だけではなく型の生成をして、デバッ グの難易度を下げたり差し替えをしやすくしよう