node.jsで遊ぶ: モジュール管理編
今週末は今ままで使っていたサーバーのディスクがついにご臨終したので、慌ててデータをサルベージしてサーバーを移転したり、色々セットアップしたりと大変でした。サーバーがようやく安定稼働して、色々楽になったので結果的にはよかったです。さて、今日はnode.jsのモジュール管理について勉強してみます。
前回の標準モジュール編では、node.jsの標準モジュールで遊んでみましたが、標準モジュールの他にも有志が開発した様々なモジュールがGitHubなど配布されています。個々のモジュールをダウンロードしてインストールするのもよいのですが、Perlのcpan、Rubyのgemのようにパッケージ管理ツールがあると便利ですよね。そこで登場したのがnpm (Node Package Manager)です。npmを利用すれば、cpanなどのようにパッケージ名を指定するだけで自由にパッケージをインストールすることができます。
npmを使うには、まずnpm自身をインストールします。npmのサイトにあるスクリプトをダウンロードしてきて実行すればインストール完了です。これでnpmコマンドが自由に使えるようになりました。
$ curl http://npmjs.org/install.sh | sudo sh
$ npm -v
npm it worked if it ends with ok
npm cli [ '-v' ]
0.1.25
つづいてnpmを利用して公開されているモジュールをインストールしてみます。どんなモジュールがあるのかは、npmのリポジトリ一覧や、GitHub上のnode.jsのページにあるモジュール紹介で知ることができます。
さて、今回はブラウザのUserAgent文字列をパースするuser-agent.jsを試しにインストールして使ってみようと思います。以下のようにnpmコマンドからインストールを実行すればインストール完了です。非常に簡単ですね。モジュールが必要なくなったらnpmからアンインストールも実行できます。ちなみにアンインストールするモジュール名にnpmと指定するとnpm自体のアンインストールもすることができます。
// モジュールのインストール
$ sudo npm install user-agent
// モジュールのアンインストール
$ sudo npm uninstall user-agent
// npm自体のアンインストール
$ sudo npm uninstall npm
せっかくなのでインストールしたuser-agent.jsを使ったコードを書いて遊んでみます。以下はブラウザのバージョン名を返すHTTPサーバーのスクリプトです。UserAgent文字列のパースにuser-agent.jsモジュールを利用しています。スクリプトを実行しサーバーを起動してアクセスすると、アクセスしたブラウザ名が表示されるかと思います。
// server.js
var sys = require('sys');
var http = require('http');
var ua = require('user-agent');
// HTTPサーバーを起動
var server = http.createServer(function (req, res) {
// レスポンスとしてブラウザのバージョンを返す
var ua_obj = ua.parse(req.headers['user-agent']);
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end(ua_obj.fullName);
});
server.listen(8080, "127.0.0.1");
// メッセージを出力
console.log('Server running at http://127.0.0.1:8080/');
$ node server.js
Server running at http://127.0.0.1:8080/
そんなわけで今回はnpmを使ったモジュールの管理について勉強してみました。次回は便利なFrameworkモジュールの使い方あたりを勉強してみたいと思います。