Node.jsはいかにして大きくなったのか
Pocket

今Node.jsがホットだ。高速で軽量なサーバー・サイド・プログラミング環境としては今や必需品になりつつある。しかし、以前はそうではなかった。Node.jsの発明者であるライアン・ダールはNode.jsをあくまで個人的な実験とみなしていて、開発者達も本来クライアントサイドの言語であるJavaScriptをサーバーサイドで動かすというこの技術に冷ややかな視線を送っていた。

関連記事:「Node.jsについて知っておくべきこと

最初に登場してから4年が経った今、Node.jsは完全に主流となった。Node.jsとは、GoogleがChrome用に開発した高速なJavaScriptエンジン、「V8」を使ってJavaScriptを実行する技術である。V8は、Node.jsがJavaScriptをサーバーからクライアントへ高速に送るための実行環境の作成を可能にしてくれる。またV8は、JavaScriptをバイトコードとして変換・実行するのに無駄な処理時間をかける代わりに、JavaScriptをネイティブの機械語に変換することでNode.jsを高速化させている。このスピードこそが今Node.jsが開発者達から絶大な支持を得ている理由だろう。

Node.jsプロジェクトの幹事企業、Joynet社のエンジニアリング部門SVP(シニア・バイス・プレジデント)であるブライアン・カントリルはこのNode.jsの成長過程を間近で見てきた。

「二年前、人々はNode.jsの可能性について『いいね。でもまだ開発途上だ』とか『いいね。でもまだ実績がない』と、誰もが『いいね。でもまだ~』を連発していた」とカントリルは語っている。「Node.jsで構築されたプロジェクトが世の中に増えていくに従って、今ではそういった不信も解消されている」

Node.jsの欠陥を補う作業

Node.jsが生まれた当初、開発者がそれを採用しにくい実用上の理由もあった。開発工程においてNode.jsはデバッグをするのがあまりに難しかったのだ。

多くのNode.js開発者達はウェブ開発のバックグラウンドを持っていることが多いが、カントリルの経歴は少し変わっていて元エンジニアである。現在勤務しているJoynet社には「DTrace」という自身で開発したリアルタイムのバグ診断ソフトウェアを引っさげて来たのだという。

「あまり重要視されることがないが、プログラムの外部の状況と内部で起きていることとの相互作用を見ることで、プログラム全体の理解を深めることができる。」とカントリルは言う。

カントリルと彼のチームはNode.jsにDTraceのデバッグ機能を結合する仕事に着手し、Joyent社は今でもNode.jsの診断とデバッグにはこれを使っている。

その他Node.jsの実用化のために、カントリルのチームはNode.jsのメモリーリーク問題の解決にあたった。当時Node.jsを使うプログラムが何も行っていないにも関わらず、メモリーを次々に消費してしまうという現象が頻繁に起きていたが、誰にもその理由が分からなかった。

「やがてJoynet社の開発者であるデイブ・パチェオが見事な打開案を考えてくれた。彼の案で我々はメモリーのコア・ダンプ(実行プロセスのイメージ)を確認し、上層レベルのJavaScriptの状態を把握することができるようになった。これによって実際どのJavaScriptオプジェクトがメモリーを消費してしまっていたのか、プログラマー達が把握することができるようになったのだ。今でもこれはデバッグや開発には欠かせない手法となっている。」とカントリルは説明してくれた。

カントリルは以前、Javaで有名なSun Microsystems社に勤務していたため、Node.jsがオープンソースである事の重要性を感じていたようだ。Sunの社内ではJavaをオープンにするべきかどうかが数年の間議論されていたが、Node.jsは当初からオープンソースとして公開された。両社で働いた経験を持つ彼にとって、Node.jsはまるでJavaのやり直しであるかのように思えているのだろう。

「Node.jsは我々の努力のおかげで既にJavaよりも先に進んでいる。今ではNode.jsはデバッグもしやすく、サーバー上ではJavaよりも強固だ。Javaのほうが10年以上長く開発されていることを考えれば、これは凄いことだ。」

Node.jsは何に適しているのか

Node.jsは日々安定度を増しており、採用事例も増え、より大型なプロジェクトでの利用も増えてきている。例えば最新のコミュニケーション・ツールであるSpeekやVoxerは完全にNode.js上に構築されている。他の採用者にも、Walmart、Microsoft、Yahooなど、誰もが知る企業が顔を揃えている。

カントリルによれば、決して一つの大きな企業やプロジェクトがNode.jsを主流なプラットフォームに押し上げたわけではないという。MicrosoftとYahooなどはもう何年もNode.jsを使っている。

「Javaにとってキラーアプリとなるものはあっただろうか?なかっただろう。Javaというのは、良いアイディアがたくさん集まることによって普及していったのだと思う。Javaを採用した人々は、それぞれがJavaを選択する正当な理由を持っていたのだ。」

カントリルによるとNode.jsも同じだが、Node.jsはそれに加えて「多目的要素」があるのだという。「他の開発者達はNode.jsを全面的に支持することはないかもしれないが、」カントリルは続けてこう断言する。「もし私が動的な開発環境を一つだけ選ばなければいけないとしたら、おそらく迷わずNode.jsを選ぶだろう。」

実際、Node.jsはチャットやゲームといったウェブベースのアプリケーションの開発には特に人気が高い。だがカントリルのチームはコマンドライン・ツールの開発にまでNode.jsを使っているようだ。

「Node.jsの良さが直感的には理解できない人もいるようだ。何故Node.jsをそんなことに使うのかと聞かれることがあるが、我々はこの用途に一番適したプラットフォームだからだと説明している。」とカントリルは言う。

「さすがにNode.jsはOSやデータベースを作るまでには至らないだろうが、非常に守備範囲が広いことは事実だ。HTTPで通信し、ウェブに向いているアプリケーションであれば、他により適したプラットフォームはほとんどないだろう。」

この3年間でNode.jsが一番進化した点は何だろうか。カントリルの言葉を鵜呑みにするよりも、開発者は実際に使ってみるのが一番早いだろう。すぐにその良さが分かるはずだ。

「Node.jsの良さは小型プロジェクトの開発が本当に簡単に行えるところだ。他の環境なら長時間かかるアイディア・ベースでのプロトタイプなども、Node.jsならばすぐにできてしまう。」とカントリルは語る。「Node.jsが世の中でどう使われているかなんてことは気にせず、遊び感覚でいろいろ試してみて、自分のやりたいことができるかどうかをぜひその目で見てほしい。」

ブライアン・カントリル氏の画像提供:Joyent

Pocket