Expressフレームワーク
前ページでざっと標準のHTTPモジュールを解説しましたが、標準モジュールのみで処理を行おうとすると、かなり煩雑な処理を記述する必要があります。これを補うために、Node.jsでは便利なライブラリやフレームワークなどが公開されており、ノードパッケージマネージャー(以下、npm)という仕組みで手軽にインストールできます。npmは、PerlやRubyで言うCPANやRubyGems相当のものと考えていただければよいでしょう。
ここでは、npmの利用例として、WebフレームワークであるExpressのインストールから実行までの方法を説明します。
インストール
Windows Azure上で実行できるようにするため、以下の手順にしたがって、新しいサービスとWebロールを追加していきます。
[1]サービスとWebロールを作成する
はじめにWindows Azureサービスと、Webロールを1つ作成します(リスト9)。
PS C:\node> New-AzureService express ... PS C:\node\express> Add-AzureNode WebRole1
[2] Expressをインストールする
WebRole1フォルダに移動し、npmコマンドを実行します。第2引数のinstallは文字通りインストールを指示し、第3引数はパッケージ名を指定します(リスト10)。カレントディレクトリのnode_modulesフォルダにパッケージがインストールされます。
PS C:\node\experss> cd WebRole1 PS C:\node\express\WebRole1> npm install express
インストールの結果は、図3の通りです。
[3]Expressの設定をする
Expressは複数のテンプレートエンジン(注1)を利用できますが、ここではEJS(Embedded JavaScript)を選択します。.\node_modules\.bin\expressコマンドを実行します(リスト11)。
PS C:\node\express\WebRole1> .\node_modules\.bin\express -t ejs
Haml/Jade/EJS/CoffeKup/jQuery Templates をサポートしています。詳細は、Expressのページを参照してください。
コマンドを実行すると必要なリソースが追加されます(図4)。
引き続き、npm installコマンドを再度実行し、依存関係のあるパッケージを追加インストールします(リスト12)。
PS C:\node\express\WebRole1> npm install
Windows Azureでの実行
前項までの設定を行うと、「node.exe app.js」とコマンドライン上から実行できますが、Windows Azure上で実行するためにはさらに修正が必要です。
[4]Windows Azure向けの設定をする
Windows Azureで実行できるように、app.jsをserver.jsにリネームします(リスト13)。
PS C:\node\express\WebRole1> mv .\server.js .\server.js.old PS C:\node\express\WebRole1> mv .\app.js server.js
Windows Azureで実行する場合は、port環境変数でリッスンポートが渡されるため、server.jsの最後の部分をリスト14のように修正します。
var port = process.env.port || 3000; http.createServer(app).listen(port); console.log("Express server listening on port " + port);
[5]エミュレーターでの実行
Start-AzureEmulator -Launchコマンドレットでエミュレーターを起動します。図5のとおり表示されれば正しく実行できています。
ほかにも、便利なライブラリなどが公開されています。パッケージは、npm registryから検索できます。
まとめ
今回はHTTPサーバの基本機能と、npmによるパッケージのインストールについて紹介しました。ここで説明した機能はほんの一例で、ほかにもさまざまな書き方が可能となっており、紹介しきれない機能も多々あります。興味を持たれた方は、さらにNode.jsのオンラインドキュメントや他の文献を読み進んでいただければ幸いです。
2回のNode.jsの基本機能を経たので、次回はWindows Azureの操作について解説したいと思います。