Google+ もご覧ください
ユーザーアイコン

ピックアップ

Simperium - アプリ/Web双方に対応したデータ同期サービス

Simperium - アプリ/Web双方に対応したデータ同期サービス

スマートフォン開発周りではバックエンド系サービスが幾つか登場してきています。データベース、ゲーム周り、ソーシャル系など様々にジャンルが分かれていますが今回はSimperiumというシンプルなJSONデータベースを提供するサービスを紹介します。

特徴

Simperiumの特徴はリアルタイム同期ができること、対象がアプリだけでなくJavaScriptやPython、RubyそしてHTTP通信での操作ができる点にあります。データフォーマットはJSONになっていて、様々なケースで使えそうです。

使い方

iOS/OSX向けにはライブラリが提供されていますので、それが使えます。また、JavaScript/Python/Ruby向けにもライブラリがありますのでWebアプリケーションやサーバサイドへの仕込みも可能です。

iOS向けにサンプルのTodoアプリが提供されていますので、それを試してみることにします。

デモアプリ実行

まずSimperiumのWebサイトでユーザ登録を行います。その後アプリを作成します。アプリ名は適当で良いですが、その結果としてアプリIDとAPIキーが得られます。

ダッシュボード
ダッシュボード

アプリの情報
アプリの情報

次にSimperiumのiOS SDKをGitHubリポジトリからcloneします。

$ git clone git@github.com:Simperium/simperium-ios.git

その中のsamples/Simpletodo/SimpletodoFinal.xcodeprojを開いてSimpletodoFinal/SPAppDelegate.mにあるアプリID/APIキー部分を修正します。

    [self.simperium startWithAppID:@"SIMPERIUM_APP_ID"
                            APIKey:@"SIMPERIUM_API_KEY"  
                             model:[self managedObjectModel]
                       mainContext:[self managedObjectContext]
                       coordinator:[self persistentStoreCoordinator]];

なおSDKの仕様に変更がありmainContextではなくcontextになっていますのでご注意ください。

    [self.simperium startWithAppID:@"アプリID"
                            APIKey:@"APIキー"  
                             model:[self managedObjectModel]
                           context:[self managedObjectContext]
                       coordinator:[self persistentStoreCoordinator]];

このように修正すれば準備は完了で、アプリをビルドしてみましょう1

アプリのログイン画面。サインアップ必須です。
アプリのログイン画面。サインアップ必須です。

アプリ自体はシンプルでプラスボタンを押してタスクを追加し、Editボタンで削除ができるようになっています。なおユーザ登録は必須になっています。試しに幾つかタスクを登録してみます。

タスク一覧
タスク一覧

タスク登録した後、Simperiumの管理画面を見てみると登録したユーザのデータが存在します。ドリルダウンしていくと実際に登録したデータが確認できます。アプリで登録したデータが自動的にSimperiumへ飛んだ訳です。

データを確認
データを確認

Webから実行

次にWebからの操作です。HTMLを書いても良いですが、一番簡単なのはGoogle ChromeなどのJavaScriptデバッガーでSimperium.jsの内容を読み込む方法かと思います。それだけで準備は完了です。

もう一つ準備があります。それはSimperiumの管理画面でユーザのトークンを取得することです。生成ボタンを押すだけで文字列が生成されますので、それを使ってSimperiumオブジェクトを生成します。その後、あらかじめ作成してあるバケットを取得します。バケットはデータの作成の他、他のライブラリからの変更を購読できるようになっています。

トークンの取得
トークンの取得

var simperium = new Simperium('アプリID', { token : '管理画面で取得したトークン'});
var bucket = simperium.bucket('todo');
bucket.on('notify', function(id, data) {
    console.log("object "+id+" was updated!");
    console.log("new data is:");
    console.log(data);
});
bucket.start();

最後にbucket.start();を実行すれば購読が開始されて、外部からデータ更新があった時にコンソールにログが出力されるようになります。

データの追加/更新はbucket.update('オブジェクトID', データ)で行います。オブジェクトIDは一意で設定しなければなりません。データはJSON形式であれば自由で、そのままSimperiumに取り込まれます。

Chrome Dev Console。iOSアプリから追加するとログが流れます。
Chrome Dev Console。iOSアプリから追加するとログが流れます。

JavaScriptのコンソールからbucket.updateを実行すると、ちょっと遅れた後でiOSアプリ側のリストに項目が追加されます。逆にiOSアプリ側でデータを消したり追加すれば、コンソールにログが表示されます。Simperiumを仲介して相互にデータを同期しているのが分かるはずです。

Chromeからデータを追加するとiOSアプリにも反映されます。
Chromeからデータを追加するとiOSアプリにも反映されます。

用途

SimperiumではノートサービスSimplenote(そのままですね)を提供しており、iPhone/iPad/Web/Mac OSXでデータが同期できるようになっています。その他タスクやカレンダーなどの同期に使えるかも知れません。

Simperiumでは複数のデバイスを渡り歩けるマップのデモや、Webブラウザベースのコラボレーションエディタを紹介しています。そういったデータの送受信にも便利そうです。

Simperiumではデータはユーザに紐づいて管理されますので、複数人のコラボレーションというよりも一人でマルチデバイスのデータを同期させるといった点に重点を置くと面白いソフトウェアができそうです。

料金

Simperiumでは無料アカウントで2,500ユーザまでのデータを管理できます。2,501ユーザ以上になると99ドル/月、5,001ユーザ以上で199ドル/月となっています。有料アカウントは最低99ドル/2,500ユーザなので、一人あたり4円/月のコストが得られるようなサービス設計で考える必要があるでしょう。

料金表
料金表

まとめ

サーバとのデータ同期およびその通知を一手に引き受けてくれるSimperiumは今風なコラボレーション機能を提供してくれるでしょう。こういった機能を位置から実装しようと思うとWebSocketやロングポーリングなどの仕組みを構築しなければならず時間もかかります。Simperiumを使うことでアプリに新しい可能性を吹き込めるのではないでしょうか。

Simperium


  1. アプリID/APIキーは必要なものに読み替えてください。 

Catch

記事をリクエストする

関連記事

コメント