「Node.js」とは|テクスタ辞書


<前文>

Node.js(読み:ノードジェーエス、通称:ノード)とは、サーバーサイドのプログラミング言語のことで、JavaScriptを使ってサーバーの構築ができます。2009年にライアン・ダール氏によって開発されました。
Node.jsにより、フロントエンド/バックエンドともに同じ言語を利用することができます。また、Node.jsでは2つの特徴を生かし、『軽量かつ効率良く処理する』ことを実現しています。

<詳細1>
イベントループ
Node.jsが注目されたのは『イベントループ』にあります。JavaScriptの一種であるNode.jsは、JavaScriptの『シングルスレッドで動作する』という特徴を生かし、スレッドを1つしか持っていません。そのため、発生したリクエストやコールバックをイベントとして登録して扱い、1つのイベント処理が完了したら次のイベントを処理するという『イベントループ』を行うことで、メモリの消費を大幅に抑えて軽量に動作させています。

<詳細2>
ノンブロッキングI/O 
前述のとおり、一度に1つの処理を行うことでデッドロック等を意識する必要がなくなった反面、同時に複数の処理を捌くことができません。そこでNode.jsでは複数の処理を捌くため、『ノンブロッキングI/O』という技術を採用しています。
データベースで検索を行う場合、一般的に結果が返ってくるまでの間、リクエスト元の処理を止めて置くことで、結果を利用した処理を続けて実行できます。
『ノンブロッキングI/O』では、データベースにアクセスしたら次の処理に移ります。結果の受け渡しはコールバックで行います。このような重たい入出力の処理を同期せずに実行することで、複数の処理を効率的に処理していきます。