TSKaigiをオンラインで視聴してみた
はじめに
仕事では Web のバックエンドエンジニアをしており、TypeScript を使用しています。 まだまだひよっこエンジニアのため、使用していると言っても基本的なコードは書けるが言語仕様を十分に理解しているとは言い難い状態です、、笑
今回はそんなひよっこエンジニアが TSKaigi なる TypeScript のカンファレンスをオンラインで視聴してみたので、学びと感想を残していこうと思います。 (あくまで個人の感想なので、解像度がだいぶ粗いです)
全体の感想
いきなり全体を通しての感想ですが、、、 元の知識が薄すぎて、何やら有用なことを話しているっぽいけどよくわからんかった。
version up で新しい機能が使えるようになりました!と言われても既存の version の機能も十分に使いこなせていないのに、、、となってしまいました。
ただ、ちゃんと勉強しなきゃな!もっと開発してカンファレンスを有用にできるようにしたい!という意欲は十分に上がりました!
以下は開発意欲が上がった私が今後勉強したいという観点で記述します。
Backend と Frontend を TypeScript で統合
TypeScript は JavaScript の super set のため、Frontend 開発に主に用いられているイメージがあります。ただ Backend 開発にも使用できるため全ての開発を TypeScript で行うというのも主流になっているらしい。
そういう私も TypeScript で Backend 開発をしているので、もう Frontend 用の言語ではないのでしょう。
開発言語を統一するメリット
- モノレポで開発していると、情報を一箇所に集約することができる。
- バリデーションや型の情報を Frontend と Backend で共通して使用することができる。
- 一人が開発全体を担えるため、役割によっての作業量の偏りが減る。
あれ?今の現場って Frontend も Backend も TypeScript を使用しているが、GitHub の Repository は別々だし、チームが分かれているから作業量は偏っているし、情報管理はツールがいくつもあって散らかってるし。。。 何も恩恵受けていないんじゃないか?
現場のことは別で考えるとして、私自身 Frontend を全くと言っていいほど理解していないんですよね。TypeScript は普段から使ってるから問題ないとして、React の文法や思想は別途勉強しなきゃいけないなーと痛感しました。頑張ります。。 (別の言語を一から学ぶよりはハードルが低いからまだ頑張れそう!)
TypeScript と関数型
関数型プログラミングは、インプットに対して適切なアウトプットを出力することで状態の遷移を表現するものだと認識しています。(おそらく間違ってますが大体の理解で、、、)
関数型プログラミングを導入することで、遷移前の状態は引数に、遷移後の状態は戻り値に表せるため、型を見ればその関数の挙動がわかる ⇒ 堅牢性が高まる
じゃあ全部関数型で書いちゃえばええんやないか!! とはいかないんですよね、、、
なにせ関数型プログラミングの知見を持っていないから。
(さらにいうと OOP がダメっていうわけではなく、求められている要件によって使い分けるのがよいらしい。)
じゃあどうするか。domain 層のビジネスロジックだけ関数型で記載して、usecase や infra は OOP のまま実装していくといった一部導入でも良いらしい。
これなら、、、と思ったがそうなるとビジネスロジックの切り分けなど、別の知見が必要になるから結局勉強しながら手を動かしていくしかないのかな。。
最後に
TSKaigi を視聴して一番思ったこと、「Custom Type についてなんも理解できていない!!!」 TypeScript を語るにあたって型は絶対につきものなので、細かな機能を理解する前に型について理解を深めないと TypeScript を使っているとは言えないなと思いました。