Javascript と Typescript

記事
IT・テクノロジー

Javascript と Typescript

Web 開発では、Javascript は欠かせませんが、最近では Typescript も注目されています。Typescript を勉強しておいた方が良いのか迷う場合も多いと思います。どちらが良いのかを考えてみました!


Javascript は必須
Web 開発をする場合、バックエンドは別にしてもフロントエンドの Web ブラウザで動作するプログラムは Javascript になります。したがって、フロントエンドに関わる開発では Javascript は必須のプログラミング言語という事になります。

そうした、理由もあって Javascript を学習する人はたくさんいますが、最近では企業のある程度の規模の開発では Typescript が使われるケースも増えています。そうなってくると、Typescript を学習しておいても損はなさそうな状況になりつつあります。

ところで、Web 開発者を目指してプログラミングを学習する人の場合はどうでしょうか?

この連載で既に書いてきたように、「今必要な事に絞って学習する」ことで、学習を効率よく進めて短期間で成果を出すという考え方で言えば、Javascript でプログラミングを書ければ、Typescript はなくても良い事になります。

そう考えると、Typescript を初心者が学習するのは後でも良いという事になりそうです。

Typescript の正体とは?
ところで、Typescript の正体をご存知ですか? 一言で言うならば、Typescript は Javascript をベースに、変数の型や初期化などをより厳格にしたプログラミング言語です。 Typescript で書いたプログラムを Javascript に変換して、実際のプログラムは Javascrip として Web ブラウザで動作しています。

つまり、一手間、プログラミングの手間を増やしたと言う事になります。

なぜこのように手間のかかる事をするかというと、Javascript は Typescript に比べると型や変数の初期化の制約が非常に「ゆるい」プログラミング言語だからです。この「ゆるさ=曖昧さ」がプログラムのバグの原因になるケースも多く、それを減らすのが目的で作られたという事になります。

この緩い部分をあらかじめ、きちんとするために「一手間」増やしているという訳です。

事前に、Typescript で書かれたコードはコンバイラにかけて Javascript に直す作業が必要になります。その際に、変数の型と実際の使い方が合っているかや、初期化の状態をチェックするようにすることで早い段階でそうした不一致やミスを見つけて取り除く事が可能になります。特に複数の人がいろいろなモジュールを分担して開発する場合、インターフェースで受け渡しするデータの型をきちんとチェックできるようになります。また、変数の型を含めてきちんと宣言したり、インターフェースをコードの一部として書いておけば、「ドキュメント」としての役割もある程度カバーできる事になります。

要は、1ステップチェックのための手続きを増やしたというイメージです。

Javascript でも問題はない?
結局、実行するのは Javascript のコードという事になるので。Javascript でも問題はないとも言えます。 注意深く、気をつけてコードを書けば本質的には Javascript でも何ら問題はないという事です。

要するに、Typescript のコンパイラが行っているようなチェックをすれば良いということです。 また、Typescript はどこまで厳密にプログラムをチェックするかを指定することもできます。 つまり、厳格に Typescript の制約を守って書かなくても済む方法も存在します。

設定によっては、Javascript のコードと同じもありとも言える訳です。

逆に言えば、Typescript で書くようにして、まずはできるところから始めてみるという考え方もできます。 実際は、制約を外してしまうと Typescript の利点がほとんどなくなってしまうので、制約を付けたままで書く方が良いのですが、まずは Typescript に慣れるという事からも始められるという事です。

Typescript の勧め!
Typescript でプログラムを書くのは制約が多くなるので、面倒と言えば面倒です。 学習も、Javascript の方が簡単だとは思いますが、メリットを考えると、Web 開発を目指してプログラミングを学習する場合、Typescript を学習されることを強くお勧めします。

理由は簡単で、かかる時間を考えるとトータルでは節約できる可能性が非常に高いからです。 Typescript で書いて、コンパイラが型の不一致や変数の初期化のミスなどを見つけてくれる事を考えると、実際にコードを動かしながら不具合を探すよりは時間が節約できるケースが多いからです。

実際の手間も「慣れ」の要素が強く、C/C++や Java なども型の宣言などは制約があるのは同じです。C/C++/Java などを勉強された経験がある場合は、余り違和感がなく Typescript に入れると思います。

Typscript が書ければ、Javascript の開発にも対応できますし、将来性もあります。

そう考えると、学習にかかる時間はほぼ同程度で、将来的に「時間の節約が見込める」という事で学習の価値は高いと言えます。

まとめ
学習効率にこだわると、少しでも学習時間を減らす方向に走りがちです。 しかし、少し大きな視点、長い目で見るとほんの少しの時間が将来の大きな時間の節約につながる場合も多くなります。

Typescript はその良い例の一つです。少し制約の多い書き方が必要ですが、Typescript のコンパイラやコードの読みやすさなど、長期的視点ではより効率化を図れる方向です。

やる事を減らして、目先に時間を減らすのも大切ですが、少し長期的な視点での節約、効率化も重要です。

Web 開発を目指す方には、Typescript は強い味方になってくれます!
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す