SummerWind

Web, Photography, Space Development

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モジュールの使い方あたりを勉強してみたいと思います。

Moto Ishizawa

Moto Ishizawa
ソフトウェアエンジニア。ロケットの打上げを見学するために、たびたびフロリダや種子島にでかけるなど、宇宙開発分野のファンでもある。