node.jsで実用レベルのアプリを動かしてみよう
node.jsで何か楽しい事ができないかなぁと探していて、チャットとかはありきたりだし、twitterのstreaming apiサンプルはよく見かけるので、何かそれ以外のものはないかと思って見つけました。
aliasaria/scrumblr · GitHub
概要は、こちらに非常によくまとまっています。
要は、ボードの上にポスト・イット風のメモを貼付けて、動かして・・・ということを共有できる、かなり面白いものです。
こういう記事もありますし、Web上で似たことができるんじゃないなぁと思っています。
これ、かなり面白いです。
自分が思うscrumblrのいいところとしては、
の2点ではないでしょうか。単純なチャットだったら、もうあるじゃない、みたいな反応をされがちですので。
というわけで、以下に導入手順などを書いてみます。
node.jsとnpmの導入が必要ですが、今回の本筋ではないので、node.jsに関する基礎や開発・チュートリアルのまとめ:phpspot開発日誌やnode.jsが盛り上がってるっぽいので、現実逃避の手段として利用する - rindai87の日記を参考に導入してみてください。
ちなみに、scrumblrはnode.jsの0.4.1以上に対応しているらしいので、できるだけ新しいものをインストールした方がいいですね。
で、本題のscrumblrの導入です。
ライブラリのインストール
- async
- express
- jade
- redis-client
- redis
- sanitizer
- socket.io
- simplesets
- connect-redis
これだけ必要です。
$sudo npm install async express jade redis-client redis sanitizer socket.io simplesets connect-redis
Redisのインストール
RedisはKVSの一種でこの記事などで詳しい解説が書かれています。
自分は今回初めてredisという存在を知りましたが、技術的にもなかなか面白いもののようです。
現時点では調査中なので、まだなんとも言えませんが、非同期でディスクに書き出しを行うことで、読み込み処理だけではなく、書き込み処理についてもスケールアウトが行いやすい、ということのようです。
スケールアウト自体、まだまだ勉強不足なので、これはまた別の機会にして、今回はscrumblrを動かすためだけ、という目的でRedisを導入します。
Redisの本家はここです。
ここから最新版をダウンロードして、コンパイルします。
$wget http://redis.googlecode.com/files/redis-2.2.2.tar.gz
$tar xvf redis-2.2.2.tar.gz
$cd redis-2.2.2/src
$make
$make install
/usr/local/binに展開されます。
簡単なRedisのテスト
$/usr/local/bin/redis-server
別の端末から
$/usr/local/bin/redis-cli
redis> set test 1
OK
redis> get test
"1"
redis> shutdown
直前までの情報が/usr/local/binに書き出されてサーバが停止するので、次回起動時にtestを取得可能です。
Redisの特徴である非同期書き出しについても、機会を改めて調べてみたいところです。
この記事が、インストールから起動まで詳しく書かれています。
Scrumblrの起動
さて、本題へ戻ります。
ここまできたら後は簡単。
Redisを起動させて、node.jsを起動させる、の2段階で終了です。
$/usr/local/bin/redis-server
$node /path/to/scrumblr/server.js (port番号)
これで、http://localhost:(port番号)にアクセスするとここと同じような画面が表示されるはず。
本当はこの後、デーモン化の部分(おそらくscrumblrはforeverを採用している)なんかの運用のところを検討すべきでしょうが、今回はとりあえず動かしましたというレベルで終わっておきます。
node.jsなかなか楽しいですね。
Scrumblrのソースを読んだり、Scrumblrで使われてるライブラリを調べたりすると理解が深まりそうです。
JavaScript本格入門 〜モダンスタイルによる基礎からAjax・jQueryまで | |
山田 祥寛 技術評論社 2010-11-27 売り上げランキング : 1137 Amazonで詳しく見る by G-Tools |
また、Redisが思った以上に面白そうな予感がしています。
情報がまとまったらまた書くかもしれません。