いつでもどこでもCouchDBを。2010年8月にAndroid版CouchDBが登場しました。そこで今回は予定を変更し、Android版のインストールと活用方法を2回に分けて解説します(編集部)
この夏、CouchDBには大きな動きがありました。まずはどんなことがあったのかを見てみましょう。
1つ目は皆さんもご存じのとおり、2010年7月14日(現地時間)にCouchDB 1.0が正式リリースされたことです。データ消失する可能性のあるバグがリリース直後に見つかり、その修正版の1.0.1が2010年8月16日(現地時間)に緊急リリースされたという問題もありましたが、CouchDBを使っている読者の皆さんは、そんなこと気にもかけず、リラックスして対応されていることでしょう。
とにかく、バグ修正対応された1.0.1がリリースされたので、いよいよCouchDB本番、といったところでしょうか。
2つめは、無料ですぐ使えるCouchDBのホスティング環境が増えてきたことです。次の2つサービスがあります。
いずれもプライベートベータ版としてサービス提供されていましたが、アクセス権をもらえたのは一部の人のみでした。公開のCouchDB サーバを用意するには、自前でサーバを用意するしか実質方法がありませんでした。ちなみに、これらのサービスは、すでにCouchDB 1.0が採用されています【注1】。
3つめは、2010年8月10日にAndroid用のCouchDB(CouchDB on Android)が、開発者向けのアルファバージョンとして正式にAndroid Marketでリリースされたことです【注2】。これもすでに一部でニュースになっていますが、私はこれを待っていたんです!
これは、単にAndroidでもCouchDBを使えてうれしいというだけの話ではありません。この部分について、もう少し掘り下げてみましょう。
CouchDB on Androidの意義を考えてみましょう。Androidのデバイスを持っていれば、ローカルストレージとしてどこでもCouchDBが使えるようになるわけですが、それだけではあまり意味がありません。そこで、重要になってくるのが、CouchDBの次の3つの特徴です。
これらの特徴は何を意味するのでしょうか。それは“いつでも”、“どこでも”、“簡単に”データの参照だけでなく、更新も可能なアプリケーションを開発し、使えるようになるのです。これはつまり、こういうことです。
PC向けに作った、サーバ上で稼働するCouchDBのアプリケーションがあります。これをCouchDBのレプリケーションの機能で、データベースも一緒にスマートフォンなどのモバイル端末に複製することができます。モバイル端末ではローカルストレージとしてCouchDBのデータベースを扱うことができるので、オンラインはもちろん、キャリアの電波が届かない場所であっても、データの参照、更新を行うことができます。サーバへのデータの反映は、再びオンラインになったときにレプリケーションを行えばよいのです。(図1)
もちろん、モバイル端末だけで完結するアプリケーションにも利用できます。
今回はAndroid向けにリリースされましたが、現在、iOS向けにもCouchDBの移植が行われています。さらにPalm webOS向けにも対応するといわれています。つまり将来的には、サーバ、クライアントPCやAndroid、iPhone/iPadなどのモバイル端末など、プラットフォームを選ばずに、一度作ったアプリケーションを、アプリだけでなくデータベースまでも簡単に展開することができるようになるわけです。
いままでお話した機能は、現状でももちろん存在します。例えば、Evernoteのように、オフラインではローカルキャッシュでデータを持ち、オンラインになったらクラウド側に反映するアプリケーションです。しかし、従来のアプリケーション開発手法でモバイル端末への対応を配慮すると、非常に大きな労力を要します。サーバ側は何らかのデータベースと開発言語でアプリケーションを作り、PC向けのWeb画面は、HTML&CSS&JavaScriptで開発、Android向けにはJava、iPhone向けにはObjective-C――と、すべてのプラットフォームに対応するのは非常に大変なのが現状ではないでしょうか。
CouchDB上で動くアプリケーションを開発すれば、共通のプラットフォームとして活用できるので、アクセスするためのviewをサーバサイドJavaScriptで、クライアントアプリケーションをHTML&CSS&JavaScriptで作り、あとはレプリケーションで各端末に配布するだけでいいのです。実に魅力的ではないでしょうか。
CouchDBは数あるNoSQLなミドルウェアの1つとして、そのほかのNoSQLと比較されることの多いようですが、CouchDBの神髄は、そこでの比較ではなく、データとアプリケーションを“一緒にレプリケーションできること”にあると考えています。しかも、レプリケーションの相手は、いわゆるクライアント/サーバ間だけとは限りません。CouchDBのレプリケーションは、RDBのレプリケーションとは違い、一方がマスターで、もう一方がスレーブといった構成ではなく、双方向のレプリケーションができます。つまり、通常なら直接PtoPで通信することのない、モバイルデバイス同士でもレプリケーションが可能なのです。
いろいろと夢が広がってきませんか?
HTML5にもオフラインWeb アプリケーションのデータ更新を実現する仕組みとして、Web Storage、Web SQL Storage、Indexed Database APIがあるのでは? と考える人もいると思います。これらは、
という状況で、CouchDBはデータの永続化の観点ではIndexed Database APIに相当する位置付けに当たるかと思います。そういう意味では、正式版がリリースされ、実際に使うことができる、という点でもメリットがありますが、CouchDBの場合は、ローカルストレージとしてCouchDBを動かすのであれば、オフライン化やデータの同期のための仕組みを自分で実装しないで済むという点もメリットといえるでしょう。(参考:HTML5&API 入門/白石俊平 著)
Copyright © ITmedia, Inc. All Rights Reserved.