TypeScriptとJavaScriptとの関係


システム開発をする上で、どんなプログラミング言語が人気があるのかというトレンドをウオッチすることは、システムが時代に即しているかを知るためにも有効です。
現時点でMicrosoft傘下にあるGitHubが公開したThe top programming languagesによると、GitHubで最もよく使われているプログラミング言語は、PythonやJavaを抑え、JavaScriptがやはり今回も1位でした。当初はHTMLの補助的な言語と考えられていたJavaScriptですが、Webのフロントエンド開発に強いJavaScriptが多く使われている背景には、やはりPCの性能も向上しクラウドでの業務もメジャーになり、Webアプリケーションを業務システムとして使用することが当たり前になってきているからこそ、需要も多いのでしょう。
注目すべきは、JavaScriptとの関係性が深い4位のTypeScriptが、成長率の分野でも3位という驚きの37.8%成長を遂げていることです。

TypeScriptは、Microsoftが大規模なアプリケーション開発のために設計し開発されたスーパーセットのプログラミング言語です。TypeScriptは、JavaScriptの上位製品とも言われておりますが、その意味は、オープンソース、つまりJavaScriptに対して既存の仕様や機能をすべて含んだうえでより機能が拡張されている上位互換の言語であるということです。
具体的には、JavaScriptが、RubyやPython、PHPなどのように動的型付け言語であるのに対し、TypeScriptは、C言語やJavaのように静的型付け言語であるため、変数に対し、数値型などのタイプを宣言できることなどが特徴です。こうした宣言は、JavaScriptにコンパイルした時点で、型のnumberのようなJavaScriptでは定義しない部分は削除されてしまうのですが、この変数に文字を代入しているような間違ったコーディングをコンパイル時にエラーとしてチェックしてくれるため、大量の複雑なロジックが組み合わさって作られているようなケースでは事前にエラーを見つけやすくなるため助かります。
JavaScriptが、RubyやPythonなどのように動的型付け言語であるメリットは、コーディングする量を減らせれば開発効率も上がり、メンテナンスもし易く、柔軟性も高める効果が期待されるからです。しかしながら、プログラム開発の規模が大きくなると、多少面倒でもシステムに判断させてブラックボックスになってしまう部分を自らあえてコーディングして明示することで、時間がかかってもエラーを見つけやすくする方が全体の開発効率が上がるため、TypeScriptのような静的型付け言語が人気となってきたのでしょう。

とはいえ、JavaScriptも進化しており、以前はコードを適切な塊に分割し整理できたり、カプセル化できたり、変数名や関数名が衝突しないような仕様でないため、モジュール性や名前空間について問題視されていましたが、現在の仕様ではすでに盛り込まれているため、TypeScriptを使って開発するメリットは薄れてきています。それでも、静的型付けのメリットを享受したい大規模開発には、TypeScriptはとても有効です。
逆を言えば、動的型付け言語の方が楽でメリットが大きい開発場面も多いので、全てのJavaScriptの開発者が、TypeScriptも覚えるべきというわけではないようです。

モダンアプリケーション開発が流行っている昨今、JavaScriptでも、関数やクラスなどを読み込むモジュール機能を取り込むことができるようになり、バックエンドのサーバ処理も行えるようになると、主要となるアプリケーションも統一してJavaScriptで開発しようという動きも多くなりました。そうなると、否応なしにアプリケーション開発の規模も大きくなり、品質管理やリファクタリングを重要視するケースにおいては、大規模開発向けのTypeScriptの採用も選択肢となりますが、このTypeScriptは、JavaScriptにコンパイルしないと実行できないものであり、それなりにリソースや制約もあるものなので、静的型付けのメリットが大きいと判断できる環境でないと、人気だけで飛びつくのはあまり良くないように思われます。


TypeScriptは、JavaScriptにコンパイルして実行する


JavaScript, モダン開発