DropboxのDatastore APIをさっそく使ってみた

Dropboxが公開したDatastore API。簡単に説明すると、Dropbox内にファイルではなく、構造化したデータを保存できるというもの。
先日使ったParseのようなものと考えて差し支えないが、今のところ認証した自分のデータしか扱えないようだ。全員が見れるようなデータを保持する事ができないのが、これもそのうち使えるようになるだろう。

詳細は以下のリンクを参照ください。

SDKのダウンロード

以下からダウンロードしてください。SDKって書いてますが、ToDoリストのサンプルになっています。
JavaScript Datastore API - Dropbox
Webサーバの適当なところに設置しておきます。
Dropboxでの認証後、リダイレクトしてくるので、localhostでも良いので。

アプリケーションの登録

App Consoleからアプリケーションを登録します。
これを行わないとキーが貰えないです。

右上の「Create App」をクリックし、Datastore APIの書いてある「Dropbox API app」を選択します。

続いて扱うデータの種類として「Datastres only」、アプリ名として重複しない名前を入れます。

作成されると、他の詳細画面が表示されます。

「App key」は後で使います。
今は「OAuth redirect URIs」を入力します。先ほど設置したlocalhostのURLを入力します。私の場合は、DocumentRoot配下に置いただけなので、
http://localhost/dropbox-js-datastore-sdk-0.1.0-b2/examples/tasklist/
です。

ファイルの修正

ダウンロードしたファイルの /dropbox-js-datastore-sdk-0.1.0-b2/examples/tasklist/tutorial.js を書き換えます。

// Insert your Dropbox app key here:
var DROPBOX_APP_KEY = 'ここにさっきのApp keyを入れる';

認証

ブラウザで先ほどのURLを開くと、以下の様な画面になります。

DropboxのID/PWでログインし、許可を与えると、リダイレクトされて戻ってきます。

完了チェックの入れられる普通のToDoリストです。

データの確認

入力したデータは、App Consoleから確認できます。アプリケーションの詳細画面の「Browse datastores」をクリックすると、以下の様な画面になります。

日本語も化けずに入ってますね。

コードの確認

CRUDとして動いている状態ですので、要所を確認してみます。

var taskTable;

// データストアからテーブルを取得
taskTable = datastore.getTable('tasks');

// クエリを投げてレコードを取得
var records = taskTable.query();

// レコードのキーの値を取得
record.get('completed')

// レコードの追加
taskTable.insert({
  taskname: text,
  created: new Date(),
  completed: false
});

// キーの値を更新
taskTable.get(id).set('completed', completed);

// レコードの削除
taskTable.get(id).deleteRecord();

非常にシンプルですね。

オフラインでの変更に対するコンフリクトへの考慮もあるので、オフライン時にはLocalStorageを使って、オンラインになったら同期といった使い方もできそうです。KVS的な作りになっているので、相性も良さそうです。


Dropbox内でファイルを公開・共有して、DatastoreやChooser - Developers - Dropboxを使えば、サーバ不要ですね。(最初に書きましたが、共有データをどうするか、って問題はありますが)