12月12日(日)に「第1回 MongoDB JP & CouchDB JP 合同勉強会 in Tokyo」が開催されました。本勉強会はユーザーグループ「MongoDB JP 」発足後の初めてのイベントであり、CouchDB JP のメンバーに盛り上げていただく形での合同勉強会になりました。本稿では、この勉強会の模様をレポートします。
当日は12月の忙しい時期にも関わらず40名を超えるたくさんの人に参加していただきました。勉強会は14:00から19:00までと長時間に及ぶものでしたが、お菓子やコーヒーを飲みながらリラックスして行われました。筆者は司会進行と2011年春に開催を予定している「MongoDB Conference in Japan」の告知、そしてセッションの発表を行いました。それではメインセッションを紹介していきます。発表者の皆さん、素晴らしいプレゼン、どうもありがとうございました!
@doryokujin「MongoDBを用いたソーシャルアプリのログ解析 ~解析基盤構築からフロントUIまで、MongoDBを最大限に活用する~」
筆者(@doryokujin )はログ解析におけるMongoDBの活用事例をお話しさせて頂きました(発表資料はこちら ) 。筆者は約3ヶ月間、ソーシャルアプリの各種ログを一元管理・解析するための解析データサーバーとしてMongoDBを活用してきました。なぜログ解析にMongoDBを採用したのかの説明から、具体的な解析の流れやデータサーバーの構築方法、最後に現在のMongoDBに関するトレンドを発表させていただきました。
ログ解析においては、MongoDBの検索クエリの豊富さ、コンソールの扱いやすさ、node.jsやRESTといった機能によるデータの取り出しやすさに非常に強力なサポートになります。解析者に優しいデータベース、それがMongoDBだと筆者は確信しています。また最近データ量が増えてHadoopとの連携がより重要になってきています。MongoDBの開発元である10gen もHadoopとの連携を積極的に進めているようですので、今後の動向に注目しつつ、それらの機能は積極的に検証していきたいと思います。
※中継ミスにより、右からの音が録れていませんでした。
@snamuraさん「Ameba PicoとMongoDB」
サイバーエージェントの@snamuraさん からは、累計登録ユーザー数 3,000,000、MAU 560,00を誇る大人気サービスAmeba Pico (アメーバピグの海外版)のMongoDBでの運用について、その具体的な方法と注意点などについてお話していただきました(発表資料はこちら ) 。
日本でMongoDBを使用しての実サービス運用事例は非常に稀少な例ですし、ましてやShardingやReplicationをいったスケーラビリティを考慮しないといけない大規模サービスについての事例でしたのでとても貴重なセッションになりました。AmazonEC2での具体的なサーバー構成をお話ししていただいた後、遭遇した様々な問題点とその対象方法を具体的に述べていただきました。例えば、Shardingが偏ってしまう問題はfoursquareでも発生していて、それにどう対処するのかなどは非常に参考になりました。さらにサーバー負荷のモニタリング方法やJava Asynchronou Driverの開発など、ハイレベルなMongoDBの活用事例に見習うところはたくさんありました。
※本セッションの序盤、配信サーバーにつながらず中継できなかったため、後半からしか録画が録れていません。
@yssk22さん「Big Couchについて」
CouchDB JPの主要メンバーである@yssk22さん からは CouchDBとCouchDB JPの2010年の活動を振り返えったあと、Big Couchについてお話ししていただきました(発表資料はこちら ) 。CouchDB JPの皆様は非常に精力的な活動を続けられていますので、MongoDB JPの方もこれに負けじと頑張っていきたいです。
CouchDBとは何か、Big Couchとは何かの紹介を面白くわかりやすく紹介していただいたあと、Big Couchの仕組みと動かし方を詳細に発表していただきました。特に実際の動かし方の手順をわかりやすく述べて頂いたあと、様々な実験検証を行い、q: シャード数・n: 複製するシャード数・w: 書き込み保証数・r: 読み込み保証数のトレードオフと、それによる運用の難しさをお話ししていただきました。また、佐々木さんは現在非常に注目度の高いnode.jsに関しても様々な活動もされています。
@basukeさん「PostgresSQLからMongoDBへの移行 -アシストオン通販サイトでの実際-」
ここからはLTセッションになります。@basukeさん からは、構造がしっかりしていないといけないECサイトながら、オーナーの様々な要望に応えないといけないという状況の中でその双方の制約を叶えるのがMongoDB、というステキなイントロダクションの後、原宿の人気セレクトショップのECサイト「アシストオン通販サイト 」を事例を紹介していただきました(発表資料はこちら ) 。
元々のサイト構成(PostgresSQL + PHP)から新しい構成(MongoDB + Lithium)への移行について、またLithiumでどうMongoDBからデータを取得するのか、その時にどういった所に注意する必要があるのか、など非常に具体的で非常に参考になるお話しばかりでした。非常に話し上手でわかりやすい、最後まで魅力的な発表でした。
@motokazuさん「センサーデータストアとしてのCouchDB ~そうだ、Couchに入れよう。~」
@motokazuさん からは、CouchAppを使ってとにかくあらゆるデータをCouchDBに入れて行こうというお話しでした(発表資料はこちら ) 。
なんとそのデータの対象が家の中のセンサーデータという斬新な題材であったので、会場は大いに盛り上がりました。「 Arduino + ethernet shield + センサー」をCouchDBでモニタリングすれば数千円でオール電化が実現しますとのこと(笑) 。SDカードにCouchDBを入れて、ACアダプタサイズのサーバに挿入すれば簡単にホームサーバーのできあがり。構築なんて必要無い、Relax。CouchDBの良さを活かした面白いプレゼンでした。sensmonは商標登録した方がいいですね。
@madapajaさん「MongoDBと位置情報 ~地理空間インデックスの紹介~」
@madapajaさん からはMongoDBの特徴的な機能でありながら実はあまり知られていない(かもしれない)地理空間インデックスについて、具体的かつ丁寧にお話ししていただけました(発表資料はこちら ) 。
2次元の地理空間情報インデックスを作成して検索が行える機能がver.1.3.3以上で導入されました。地理情報インデックスの作成の仕方から$near、$maxDistanceなどのクエリ使った検索の仕方について、具体例とともに紹介していただきました。しかし「地球は丸かった」( 笑)ということで平面上での近傍検索しか行えない先ほどのクエリに対して、$Sphere という球体情報を考慮した画期的なクエリ(ver.1.7)の存在についてお話いただきました。
@mkouheiさん「CouchDB on Androidでスタンドアローンアプリ。」
@mkouheiさん からは最後の締めを飾るにふさわしく、まさに漢の家計簿管理方法「CouchDBとJQueryとCouchAppを用いた家計簿管理アプリ」についてデモともにわかりやすくご紹介いただきました(発表資料はこちら ) 。
ポイントはJavaScriptのみで書かれたスタンドアローンアプリであることで、それだけで簡単に実務に役立つアプリが作れてしまうということです。CouchDBの面白いところですね。最後にCouchDBをjquery-mobileで使用する際の注意点などをお話ししていただきました。CouchDBとモバイル端末との連携はアツいですね、今後の発展に期待しています。
最後に
懇親会(ピザ・ビール)でもたくさんが残って参加していただき、盛大に盛り上がりました。その際、多くの方々にMongoDB・CouchDBを今後使っていきたいと声をかけられたことは非常に嬉しかったです。MongoDB JPもCouchDB JPも2011年はさらに活動を活発化させていく予定ですので今後ともどうぞよろしくお願いします。