node.jsを試してみた

いささか時期を逃した感がありますが、サーバサイドJavaScriptであるnode.jsを試してみた。

node.jsはGoogleのJavascriptエンジンのV8を利用し、Non Blocking I/O環境を実装したもので、速度も速く言語的にもイベントドリブンなど実装しやすいのが特徴。

早速インストールから。

インストール

例のごとくMac環境でhomebrewを利用しているので簡単です。
homebrewは新しいソフトウェアの対応も早く、MacPortsと違い自分でのパッケージ追加も楽なのでおすすめです。 (homebrewのインストールの仕方はこちら)

まずはnode.jsとnpmのインストール。
npmはperlのcpan、phpのpear、rubyのgemにあたります。
依存関係を含めライブラリをインストールするユーティリティです。
以下のコマンドを入力して、コンパイル・インストールされるのを待ちます。

brew install node.js npm

最後に必要な環境変数を追加します。
node.jsの所在を示すNODE_PATHの追加とPATHにnpmで追加したライブラリが参照できるようにします。

export PATH=/usr/local/share/npm/bin:$PATH
export NODE_PATH=/usr/local/lib/node

以上を~/.profileか~/.bash_profile、zshの人は~/.zsh_profileに追記します。

試してみる

まずは簡単なエコーサーバを書いてみる。

server.js

var net = require('net');
var server = net.createServer( function(stream) {
  stream.setEncoding('utf8');
  stream.on('connect', function() {
    stream.write('Hello node.js\n');
  });
  stream.on('data', function(data) {
    // 空行なら切断
    if(data.match(/^\r?\n$/)) stream.end('bye\n');
    else stream.write(data);
  });
  stream.on('end', function() {
    stream.end('bye\n');
  });
});
server.listen( 8000, "localhost" );

ターミナルから

node server.js

で実行しサーバを立ち上げる

別のターミナル上で

telnet localhost 8000

を実行し接続します。

打った文字列がそのままエコーされてくるはずです。空行を入力することでクライアント切断です。
あれだけの行数で簡単にエコーサーバがかけます。すごいです。

ちなみにもっと短い行数でHTTPサーバも簡単にかけます。

server.js

var http = require('http');
http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello node.js!!\n');
}).listen(8000, "localhost");

同様に

node server.js

で実行しサーバを立ち上げ、ブラウザからhttp://localhost:8000/にアクセスしてください。
Hello node.js!!と表示されるはずです。

もちろん実際のWebサーバの様にリクエストに応じて、ファイルを返すことのも可能です。しかし一から書くのはさすがに面倒です。そこでライブラリの出番です。いくつかフレームワークが存在しており、それを読み込むことで簡単に実装できます。

というわけで、思っていた以上にJavaScriptでサーバサイドプログラミングが楽にできました。 今後、作ったAjaxやWebSocketのサンプルなどを紹介できたらと思っています。

JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス
Douglas Crockford
オライリージャパン
売り上げランキング: 6082

JavaScript Patterns
JavaScript Patterns

posted with amazlet at 11.01.04

Stoyan Stefanov
Oreilly & Associates Inc
売り上げランキング: 24776

コメントを残す

メールアドレスが公開されることはありません。