Node.jsはJavaScriptの実行環境(ランタイム)です。
JavaScriptはもともとブラウザ上で実行するために生まれたプログラミング言語でした。最初期は機能的にも質素なもので、簡単な画面上でのアニメーションなどに用いられました。現代では高機能化し、Webアプリケーションを構築する上で欠かせないものになっています。
Node.jsはサーバーなどで動作するJavaScriptの実行環境です。実行環境とは名前の通りプログラミング言語を実行するためのしくみで、ランタイムなどと呼ばれます。Node.jsはもともとブラウザ上で動作していた言語を、ブラウザの外に持ってきたと考えてください。
Node.jsは高速な動作や多数のアクセスに強いといった特徴から、Webアプリケーションを中心に人気を集めてきました。近年はWebフロントエンドの開発ツール、Reactなどのフロントエンドフレームワーク(ライブラリ)との連携といった用途でますます注目を集めています。
Node.jsがどんな言語か、見ていきましょう。
Node.jsは高速
Node.jsの登場当時はC10K問題と呼ばれる、大量のアクセスがアプリケーションの動作を阻害する事象が話題になっていました。Node.jsはこれに対応すべく、イベント駆動・非同期・シングルスレッドという動作モデルを採用しています。これらによって、Node.jsは大量のアクセスを処理しやすくなりました。当時としてはあまり主流ではないしくみを採用したため、注目を集める要因になりました。
JavaScriptはもともとブラウザ上で動作する言語です。ブラウザ上ではJavaScriptとWeb Assembly以外の言語は動作しないので、高速なWeb体験のためにはJavaScriptの実行速度が重要になってきます。そのため、GoogleやMozillaなどのブラウザベンダーはJavaScriptの高速化に注力してきました。Node.jsはGoogle Chromeなどに採用されているV8というJavaScriptエンジンを採用しています。V8上のJavaScriptは、事前のコンパイルが必要ない、いわゆるスクリプト言語では特に優れた速度を有します。
Node.jsは、大量のアクセスに対応するしくみを採用し、高速なJavaScriptを実行できるため、優れたパフォーマンスを発揮できる環境として人気です。Node.jsのWebアプリケーションフレームワーク、Expressはこういった言語の特徴を活かせるため利用が広がっています。
JavaScriptの汎用性
WebフロントエンドでもJavaScriptの人気が増したことで、Node.jsの重要性はますます大きくなっています。
Node.jsはブラウザで動くJavaScriptと文法上の共通性があり、Webフロントエンドを開発したことがあると学習しやすい言語として親しまれています。
現在、ReactなどのWebフロントエンドフレームワークの登場で、SSR(Server Sider Rendering)や開発ツールとしてのNode.js/npm(Node.jsのパッケージマネージャー)の人気も高まっています。現代的なWebフロントエンドの開発では、ブラウザの外で動作する特徴を持つNode.jsは欠かせません。
Webフロントエンド開発の需要の高まりもあり、JavaScriptはある種の共通言語として広く親しまれています。その恩恵を受けてNode.jsを使う人も増え続けているのが現状です。
Node.jsを学ぶ
Node.jsは学習しやすい言語ではあるものの、実践的に活用するためには、ある程度特化した知識が必要になります。『実践Node.js入門―基礎・開発・運用』では、Node.jsを現場で活用してきた著者がノウハウを伝えます。