プログラミング初心者になぜ JavaScript をオススメする人が多いのか
たまーに「プログラミングを始めようと思ってるんだけど、おすすめの言語教えて」みたいなまとめ記事を目にしますが。
その記事中で、結構な割合で JavaScript がオススメされているのを目にします。
で、仕事でも趣味でも書く言語のほとんどが JavaScript な自分からしても、確かに JavaScript ってプログラミング初心者にオススメしやすい言語ではあります。
とはいえ、もちろん良い面ばかりを持ち合わせているわけでもないので、今回は自身の考えを書いていこうと思います。
そもそも JavaScript とは
プログラミング言語の一つです。
利用される場面は Web サイト・Web アプリ・バックエンド・デスクトップアプリ・モバイルアプリなど、ブラウザからサーバ、デスクトップからスマートフォンまで多岐にわたっている。
Wikipedia にも書かれている通り、かなりの広範囲で使用することが可能な言語だったりします。
最も一般的な使われ方としては Web 系で、ほとんどの Web サイトで使用されているんじゃないかなーと思います。
そのため、これから Web サイトを作りたい人や、Web サイトを作る仕事に就きたい人には特にオススメな言語です。
また最近ではバックエンドやデスクトップアプリでも一線級で使用されている言語になっており、モバイルアプリも作れるっちゃ作れる言語です。
JavaScript のメリット
JavaScript の良さはいくつかあるのですが、ざくっと書き出していくと。
汎用性が高い
上にも書いてあるとおり、様々なニーズを JavaScript が書けるだけで満たせるようになります。
汎用性の高さは他の言語にはないものがあります。
環境が作りやすい
プログラミング初心者の方が最初につまずきやすいポイントとして、言語が動く環境を作ることがあるかなーと思います。
その点 JavaScript は最低ブラウザとメモ帳があれば動くので、環境作り自体はくっそ簡単です。
もう少し突き詰めて勉強するとなっても Node.js をインストールするだけなので、ほぼ悩むことがありません。
適当に書いても動く
JavaScript の特徴として、型が存在しないことが挙げられます。
細かいことはここでは書きませんが、簡単に言うならば、適当に書いてもそれっぽく動くという感じです。
そのため、プログラミングのことを何を知らない方が適当に書いてもあっさり動いちゃうことが多いです。
成果物が目に見えやすい
個人的に一番大きなメリットかなーと思うのがこれでして。
Web サイトを作るには HTML と CSS と JavaScript を書く必要があるのですが。
これらに共通することして、適当に書いてもそれなりに動くということが挙げられます。
なので誰でも簡単に Web サイトを作れるので、プログラミングの一歩目としては最適な言語かなーと思います。
JavaScript のデメリット
ここまで JavaScript の良いことばかり書いてきましたが、もちろん厳しいところもあります。
スマホアプリ開発は結構大変
汎用性の高さにスマホアプリも作れることを上げている記事がちょくちょくありますが、JavaScript はスマホアプリ開発をそこまで得意とはしていないです。
ちゃんと作れるっちゃ作れるんですが、プログラミング初心者の方がスマホアプリを作るために JavaScript の勉強を始めるというのは、個人的にはオススメできないです。
JavaScript を用いたスマホアプリ開発は、Web サイト開発の知識を伴うため、まずは Web サイトを作る勉強から始めることとなります。
また、JavaScript によるスマホアプリ開発は制約も多いため、凝ったアプリを作ろうとすると仕様を満たせない可能性もあります。
バグが起きやすい
メリットのところで「適当に書いても動く」と書きましたが、逆に言うと「バグに気づきづらい」といえます。
小規模な Web サイトを作るくらいでしたら問題ないですが、中〜大規模なものを作るとなると、一つのバグが大きな問題を引き起こすことも少なくありません。
JavaScript は型を持たないため、型周りでめちゃくちゃバグを引き起こしやすく、しかも気づけないという自体は頻繁に発生します。
業務レベルであれば素の JavaScript を書くことはほぼ存在せず、Microsoft 製の TypeScript という型が追加された JavaScript を書くことがほとんどです。
そのため「JavaScript が書けるようになったから業務でも余裕でしょ」となめてかかると、めちゃくちゃ痛い目にあいます。
フレームワークありきになりつつある
フレームワークとはいわゆる言語の拡張みたいなもので、React とか Vue とかが該当します。
React も Vue も JavaScript の拡張なので、JavaScript っちゃ JavaScript なんですが、書きっぷりは全く異なります。
業務で Web サイトを作るとなると、ほぼ 100% フレームワークを使うことになるため、素の JavaScript を覚えたくらいじゃ太刀打ちできません。
だからといって、フレームワークから勉強するなんてことは愚の骨頂であって、フレームワークを勉強したいならまずは元の言語を理解する必要が絶対にあります。
JavaScript 初心者の方が多い
個人的に大きいデメリットかなーと思うのがこれなのですが。
JavaScript はとっつきやすい言語であるがゆえに、世界中に JavaScript をかじった人がいます。
で、かじったくらいで「俺プログラミングできるぜ!」とイキっている人も多く、そういった人たちが間違った情報を公開していることが少なくないです。
もちろん自分も学び始め最初の頃は同じような感じでしたが、そこからも勉強を続けて昔のミスにいくつも気づいてきました。
なので間違った情報を鵜呑みにしやすい言語かなーと個人的には思います。
JavaScript で迷ったら MDN を読む、これが一番手っ取り早いことは自分が保証します。
総評
JavaScript は、確かに初心者の方がプログラミングを学ぶ最初の言語としては悪くないと思います。
特に環境を作る必要もなく、適当に書いても動くし、成果物がすぐに生成できます。
一方で、これを仕事にするとなると他の言語よりもぐっとハードルは上がります。
フレームワークは理解しないといけないし TypeScript も覚えないといけないし、山ほどある情報の中から正しい情報を選択する判断力も求められてきます。
趣味で留めるのであればちょうど良い言語ですが、仕事で使う言語としては難易度は高いよなーという印象です。
で、結局のところ
「プログラミング言語を学びたいんだけど、何がオススメ?」と聞かれることはちょくちょくありますが。
自分は必ず「プログラミングを学ぶのであれば、学ぶことを目的にせず、何を作りたいかを目的にしたほうが良いですよ」と答えるようにしています。
結局のところ、その人が何のためにプログラミングを覚えたいのか、それによって学ぶべき最適な言語は変わってくるわけで。
プログラミングの第一歩として JavaScript を学ぶことは決して悪いことではないですが、目的もないままに勉強してもモチベーションが持ちません。
大学生のときの自分がそうだったので、多分そうなんだと思います。
何を作りたいのか、それさえはっきりしていれば自ずと学ぶべき言語は決まってきます。
もし Web サイトを作りたかったり、デスクトップアプリを作りたかったりするのであれば、ぜひ JavaScript を学んでもらうのが良いんじゃないかなーと。
今回一番伝えたかったことはデメリットの部分でして。
JavaScript ってめちゃくちゃなめられてるんですが、それゆえ下手に書いてコードをぐっちゃぐちゃにする人が後を経ちません。
過去の自分も最初はそうでしたが、何本何十本と Web サイトを作り続けてきて、ようやくそれっぽく書けるようになってきました。
なので、趣味ならてきとーに書いて全然構わないと思いますが。
仕事にしたいのであれば、何を作る仕事に就きたいのか、よくよく考えてから最初の言語を選んでもらいたいなーと思う今日このごろでした。