DropboxのApiが便利

適切な構造化データをリモートサーバと同期とって色々できるアプリを作りたいなと
思ったのですが、リモート側を作るのが面倒なのでParseとかのBaaSを使おうかと検討しました。
しかし、前に先輩から「BaaSは基本的にコスト要因があるからちょっと怖いよ」という話を聞いたことを思い出したので、可能な限りリモート側のコストを0にすることを第一優先に代替案を探していたところ、DropboxのDataStoreAPI使うとリモート側のコストが「0」になるということに気づきました。

DataStoreAPIで簡単にアプリ内データの同期が取れる

DataStoreAPI

These days, your app needs to store and sync more than just files. With the Datastore API, structured data like contacts, to-do items, and game state can be synced effortlessly. Datastores support multiple platforms, offline access, and automatic conflict resolution.

SDKのサンプルをざっと見た感じ、レコード作成してそこにキー&バリューの構造化データを格納するのが凄く簡単に出来ます。データは勿論、ユーザごとの領域(Dropbox側)で管理してくれます。
これなら上記のDataStoreAPIの説明にある通り、リモート同期がとれるToDoリストアプリとかサーバサイドを気にせず簡単に作れますね!

注意:前提としてユーザはDropboxアカウント持ってないといけませんけどね。

CoreApiで簡単に端末内データをバックアップできる

本題から外れるのですが、DropboxのApiを調べていたらCoreApiで簡単に端末内データをDropbox側にアップロードできるんですね。
OAuth認証をかましたら、後はバイナリデータセットするだけという手軽さ!

mRequest = mApi.putFileOverwriteRequest(
	path,
	fis,
	mFile.length(),
	new ProgressListener() {

		@Override
		public long progressInterval() {
			return 500;
		}

		@Override
		public void onProgress(long bytes, long total) {
			publishProgress(bytes);
		}
});
			
			
if (mRequest != null) {
	mRequest.upload();
}

UploadRequestのアップロード処理自体は非同期ではないので、AsyncTaskなどでラッピングする必要はありますが、それでもハードルはだいぶ低くて良い感じです。

あまりにもお手軽だったので、写真を撮ったら速攻でDropboxへアップロードするだけの「即UP」というアプリを作りました。

即UP ~Dropbox連携~ - Google Play の Android アプリ

注意:使用にはDropboxのアカウントが必要です。
(Dropboxのアカウントが無ければ、1mmも意味の無いアプリです)

結論

今日一日、DropboxのApiで遊ぶだけで終わってしまいました。

ああ・・・

どうすれば、幸せになれるのだろう。