OurDoings.comは時間軸のフォトアルバム。地図と組み合わせたらどうなるか(追記あり)
FriendFeedでOurDoings.comのフィードを表示すると、画像にGPS情報がついていると、その場所のGoogleMapも表示される。(2009/8/10追記:Ourdoings.com自体でも地図は表示できたのを忘れていた。すみません。OurDoings > kgbu's doin' > Edit > Site Info > Site Integrationのメニューで、GoogleMapsをチェックすれば、画像にGPS情報が埋め込まれていれば自動的に地図が表示される)
たとえば、どこかに旅行したとする。
何箇所か、観光スポットを回ったら、複数の地点のGPS情報がまとめて1日に記録されるわけだ。
それら全てのGPS情報を1枚の地図上に表示したい。
実はこれはNaHiによるf2pという携帯用FriendFeedクライアントでは一部実用化されている機能だ。
だから不可能じゃないことは分かっているし、携帯の貧弱なブラウザではなくて、PC上でJavascriptが自由に使える環境ならば、GoogleMap APIの経路探索機能を使って、それぞれの時刻の写真を繋ぐルートだって表示できるかもしれない。
どうやったら説得できるかなぁ。たとえsouceがあっても、KAWA Schemeじゃおいそれとパッチ投げられないよなぁ。
CouchDBをちょっとだけいじってみた(修正あり)
このプレゼン資料にw感動wして使ってみたくなった。
(検索でいらした方向け追記:ここの記事より、以下のシリーズ記事がとても参考になると思います。
- Web 時代の非リレーショナルデータベース: 第 1 回 Apache CouchDB の概要とインストール
- Web 時代の非リレーショナルデータベース: 第 2 回 Apache CouchDB と Ruby on Rails を使って wiki アプリケーションを作成する
- Web 時代の非リレーショナルデータベース: 第 3 回 Apache CouchDB で MapReduce フレームワークに基づく問いあわせを行う
- Web 時代の非リレーショナルデータベース: 第 4 回 Apache CouchDB の便利な機能を習得する
- Web 時代の非リレーショナルデータベース: 第 5 回 Apache CouchDB の最新機能を知り、適用の勘所を掴む
追記終わり)
(2009/10/29追記:リクエストのAPIをまとめたものをWikiで見つけました。
HTTP_view_API - Couchdb Wiki 追記終わり)
(2009/11/09追記:google groupのcouchdb-jpで、Web上で公開されているCouchDB本のdraftの翻訳プロジェクトが進んでいるようです。以下を見ると結構できてますねー。素晴らしい。
追記終わり)
もともとApacheのIncubator(Google Labみたいなもんか)プロジェクト。
Ruby on Railsを初体験したときは、WebサービスのアーキテクチャとRDBMS(要するにMySQLだけど)のインピーダンスマッチングをとることと、サービスの宣言的設計を可能にするDSL+Ajaxライブラリが強烈に印象に残ったけれど、CouchDBはそのうちのRDBMSとのマッチングの部分をDBの側で吸収した形になっていると思う*1。こうなると、CouchDBとRailsのDSLの部分を組み合わせるというやり方もあるはず。Rackを使ってなんとかなるんだろうか、というのが次の興味。(DSLの話としては、最近読んでいるThoghtWorksアンソロジーの第2章がおもしろかった)
- 行と列のテーブルを格納するRelational DBとは異なって、JSONのドキュメントをそのまま格納する。
- queryはmap(演算・選択)-Reduce(整列)の手続きをあたえてviewを定義することで行う
- replicationの機能がbuilt-inされていて、各ドキュメント単位(UUID付き)でrevision controlされている
- アクセスはRESTfulに実行する。HTTPで直接叩けるAPIなので、事実上言語bindingは不要。コマンドラインからcurlを使ったり、ブラウザからアクセスすることもできる。mochiWebが統合されていて、GUIのインターフェースもある。
- 並列分散処理可能である
- 並列分散処理されるDBの一貫性や完全性やスケーラビリティのトレードオフはどうなっているかを一言で言えばEventual Consistencyであるらしい(あとで読む)
ガイドブックとしては、今後O'Reillyから発売予定のCouchDB: The Definitive Guideがいいだろう。このサポートサイトには入門的な部分のテキストが掲載されているので、ちょっと使ってみるにはこれで十分。
インストール
参照:Installation - Couchdb Wiki
例えばRedhat系ならば以下のような感じ。
# yum install ncurses-devel openssl-devel icu libicu-devel js js-devel curl-devel erlang # svn checkout http://svn.apache.org/repos/asf/couchdb/trunk couchdb # cd couchdb # ./bootstrap # ./configure --with-erlang=/usr/(local/)lib(64)/erlang/usr/include && make && make install
インストールできたら、/usr/local/bin/couchdb を実行すればサーバが立ち上がる。デフォルトのポートはtcpで5984。iptablesなどでアクセスできるIPなどを制限しておくことをお薦めする。
設定を変えたければ /usr/local/etc/couchdb/local.iniを編集うする。
コマンドラインからAPIへアクセスしてみる
ここからはGetting StartedやThe Core APIからの「写経」なので、英語が多少なりとも読めるなら、原文に当たるが吉。わかりにくかったら、その旨要望を出せば、著者たちから感謝されるかもしれない(笑
*1:2009/8/5追記:正確にはオブジェクト指向DBではない。An object-oriented database. Or more specifically, meant to function as a seamless persistence layer for an OO programming language"ではない、と[http://couchdb.apache.org/docs/intro.html:title=Introduction]には断り書きがある。