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して使ってみたくなった。

(検索でいらした方向け追記:ここの記事より、以下のシリーズ記事がとても参考になると思います。

  1. Web 時代の非リレーショナルデータベース: 第 1 回 Apache CouchDB の概要とインストール
  2. Web 時代の非リレーショナルデータベース: 第 2 回 Apache CouchDB と Ruby on Rails を使って wiki アプリケーションを作成する
  3. Web 時代の非リレーショナルデータベース: 第 3 回 Apache CouchDB で MapReduce フレームワークに基づく問いあわせを行う
  4. Web 時代の非リレーショナルデータベース: 第 4 回 Apache CouchDB の便利な機能を習得する
  5. 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。こうなると、CouchDBRailsの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 StartedThe 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]には断り書きがある。

続きを読む