見出し画像

TypeScriptをメインスキルにしている理由

ちまたではMPA vs SPAの話題が盛り上がっていましたが今日は僕の好きなWeb開発技術について、その中でも特に好きなTypeScriptについて書いておこうと思います。

まず最初に、ぼくがプロジェクトと関係なく技術について話すときは極力好きかどうかで話すようにしています。ただ、実際のプロジェクトの時はもう少しだけ色々考えます(が、それでも好きに左右されてしまうことは正直否めません)。

携わってきた開発規模感など

背景を少し補足するとぼくは直近でも2人ほどで請負開発をしたり、1人目のエンジニアとして新規立ち上げの開発を行ったりと比較的小さな組織で開発をすることが多いです。

逆に様々な人が開発に関わるような開発や社員として開発を行うといった経験が少ないです。

TypeScriptの前はPHPを使っていて他にはPython、Javaを少し触ったことがある程度です。

TypeScriptが好きな理由

一言でいうと「安心して気持ちよく書けるから」です。これはTypeScriptだけではなくて、ESLint、Prettier、VS Codeによる恩恵も大きいです。

コードを書くときは1回で書ききって二度と見ないコードはあまりなく、何を書いたか忘れてしまった時に不具合が起きて修正することはよくあります。

この時に関数に何を渡せば良いのか、プロパティは何があるのかといった定義を自分の書いたコードだけじゃなくて、外部APIの仕様を確認しに検索をするといったこともある。

これがTypeScriptだと、ライブラリが型を提供してくれていれば何も見ずに補完が効くし、なくても自分で定義を書いておくことができて手元で完結します。

TypeScriptの柔軟性とは?

構造的部分型と呼ばれる部分が自分が気に入っている所なのかなぁと思っています。参考になる記事を貼っておくので詳しくは記事を読んでください。

TypeScriptの前にはPHPを書いていたのですが、PHPの場合にsomeFunctionという関数に何を渡せばいいか、ということを表現するためにはSomeClassを定義して $instance = new SomeClass(1); のように生成された変数だけが someFunction へと渡せます。

でもTyepScriptの場合には定義した通りにプロパティが存在すれば良くて、someFunctionはaというプロパティに数値が必要だと定義されていれば someFunction({a: 1})とすればいいだけです。

TypeScriptのちょうど良いコードへの落とし込み

もちろんclassを定義してそのclassの生成方法をコードで表現、規定してその定義がどこから来たものなのか、どういうケースを想定されて作られているのかといった情報をコードに付加することはコードを読みやすく堅牢にすることができますが、多くの場合にそれはオーバーだと感じます。

そもそもプログラムには境界(DB、サードパーティAPI、バックエンド、フロントエンド、http通信、フォーム入力、ファイル入出力、サードパーティライブラリなどなど)が多くてそれらを自分たちの定義・表現に落とし込むのは大変です。

TypeScriptは最低限この情報はこういう形で入ってきて、こういう形で出力されてほしいということが簡単にできることが魅力に感じています。

ミスが起きにくく、フォーマットに悩まされない

ESLint、Prettierといった決められたルールのエラーを自動検知たり、コードを自動でフォーマットしてくれる所も好きです。これが有料のIDEなどに依存せず、VS Codeによって軽量にサクサク動作する点も好きです。

Reactを書きはじめた時にはESLintのルールでダメなコードを知ってドキュメントを読みに行き勉強するといったこともできました。何も知らない状態からでもコードが補完されて、簡単なコメントまでカーソルオーバーするだけで読めることもありサクサクコードが書けるしキャッチアップもすぐにできる所が好きです。


補足するともちろん他の言語でも同様のことができることは多いです。でもTypeScriptが一番シームレスに自分の手に馴染むといったイメージです。

カバーできる範囲が広い

  • フロントエンド

  • バックエンド

  • GAS(Google App Script)

  • スクレイピング

  • サーバーレス関数

粒度が違うのですが上記のように色んなコードをTypeScriptで書いています。昔だとバックエンドはPHP、スクレイピングはPythonなどを利用することもあったんですが今は極力全部TypeScriptで書いています。

GASは特にTypeScriptがマッチしていると感じていて、全くドキュメントを読んでいない状態でもAPIでできることが補完によって簡単に分かって、スプレッドシートなどの外部とのやり取りでも型をつけることで簡単に保守性がよくなります。基本、小さなスクリプトを書くことが多いので面倒な部分はゆるく書くといったこともTyepScriptだと可能です。

TypeScriptをメインスキルにしている理由

好きな理由のまとめになるのですが、以下のような理由です。

  • 柔軟に保守性の高いコードが書ける

  • フォーマットなど面倒なことを気にせず楽しくコードを書ける

  • 1つの言語でカバーできる範囲が広い

  • ゆえに人に手渡しやすい

初学者にもオススメ

自分が今プログラミングを教わりたいと言われたらTypeScriptを習得できるように導きます。それさえ理解してもらえたら多くの範囲がカバーできるからで、自分のやっている仕事も任せられます。

コードを手渡しやすい

バックエンドはGolangでフロントはTypeScriptといった場合だとその2つのスキルが分かる人が必要ですが、自分はTypeScriptでどちらも書くので2つの言語を使うよりは人に手渡しやすいコードだと思っています。

まとめ

技術選定や好きな技術については書いてきたコード、環境、人材や求められるアウトプットによって大きく変わると思います。

だからあくまで自分の環境、背景においては現状TypeScriptがベストな選択肢だと思っていて愛用していますが、基本的には携わるプロジェクトに応じて考えるべきだと思っています。

だから冒頭にも書きましたが、プロジェクトに関係のない話なのでぼくはTypeScriptが好きでメインスキルにしているということで話を終わりにします。

読んでいただきありがとうございました!

この記事が気に入ったらサポートをしてみませんか?