JavaScript・Node.js が他のプログラミング言語より優れていると思う点
僕は JavaScript が好きだ。そして、単に好みなだけでなく、他のプログラミング言語と比べて有利な点も多いと思うので、選びやすいと思っている。
今回は、JavaScript・Node.js が他のプログラミング言語より優れていると思っている点を挙げてみる。
Node.js を使わない JavaScript のメリット
- 実行環境の用意が要らない
- HTML ファイル内に JS をベタ書きし、OS にプリインストールされているブラウザで開けば結果が見られる
- 使用するブラウザによる差異もない
- IE を除けば、尖った新し目の関数を多用したりしなければ、実行するブラウザによる差異も基本的にない (良い時代になった…)
- コンパイルする必要がない
- 書いたコードがそのまま動かせる
Node.js のメリット
- クロスプラットフォーム対応している
- Node.js さえインストールされていれば OS を選ばない (ファイル周りは若干 OS を意識した書き方の注意が必要だが)
- コンパイルする必要がない
- 素の Node.js で書いていればトランスパイル不要 (最近は TypeScript を使う例も多いとは思うが、僕は素の JS でよく書いている)
- フロントエンド開発で必ず使うことになる JavaScript 言語をそのまま使ってバックエンドを実装できる
- バックエンド開発で別言語を選ぶと、コンテキストスイッチが辛かったりする (Java なのに JS っぽく書きそうになったり、「JS ではこう書くけど PHP ではこう書く」みたいなことを考えなくて良くなる)
- フロントエンドでも使われていて、JavaScript が読めないプログラマは居ないので (決め付ける)、Scala とか Go とか Python とかで書くよりも読んでもらいやすい
- 簡単なスクリプトならシングルファイルで実行できる
- 外部
npm
パッケージを使わないレベルなら、シングルの.js
ファイルをnode
コマンドで直接実行すれば良い。package.json
も不要 - Shebang
#!/usr/bin/env node
を1行目に書いてファイルに実行権を与えれば、コマンド的にも動く
- 外部
「Ruby、Perl、PHP なんかもシングルファイルでコンパイルなしに動かせますけど?」って言われそうだけど、これらの言語は実行環境・開発環境をインストールするのに若干手間がかかる感じがある。また、Windows でも Mac でも関係なく、バージョンアップすると実行環境が壊れてちょっとしたトラブルが起こることが多いなと感じている。
それと比べて、Node.js は (v5 あたりまでは微妙だったが) v7 以降くらいなら大体同じように動くようになってきたから環境を選ばない。バージョンアップする時も、Nodist や Nodebrew を経由して入れていれば、他の言語における anyenv 系よりもトラブルなくアップデートしやすいと思う。
何より、フロントエンドと同じ言語で書けるのはとても良いと思う。Web アプリを作る上で、HTML・CSS・JavaScript は必ず触れる。その中の1つである JavaScript でバックエンドも書けるなら、学習する言語の数を増やさなくて良いし、コード的にもフロントエンドとバックエンドで共用できるコードが出来たりする (モデルとか)。Nx というフロントエンドとバックエンドを合わせたモノレポを作るツールもあったりして、同じ言語でそのまま書けるメリットはデカい。
JavaScript を読んだことも書いたこともない、というプログラマは少ないだろうから、JavaScript に苦手感があるような人間に対しても、無理やり引き継がせて何とかなる言語だと思っている。コレが Python や Go なんかだとちょっと尖ってるし、どうだかなぁと。
ところで、JavaScript に抵抗感を持つプログラマって何なんだろう。言語的な特徴でいえば PHP も大して変わらないと思ってるし、単にレベル低いのに選り好みしてるなーコイツとしか思ってないんだが。式、関数、暗黙型変換などの言語仕様も、フロントエンドとバックエンドの両方で JS を使っていればすぐに分かることだし、そういうことでやらかすようなコードはすぐに書かなくなる。他の言語に優位性を感じるほど大きな問題だとは思ってないんだけど、結局はスキルの問題かねぇ。
そんなワケで、JavaScript、Node.js、良い言語ダヨー、他の言語より楽なところ多いヨー、という主張でした。