MongoDB&CouchDB勉強会
id:doryokujin さんが、MongoDB JPを立ち上げる、ということをお聞きしたので、「まずは勉強会、話はそれからだ。そして俺らも混ぜてくれ」ってことで一緒にやってきました。ほとんどmongoに興味のある人ばっかりでしたけどね。
まぁ、CouchDB の本当におもしろいところは @mkouhei さんとか @motokazu さんが発表してくれたので、私の方からは、あまりおもしろくないBigCouchの話です。
やっと(皆が普通期待するサーバーサイドの)分散DBとしての機能がBigCouchで徐々に実装されつつあるなぁ、という感じです。分散DBとしての十分な機能をもつらしいんですけどね。
ふり返ってみると、今年の3月にやったOSCは、CouchDB, MongoDB, Redis を扱ってて、実はすばらしい選球眼だったんじゃ、っておもってたりしますw MongoDB と Redis は日本でまだそこまで情報なかったし。
まぁそんなわけで今は node.js が楽しい時期ですが、ちょっと node.js + CouchDB でCMS的なものを作っているので、CouchDB JPのサイトを eating our dog food の観点でやるにはいいかなぁと思ってたりもしています。
最近は仕事でプログラムを書かなくなったので、たぶんこっちの活動が増えると思いますので、ぜひ CouchDB も今後ともよろしくお願いします。
Wikileaks
一般ニュースでも流れているWikileaks. サイトが追いやられるからミラーしようぜ!? 的な話があちこちであって、これを見たときに「とりあえずCouchDBに乗っけとけばレプリケーションで自由自在じゃね?」って思ったわけですよ。
とつぶやいたら、コミッターの人から「あるよ!」っていわれました。
なんという。
政治的にどうなんだ、っていうのは別の議論として*1、CouchDB が CouchDB らしく使われるもっともいいサンプルだなぁって思いましたよ。
データの中身見たら、緯度経度情報とかまでフィールド定義されていたのでマップしてみたらおもしろいかもしれませんね。
という話から、BigCouch の話までをする勉強会が今週末にあって、準備に追われています。BigCouchのソースをざーっと斜め読み中。
あ、メインはMongoDBです。CouchDBは便乗戦略。
BpStudy の資料
redis の練習に作った node.js 版の実装が意外と高負荷でもちゃんと動いてくれてびっくりしました。パフォーマンス云々よりも、なにより、JavaScript + Event IO のコンボの良さの本質を体感できたというか。
マルチプロセスでのメッセージパッシングが透過的にできるようになったらほんと楽だろうなぁ、とワクワクしてます。
本を書いているらしい
他人事ではないんですが(笑
とりあえず、入門的なところはハンズオンの資料で一通り書いちゃったので(自爆、高度な内容にならざるを得なくなりました。
逆にボツっちゃった内容はハンズオンにだだ漏れしていくのもありかなぁと思ったり。
https://groups.google.com/group/nodejs_jp/browse_thread/thread/4d82cd61fe9d2780?hl=ja# のスレッドでも宣言しているので燃料投下もイイと思います。
正直、node.js => みんなWebSocketに期待しすぎだろ/でもWebSocket おもしれーな、っていう感じで、読者層とかよめないんですよ。
Python Hackathon 2010.11 終了
ひとまず、ライブラリ探訪以外の部分はまぁ入門レベルにはなりました。
http://dl.dropbox.com/u/219436/node.js/handson/build/html/index.html
Python Hackathon なので、参加者がいるかどうかはどちらでもよかったんですが、3人で黙々と作業していました。
それはそうと、今 Redis が熱い? ということで、Redisチュートリアル のハンズオンがあったようなのですが、当日は参加できませんでした。
自分的にも、ちょっと触っておきたいなぁ、というのと、
- 本家の の PHP 版よめねぇよ!(PHP嫌い)
- @shibukawaさんの Tornade 版あるけど Tornade 今更覚えるのもなぁ (めんどくさい)
- よし node.js / Express のサンプルプログラムにしてしまえ
ということで「プログラムを公開するまでがハッカソンです」と誰がいったかわかりませんが、やってみました。
https://gist.github.com/676004
尚、redis クライアントの node.js 実装はいくつかあるんですが、ソースをざーっと全部読んでみた感じだと、
https://github.com/mranney/node_redis
が一番いいなぁ(読みやすさとかそういう意味で)、ということでこれにしました。
ちょっと気になっている点
- リクエストの度にコネクションを張るのが良いのか
- クライアントをプールするのが良いのか
- 1個をEventLoopで使い回すのがいいのか
というのがちょっとまだ感覚的にわかっていない感じです。
手元で 2, 3のケースをちゃちゃっとベンチして比較してみた感じだと余り変わらず....
BPStudy #39
あと、BPStudy でも発表の機会をいただけることになりました。3-4ヶ月ぐらい node.js と戯れてみたので その辺のまとめという意味で入門編の話 やアプリのデモをしようかと。
今年はアウトプット全然出してないので、ちょっと頑張らないと。
socket.io がすばらしすぎた件
Python Hackathon の準備完了しました。node.js の入門的なハンズオンコースで、最後に WebSocket を使ったサンプルまでいければ上出来です。 jQuery をサーバーサイドで使うとかはちょっと敷居が高いかも。。ということでハンズオンやっている最中に書くことにします。
それはそうと、最後にやった WebSocket のための node.js モジュールである socket.io が便利すぎでした。broadcast いいね、 broadcast。
ちょっと見た感じ複数のサーバーでブロードキャストするのは難しそうなので、、、いやそれ、 普通にサーバー同士を WebSocket でつなげばいいんじゃね ? JSがブラウザでもサーバーでも動くんでしょ?。とか思ったりもするのですが試してません(WebSocket が未実装な場合 Flash を使うようになっていたので難しいかも。。。