【ハウツー】
続いてNarwhalのパッケージの一つであるJackを使ってみよう。JackはRubyのRackやPythonのWSGIなどと同様のWebサーバとJavaScriptフレームワークとの間を取り持つインタフェースで、現在はJettyをサポートしている。
Jackを入手するには以下のようにgitコマンドでリポジトリをクローンする。その後、jack/binディレクトリを環境変数PATHに追加しておこう。
$ git clone git://github.com/tlrobinson/jack.git
まずはJackに付属するサンプルを実行してみよう。コマンドラインから以下のように入力すると8080番のポートでサーバが起動する。
$ jackup ./jack/examples/example.js
Webブラウザからhttp://localhost:8080/にアクセスしてみよう。以下のようなサンプルアプリケーションが動作しているはずだ。このほかにもCometやファイルアップロードのサンプルが付属しているので試してみるといいだろう。
実際にJackを用いたWebアプリケーションを開発してみよう。もっとも簡単なHello Worldは以下のようになる。
var Jack = require("jack");
var map = {};
map["/"] = function(env) {
return [200,{"Content-Type":"text/plain" }, ["Hello World!"]];
};
exports.app = Jack.ContentLength(Jack.URLMap(map));
このソースコードをhello.jsなどのファイル名で任意の場所に保存し、jackupコマンドの引数に渡すことでWebアプリケーションとして動作させることができる。
JackではURLのパスに対して関数を設定していく。リクエストパラメータの取得などについてはJackが提供するクラスを用いる。以下に簡単な例を示す。
map["/"] = function(env) {
var request = new Jack.Request(env);
var response = new Jack.Response();
if(request.GET("name")){
// GETされたパラメータをコンソールに出力
print(request.GET("name"));
}
// HTMLフォームを表示
response.write("<form method='GET'>");
response.write("<input type='text' name='name'>");
response.write("<input type='submit'>");
response.write("</form>");
return response.finish();
};
見てのとおり、JackはあくまでWebサーバとのインタフェースであり、非常にプリミティブなフレームワークだ。JackのAPIを直接用いてWebアプリケーションを開発するのは非効率的だ。Narwhalのパッケージの1つであるNitroはJackの上に構築されたWebアプリケーションフレームワークであり、こういったより高度なフレームワークと組み合わせることでサーバサイドJavaScriptを用いたWebアプリケーションを簡単に開発することができるようになると考えられる。
しかし、現時点でのJackはクエリ文字列などのURLデコード処理や日本語の扱いなどについて問題があり、まだ実用可能なレベルには達していないようだ。
NarwhalにはJackの他にもWebフレームワーク「Nitro」や、パッケージマネージャ「getjs」といったサブパッケージが存在する。Narwhalはまだまだ発展途上ながら、ServerJS標準のライブラリ実装をコアに、Webフレームワークやパッケージマネージャを備えたフルスタックのサーバサイドJavaScriptプラットフォームを指向しているのではないだろうか。
これまでJavaScriptの主戦場であったクライアントサイドのみならず、サーバサイドでもJavaScriptを活用するための手段としてNarwhalの今後に期待したい。
| 理研、脳・脊髄形成に必要な神経板湾曲の仕組みを解明 [20:16 5/25] |
| 京大、「慢性閉塞性肺疾患」患者の労作時呼吸困難は鍼治療が有効と実証 [20:08 5/25] |
| 120Hz SHVカメラ用イメージセンサーを使った撮像装置 - SHVフルスペック化へ [18:10 5/25] |
| 京大、視覚による物体認知は前頭前野からのトップダウン信号が重要と確認 [17:45 5/25] |
| 製品数の拡大だけでなくBCPの展開なども含めた総合力で事業の強化を図るTI [17:25 5/25] |
|
心理学のプロのお墨付き。本当に怖いホラー映画とは? [09:30 5/27] ホビー |
|
下田麻美、待望の1stシングルが6月27日発売! ジャケ写を紹介 [09:10 5/27] ホビー |
|
【連載】読む鉄道、観る鉄道 第9回 『サブウェイ・パニック』 - 1970年代のニューヨークと地下鉄の情景を描く [08:00 5/27] ライフ |
|
【連載】発音も聞けちゃう、知って得するidiom情報 第14回 call it a day [08:00 5/27] ライフ |
|
MINI、ロールスロイスにインスパイアされた最高級品質の特別仕様車を発売 [07:30 5/27] ライフ |
4つの診断で、自分の適性を見つめなおそう!
働くこと・挑戦し続けることへの思いを綴ったインタビュー
あなたにピッタリのアドバイスを読むことができます。
転職に必要な情報が収集できます
企業からアプローチのメッセージが届きます。