2014年1月21日、カウチベースは「Couchbase [Tokyo] 2014」を開催しました。Couchbaseはドキュメント指向のNoSQLデータベースです。今回はカウチベースが掲げるモバイルソリューション「JSON Anywhere」に注目してみましょう。イベントで講演を行ったJessica Liu氏(写真)にお話を聞きました。なお彼女は2013年夏にカウチベースに入社したばかりのフレッシュなメンバーです。
いまやアプリケーションのクライアントはパソコンだけではないため、スマートフォンや多様なデバイスを想定することは必須となりつつあります。ブラウザーベースのアプリケーションのように毎回データをデバイスに読み込むならさておき、ある程度まとまったデータをデバイスにも格納しておきたいのであれば、そのデータ形式をどうするかは大切な問題です。デバイス側のデータ形式の理想としてはサーバーにあるデータベースと一致していた方がいいですよね。データ変換をする必要がなくなりますから。
「Couchbase」ではサーバーでもデバイスでも、どこでもJSONを使えるようにしようと考えています。だから「JSON Anywhere」。言い換えれば「どこでもJSON」。データがJSONであるならJavaScriptを使うような場合など開発側にメリットをもたらしそうです。この「JSON Anywhere」を実現するのはデバイス側の簡易データベースとなる「Couchbase Lite」とサーバーとデバイスの間で同期を取り持つ「Couchbase Sync Gateway」です。
「Couchbase Lite」は軽量なJSONベースのデータベースで、iOSとAndroidに対応しています。言い換えると、デバイスでNoSQLをネイティブに稼働できるということです。現時点ではドキュメント作成、インデックス、クエリ、同期が可能です。現在はまだベータ版ですが、数カ月先に正式版のリリースを予定しているそうです。
ベータ版でありつつも、本番環境で既に導入実績もあるのだとか。オンラインカタログをサーバーとデバイスで同期するアプリケーションが多いそうです。
もう1つは「Couchbase Sync Gateway」です。データ同期を行うための専用サーバーと考えていいでしょう。ではどのようにデータを同期するのか。デバイスにデータを同期するときは、丸ごとコピーするようなサーバー間の複製とは異なります。ユーザーやデバイスに応じて必要な文書のみ同期しなくてはなりません。
同期するかしないか、その選択の決め手となるのが「チャネル」です。チャネルは文書ID的なものではなく、誰に向けて文書を開放しているのかを識別するための印と考えてよさそうです。Couchbaseでは文書ごとにチャネルが設定されており、これでユーザーの認証やデータの同期を判別するようになっています。
例えば「文書1はユーザーX、文書2はユーザーXとユーザーYに向けて同期を許可するようにしたい」とします。その場合、文書1にはチャネルA、文書2にはチャネルAとチャネルBが設定されるという具合です。
データの同期はデバイス側の通信環境など都合が良いときに自動的に同期できるようになっています。ユーザーがわざわざ「データをサーバーと同期する」ボタンを押すような、何らかの操作を必要とせず同期できるということです。自動的にアプリの更新を行うiOS 7の機能みたいなものでしょうか。サーバーとデバイス間の同期機能は「Easy Sync」と呼ばれています。
実際にモバイル向けアプリケーションで「Couchbase Lite」を使うときはアプリケーションに「Couchbase Lite」を組み込む形になります。開発の大まかな流れとしては、まずは「Couchbase Mobile」にある「Couchbase Lite」を開発環境にダウンロードします。コードはスクラッチから作成してもよいですが、GitHubで公開されているCouchbase向けのサンプルコード「Couchbaselabs」を利用するといいでしょう。後はアプリケーションのフレームワークにCouchbase Liteを組み込みます。
昨今では「IoT(Internet of Things)」というキーワードとともに、多種多様なモバイル端末をネットを介して連携するアプリケーションやサービスに期待が高まっています。そんな時代にカウチベースが提供するモバイルソリューションはうまくはまりそうです。Liu氏は「Couchbase LiteやEasy Syncに相当する機能をゼロから開発しようとすると数年はかかってしまい、その間にビジネスチャンスを逃してしまいます。カウチベースが提供するモバイルソリューションならすぐにアプリを開発してリリースできるのがアドバンテージになると思います」と話していました。
Copyright © ITmedia, Inc. All Rights Reserved.