📘

初心者が学び始めるプログラミング言語は実はTypeScriptがお勧めだと思う話

2022/10/29に公開

最初に学ぶべきプログラミング言語は何か。
度々話題に挙がりますが、2022年現在なら個人的にはTypeScriptを勧めます、という話をします。
2022年ももう終わりですけども。

前提

  • プログラミングを勉強してみたいけど、何からやればいいかわからない、といったケースを想定した話をします
  • すでに作りたいものが決まっている、仕事として必要になるものが決まっている、といった状況では学ぶものが決まっているでしょうから、当然ながら本記事の想定とする状況ではありません
  • 身近に懇切丁寧に指導してくれる人がいるならば、その人に教わることのできる言語をチョイスするというのも良い戦略だと思います

なぜTypeScriptか

3行で。

  • すぐに始められる
  • Webアプリを作ることができる
  • 十分にモダンで十分に枯れている

以下、それぞれの詳細です。

すぐに始められる

とりあえずコードを書き始めて、動かしてみるところまでが最速でやれます。

TS Playgroundを開き、Run をクリックすればハローワールドの完成です。
これだけで、コンソールアプリや、競技プログラミングの問題などは解き始めることができます。
jsへのトランスパイルも画面上でできるので、ブックマークレットを作ってブラウザで遊ぶこともできます。

もちろんWeb画面を作ろうとすればhtmlやcss、ついでにReact等のフレームワークも必要になりますが、それもCodeSandboxなどを使えば、環境構築なしにいきなり試してみることができます。

プログラミングをやってみたい!と思って1日目の作業がIDEのダウンロードとインストール、となると、どうでもいい作業で引っかかるうちに最初の熱意が冷めてしまいがちで勿体ない。

まずはいきなり試せる環境があるというのは重要だと思います。

Webアプリを作ることができる

やっぱり今はなんでもWebでやることが多く、Web開発の需要も大きい時代。

特定のネイティブアプリや組み込みをメインにする言語よりも、最初の選択肢としてはWebアプリを作れるJavaScriptが良いと思います。

CUIやサーバサイドがメインとなる言語より、最初は動きが目に見えるものを作れたほうが楽しいだろうというのも理由のひとつです。

もちろんWebアプリのみならず、Node.jsやDenoでサーバ開発、ElectronやTauriでデスクトップ開発、React Nativeでモバイルアプリ開発など、開発の幅を広げていくことも可能です。

十分にモダンで十分に枯れている

いま第一選択肢としてC言語を勧めるような人はいないと信じたいですが、ひと昔前ならまずはJavaなどの名前があがることは多かったと思います。

Javaは型がかっちりしていて、奇抜な仕様も少なく、クラス・オブジェクトベースのプログラムを学ぶのに向いているといったあたりが理由だったかと思いますが、2022年に学び始める言語としてはちょっと古すぎるかなと思う部分が多々あります。

特に(主観も入りますが)取って付けのジェネリックが型安全でないこと、Stream APIにしても書き方が冗長すぎることといったあたりが気になります。

JVM系の言語ならばもう少しモダンなKotlinなどもありますが、少し人口が少なく、情報を調べにくくなる&汎用性に欠けるのが難かなと思います。

この点、登場から十分に時間は経っていて、人口も多く、かつ現役バリバリの言語としてJavaScriptは良い選択肢となります。
ただし、今なら素のJavaScriptを使う理由はほとんどなく、最初から型付きのTypeScriptで始めるべきです。

スクリプト言語でありながら、書く時には型がついていて、動作時にはjsにトランスパイルされて動くというのは、いまいち最初は理解しにくい部分ではありますが、そんなところは使っているうちに少しずつ理解すれば十分かと思います。

この観点ではC#, Rust, 型付きのPythonといったあたりも悪くないかと思います。

懸念

良い面ばかりを書きましたが、少し気になる点もあります。

  • 結局Webアプリを作ろうと思ったら、html/cssやjsフレームワークの学習がセットで必要となり、そこにひとつのハードルがあること
  • 進化のスピードが速く、調べ物をする際には新旧情報が入り混じることで混乱しがち
  • 漸進的型付けであるため、型をごまかすような書き方を覚えてしまうと危険

とはいえ、どの言語であれ多かれ少なかれ似たような障壁はあります。
その中でTypeScriptは比較的良い選択肢になるのではないかと思います。


※追記)
変に不安を与える可能性がありそうなので補足しておきます。
最初にC言語やJavaなどを勉強することがダメだという意味ではありません。
前提としても書いたとおり、仕事で使う必要がある、教えてくれる人がいるとったケースは事情が変わってきます。

また、すでに勉強を進められているプログラミング言語があるならば、それが無駄になることは決してありませんので、自信を持って進めてください。
ただ、最初にC/C++や、マイナーな言語・フレームワークを選択して勉強してみた結果、どうも難しくて進められなくなった、という場合、自分にはプログラミングは向いていないんじゃないかとあきらめる前に、学ぶ言語を変えてみるというのもおすすめです。

Discussion