node.jsで実用レベルのアプリを動かしてみよう

node.jsで何か楽しい事ができないかなぁと探していて、チャットとかはありきたりだし、twitterのstreaming apiサンプルはよく見かけるので、何かそれ以外のものはないかと思って見つけました。
aliasaria/scrumblr · GitHub

概要は、こちらに非常によくまとまっています。
要は、ボードの上にポスト・イット風のメモを貼付けて、動かして・・・ということを共有できる、かなり面白いものです。
こういう記事もありますし、Web上で似たことができるんじゃないなぁと思っています。

これ、かなり面白いです。
自分が思うscrumblrのいいところとしては、

  • 導入が割と簡単。自分の場合、CentOSUbuntuで導入してみましたが、どちらも非常に簡単でした。
  • Websocketのリアルタイム通信の威力がよく分かる。

の2点ではないでしょうか。単純なチャットだったら、もうあるじゃない、みたいな反応をされがちですので。

というわけで、以下に導入手順などを書いてみます。
node.jsとnpmの導入が必要ですが、今回の本筋ではないので、node.jsに関する基礎や開発・チュートリアルのまとめ:phpspot開発日誌node.jsが盛り上がってるっぽいので、現実逃避の手段として利用する - rindai87の日記を参考に導入してみてください。
ちなみに、scrumblrはnode.jsの0.4.1以上に対応しているらしいので、できるだけ新しいものをインストールした方がいいですね。

で、本題のscrumblrの導入です。

  • githubからソースコードを落としてくる
  • npmから必要なライブラリのインストール
  • redisの導入

scrumblrのソース取得

ここから落としてきます。

$git clone https://github.com/aliasaria/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まで
JavaScript本格入門 〜モダンスタイルによる基礎からAjax・jQueryまで山田 祥寛

技術評論社 2010-11-27
売り上げランキング : 1137


Amazonで詳しく見る
by G-Tools

また、Redisが思った以上に面白そうな予感がしています。
情報がまとまったらまた書くかもしれません。