昨日は東静岡駅前で展示中の1/1ガンダムを見てきました。お昼前に友人の車で東京を出発、途中渋滞に巻き込まれつつも16時過ぎには到着して、ゆるゆると見学。いやー、1年ぶりでしたがやっぱりかっこいいですね。お台場に立っていた時よりも微妙にマーキングが異なっていて、時間になると動くアレもお台場のやつより少しだけパワーアップしてました。
さて、今回のガンダムの展示、静岡ホビーフェアというイベントの一部だったので、むしろこっちがメイン?なホビーミュージアムもついでに見学してみたんですが、これが大当たり。歴代のプラモデルやらおもちゃなんかの展示が多かったんですが、古い宇宙関連のプラモデルやら、懐かしのミニ四駆に加え、すごいリアルな1/1コアファイターなんかの展示もあって大満足な内容。これは見るべし。
会場は18時までだったので、最後の回の動くガンダムを見てから撤退。その後は、車にもどってTwitterで温泉情報を教えていただいた (@fairooさん、ありがとう!) 清水港の先にある駿河健康ランドへ移動。露天風呂やら樽風呂やらにつかる。温泉さいこー。お風呂上りにはかき氷を食べてから、帰路へ。途中の清水港あたりで、キラキラ光る船みたいな構造物がよく見えたんですが、どうやらちきゅうだったらしい。間近で見たかったなー。
帰りはちょこちょこ工事渋滞がありつつも、快適な巡航速度で東名を走って帰還。いやー楽しかった。時間があったら展示中にもう1回ぐらい見に行けたらなーと思います。
5月の終わり、野口宇宙飛行士が半年近くの国際宇宙ステーションでの長期滞在を終えようとしていた頃のことでした。僕はTwitterで野口宇宙飛行士が宇宙で撮影した写真を仕事帰りに見るのを毎日楽しみにしていたので、あぁ、この美しい写真の数々ももう見れなくなるんだなと寂しく感じていました。
これだけの美しい写真の数々をこのままにしてしまうのはもったいない、とその時思ったので、打上げから帰還までに野口さんが撮影した写真をまとめて見れるようにして、野口さんに感謝のメッセージを伝えよう、と考えました。そこで週末にさっそくTwitpic用のクローラーを作って写真を収集し、それまでの写真をまとめて見れるようにしてから公開したのが、@Astro_Soichi Thank you for your all tweets from space! というページです。
Twitterの僕のつぶやきで公開した当初は、いわゆるTwitter宇宙クラスタのみなさんから反響をいただいて嬉しかったものです。その後は徐々にTwitterを中心に広まっていって、一部の人には宇宙の写真にも興味を持ってもらえたかな?という手応えもあったりして、イチ宇宙開発ファンとしても嬉しかったのを覚えています。
その後しばらくは大きな反響もなかったのですが、今日になって5thstarさん経由で、野口宇宙飛行士自らページを紹介してくれていることを知り、びっくりしました。しかも、野口さん自身も気に入ってくれて、Twitterのプロフィールにも設定してくれているとのことで、2度びっくり!
3ヶ月という時間はかかってしまいましたが、とにかく僕にとっては野口さんに直接的に、少しでも感謝の気持ちが伝わったかなと感じられたのが嬉しくてたまらないです。そして野口さん自身がページを紹介してくれたことで、美しい写真の数々もまた多くの人に見てもらえたであろうことも嬉しく思います。
まったくの余談ですが、野口さんのつぶやきを見た瞬間、何よりも先に「サーバーがやばい!」と思ってしまいました。いわゆる職業病ってやつですね。我ながらなんだかなぁと感じてしまいました (^^;
今週末は今ままで使っていたサーバーのディスクがついにご臨終したので、慌ててデータをサルベージしてサーバーを移転したり、色々セットアップしたりと大変でした。サーバーがようやく安定稼働して、色々楽になったので結果的にはよかったです。さて、今日は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モジュールの使い方あたりを勉強してみたいと思います。
Copyright © Moto Ishizawa.