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

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

Microsoftは、オープンソースを提唱する組織や団体との協業も積極的に行っています。Apache Software Foundation、日本Ruby会議、PHPカンファレンスなどへのスポンサーとしての協力や、オープンソースのソフトウェアをWindows環境で利用するための技術支援も行っています。

今回は、Microsoftのクラウドプラットフォーム「Windows Azure」上での国産オープンソースWebアプリケーションと最近注目を浴びているNode.jsへのMicrosoftの取り組みをご紹介します。

国産オープンソースWebアプリケーションとWindows Azure

オープンソースWebアプリケーションをWindows Azure上で利用するには、データベースをSQL Serverのクラウド版「SQL Azure」での動作やWindows Azure上に簡単に展開するためのパッケージ化などが必要になります。これらの対応をオープンソースの開発者とMicrosoftで協働しています。米国ではすでに、WordPress、Joomla!、Drupalが対応済みです。

日本では、昨年より本連載でも紹介しているOpenPNEやEC-CUBE、そして、MovableTypeの開発者と数回の合宿やミーティングを開催し、MicrosoftやWindows Azure MVPの浅見城輝氏による技術支援を継続的に実施ました。その結果、OpenPNE 3.6がWindows Azureに対応、EC-CUBE、MovableTypeは次期バージョンでの対応が予定されています。

Movable Typeは次期バージョンから対応予定
Movable Typeは次期バージョンから対応予定

OpenPNEのプロジェクトを推進している株式会社手嶋屋代表取締役 手嶋守氏より、OpenPNEのWindows Azure対応の狙いや今後の方針についてコメントいただきました。

「OpenPNEはオープンソースのSNSソフトウェアで、現在3万以上のSNSサイトがOpenPNEで動作しており、参加者は300万人以上で、エンターテイメントからビジネスまでさまざまな分野で利用されています。Windows Azureについては、社内SNSの構築のプラットフォームとして着目。その理由として、企業に導入されているWindowsであること、クラウドなのですぐ始められること、データベースが冗長化されていてデータの信頼性があること、プラットフォームはMicrosoft、OpenPNEは手嶋屋がサポートしていること、そして、Active Directoryとのアカウント連携が可能であることを挙げられます。すでにとある新聞社の社内SNSとして今年の2月に導入済みです。また、最新バージョンのOpenPNE 3.8ではシンプルになったユーザインターフェースを操作し、Ajax UIで画面遷移の数を半分に削減しており、スマートフォン対応しています。OpenPNE 3.8のWindows Azure対応も今後予定しています⁠⁠。

3.8でWindows Azure対応がなされる予定のOpenPNE
3.8でWindows Azure対応がなされる予定のOpenPNE
3.8でWindows Azure対応がなされる予定のOpenPNE

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つです。

おすすめ記事

記事・ニュース一覧