(1/3)いつでもどこでもCouchDBを。2010年8月にAndroid版CouchDBが登場しました。Everywhere!この夏、CouchDBには大きな動きがありました。どんなことがあったのかを見てみましょう。1.0が正式リリースされたことです。データ消失する可能性のあるバグがリリース直後に見つかり、その修正版の1.0.1が2010年8月16日(現地時間)に緊急リリースされたという問題もありましたが、CouchDBを使っている読者の皆さんは、そんなこと気にもかけず、リラックスして対応されていることでしょう。バグ修正対応された1.0.1がリリースされたので、いよいよCouchDB本番、といったところでしょうか。CouchDBホスティング環境が登場2つめは、無料ですぐ使えるCouchDBのホスティング環境が増えてきたことです。次の2つサービスがあります。Couchiohttp://www.couch.io/Cloudanthttps://cloudant.com/いずれもプライベートベータ版としてサービス提供されていましたが、アクセス権をもらえたのは一部の人のみでした。サーバを用意するには、自前でサーバを用意するしか実質方法がありませんでした。1.0が採用されています【注1】。【注1】Couchioでは1.0.1にすでにアップデートされています。Marketでリリースされたことです【注2】。これもすでに一部でニュースになっていますが、私はこれを待っていたんです!これは、単にAndroidでもCouchDBを使えてうれしいというだけの話ではありません。この部分について、もう少し掘り下げてみましょう。【注2】実際にはその前の週から公開されていました。Androidの意義を考えてみましょう。Androidのデバイスを持っていれば、ローカルストレージとしてどこでもCouchDBが使えるようになるわけですが、それだけではあまり意味がありません。そこで、重要になってくるのが、CouchDBの次の3つの特徴です。データベースであるアプリケーションサーバでもあるCouchDB同士で、レプリケーションができるこれらの特徴は何を意味するのでしょうか。それは“いつでも”、“どこでも”、“簡単に”データの参照だけでなく、更新も可能なアプリケーションを開発し、使えるようになるのです。これはつまり、こういうことです。オンライン、オフラインを気にせずにPC向けに作った、サーバ上で稼働するCouchDBのアプリケーションがあります。これをCouchDBのレプリケーションの機能で、データベースも一緒にスマートフォンなどのモバイル端末に複製することができます。モバイル端末ではローカルストレージとしてCouchDBのデータベースを扱うことができるので、オンラインはもちろん、キャリアの電波が届かない場所であっても、データの参照、更新を行うことができます。サーバへのデータの反映は、再びオンラインになったときにレプリケーションを行えばよいのです。(図1)もちろん、モバイル端末だけで完結するアプリケーションにも利用できます。今回はAndroid向けにリリースされましたが、現在、iOS向けにもCouchDBの移植が行われています。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で通信することのない、モバイルデバイス同士でもレプリケーションが可能なのです。考える人もいると思います。StorageJavaScriptオブジェクトで簡単に永続化できるが複雑な処理はできない。Storageフル機能のデータベースだが、スキーマが静的、SQLで処理する(これは利点でもあり、欠点でもある)。API上記2つのいいとこ取りだが、まだ仕様が流動的で、ブラウザでの実装はまだ先。APIに相当する位置付けに当たるかと思います。いう意味では、正式版がリリースされ、実際に使うことができる、という点でもメリットがありますが、CouchDBの場合は、ローカルストレージとしてCouchDBを動かすのであれば、オフライン化やデータの同期のための仕組みを自分で実装しないで済むという点もメリットといえるでしょう。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。