Web制作者が知っておきたい オープンソースアプリ&クラウドでのWeb構築の心得

第4回 Microsoftのオープンソース,そしてNode.jsへの取り組み

この記事を読むのに必要な時間:およそ 2.5 分

Node.js

スマートフォンやタブレットの普及に従い,サーバサイドには以前にも増して,スケーラビリティとスピーディな開発が必要とされてきました。こうした状況の中で注目を浴びてきているのが,サーバーサイドJavaScriptのNode.jsです。オープンソースのプロジェクトとして進められているプロジェクトではありますが,大手の企業も早くからプロジェクトに加わり,自社製品へと組み込んでいます。中でもとくに力を入れているのがMicrosoftです。この後は,Node.jsの特徴とともに,多くの開発者が利用しているであろうWindows上での開発環境についても解説していきます。

人気急上昇のNode.jsとは

これまでのサーバーサイドプログラミングは,マルチスレッドによる平行処理により,処理能力を高めようというのが主流を示していました。しかし,この手法にも限界が見え始めています。いわゆるC10K(クライアント1万台)問題です。Web 2.0でコンシューマサービスが騒がれたころから話題になり,これまでにさまざまな取り組みが行われています。その中の1つとして登場してきたのがNode.jsになります。

Node.jsでは,ノンブロッキングI/O,つまりI/O呼び出しの完了を待たずに処理を継続する仕組みを取っています。そのため,コールバックを定義して,完了した際に呼び出されるイベント ループのプログラミングモデルが必須となります。このことにより,使われるメモリを小さく抑えることができ,スケーラビリティの高い実行環境となるのです。

この話は,実は他の言語と実行環境でも取り組まれていた話でもあります。Node.jsを開発したRyan Dahl氏も,Node.jsを開発する前にRubyやCでノンブロッキングI/O+イベントループというプログラミングモデルを実現しようとしていました。その中で,JavaScriptにはそもそもブロッキングI/Oがなく,ノンブロッキングI/Oのみでの開発を可能としていたこと,そして,そのJavaScriptがWeb開発者にとって非常に慣れしたんだ言語という理由から,今のように注目を集めたのです。

Node.jsのメリット

Node.jsのメリットは以下のようになります。

JavaScript
多数の開発者が知っている
サーバとクライアントで同じ言語
シンプルな同時実行性モデル
アイドル接続のコストがほぼゼロ
モジュール化

開発環境について

Node.jsの環境は,当初LinuxやMac OS Xなどの非Windowsの環境しか想定されていませんでした。一方で,Windows上で動作させたいという要望も多く,当初は,Cygwin上の動作をサポートしていました。それは,ノンブロッキングI/Oをサポートする上でも必要だったからです。

Node.jsの環境

Node.jsの環境

しかし,ネイティブ環境に比べると効率が悪くなります。こうした状況が一変したのが,2011年6月です。MicrosoftがNode.jsをWindows/Windows Azureで動作させるための支援を発表し,共同でWindows対応を開始しました。そして,2011年11月,Node.jsのv0.6.0がリリースされ,直後にWindows版インストーラの提供が開始されました。

現在では,Windows Azureに対応したNode.js版SDKが用意され,クラウドの利用も容易になっています。

Node.jsの環境にWindowsが加わった

Node.jsの環境にWindowsが加わった

Node.jsをWindows/Windows Azure上で動かしてみる

Windows上でのNode.jsの開発は,基本的な部分は他の環境とほとんど変わりません。ただし,WebサーバであるIIS用のランタイムが用意されること,そしてクラウドサービスの利用を容易にするWindows Azure用のSDKが用意されている点が他とは異なります。

Windows環境の構築
Windows上でのNode.js実行環境のインストール

Windowsのみで動作させたいのであれば,nodejs.orgからWindows用の環境をインストールすれば,コマンドラインからnode.exeが実行でき,すぐにアプリケーションを開発できます。npmも一緒にインストールされるので,他のパッケージを使うことも可能です。作成されたコードは,Windows以外の環境でもそのまま動作します。

nodejs.org

nodejs.org

Windows上での運用環境も考えるとiisnodeをインストールすることをお勧めします(こちらはgithubからのダウンロードになります⁠⁠。

Windows Azure SDK for Node.js

Windows 環境の構築よりもお勧めなのは,Windows Azure SDK for Node.jsです。こちらは運用環境のためにわざわざサーバを立てる必要もなく,クラウドのWindows Azureへの配置までをこのSDKで行うことが可能になっています。このSDKは,Windows Azureの製品サイトに公開されており,インストールも容易です。Windows版の環境と異なるところは,Windows Azure固有の

  • プロジェクト作成
  • Windows Azure emulation環境でのデバッグ実行
  • Windows Azureへの配置/更新/削除

というコマンドをPowerShell(Windowsのシェル環境)で行う点です。その他は,node.exe,npmコマンドともに変わりありません。詳細はWindows Azureの製品サイトを参照してください。もちろん,Windows Azureへ配置する際には,Windows Azureの無料評価版などの登録は必要になりますので,クラウドを使ったことない方はこの機会に試してみると良いでしょう。

まとめ

MicrosoftのNode.jsの取り組みは,実はこれだけで終わりではありません。Webブラウザで動作するIDEであるCloud9 IDEは,すでにWindows Azureへの配置を直接可能としています。このことは,非Windows環境を利用している開発者に対してもWindows Azureを訴求するというクラウド戦略の一旦とも考えられますが,これだけ早期に対応している点でNode.jsへの本気度が伺えます。また,Microsoftの得意分野でもある開発ツールの対応もそう遠くないと推測されます。

今後はMicrosoftだけでなく,さまざまな企業や多くの開発者がNode.jsに取り組むことで,さらなる進化が期待されます。今後も動向を見逃すことができない技術の1つです。