Node.jsの誕生とこれまでの歩み

このような時代背景のもと、2009年にNode.jsは誕生しました。Node.jsのクリエイターRyan Dahl氏は、上述のJavaScriptエンジンV8とイベントループライブラリ(libev/libeio)の2つを組み合わせてサーバ上で動作するJavaScript実行環境を作成しました。その目的を、

「Nodeのゴールは、ノンブロッキングなネットワークプログラミングをサーバ開発に熟知していないユーザにも可能にすること」

と定めています。通常、プログラムがネットワーク経由のデータの送受信やファイルの入出力などのI/O操作を行うと、操作が完了するまで「待ち」時間が発生します。ノンブロッキングとは、このI/O操作の待ち時間が発生してもプログラム自体の動作が待たされることがなく、直ちに次のプログラムの動作に進めることを指します。Node.jsは、このようなサーバプログラム上で発生する様々な「待ち」を解消する仕組み(非同期I/O処理)を整えることによって、大量な接続を高速に処理することを実現したのです。これまでもサーバサイドで動作するJavaScriptは存在していましたが、上述した非同期I/O技術とJavaScript技術の成熟を受け、Node.jsは現在に求められるサービス特性に合ったタイミングでの登場であったと言えます。

開発者の視点では、Node.jsは基本的にシングルプロセス・シングルスレッドで動作するため、 CやJavaを使ったときのような複雑なマルチスレッドプログラミングを行う知識を必要としません。開発者は、通常のブラウザ上でプログラミングを行う感覚でアプリケーションの開発が行えます。また、npm(node package manager)というパッケージ管理機能でサードパティのモジュールを作成・公開・導入できる仕組みが整っているため、ユーザが容易に機能の拡張ができるのも特徴です。Node.jsがオープンソースとして公開されると、興味を持った世界中の開発者がgithub上でNode.jsの開発に多数参加するようになり、現在も急速な勢いで開発が進められています。

Node.jsは、奇数のバージョンが開発版、偶数のバージョンが安定版と分かれており、現在まで4つの安定版がリリースされています(2012年7月時点ではnode-v0.8.xが安定版の最新です)。2010年11月よりNode.jsの開発は、米国のクラウド事業者Joyentに移管され、その他の世界中のクラウド事業者やスタートアップ企業が多数開発に関わっています。また2011年からはMicrosoftがNode.jsの開発に参加し、現在、Window Azureサービス上でもNode.jsが提供されています。

Prev