やっと出た。やっと出た。
以前ブログで紹介してからというもの、ずっと今か今かと待ちわびていたParse Local DatastoreのiOS版がついにリリースされた。
http://blog.parse.com/2014/12/09/parse-local-datastore-for-ios/
半年以上前にこの機能は発表されて、Android版しか出てなかった。iOS版はいつ出るのと思って忘れた頃にやってきた。
詳しくは半年前に書いた下記の記事を読んでもらえれば、なぜ僕がこの機能に期待しているかがわかると思うけど、これなにがいいの?っていう人に、もう一度ざっくり説明してみる。
モバイルアプリの同期に切り込むParse Local Datastoreが楽しみ
iOS、Android,Webなどで自動同期するアプリを作ろうと思ったら、今まで以下のような問題がありました。
理想とするクラウドアプリの同期は
iPhoneがネットに繋がっていない時は、iPhoneの中でデータベースを書き込んだり、読み込んだり、サクサクとできる。
そして、ネットに繋がった時点で、iPhoneで操作したデータベースを自動的にバックグラウンドで更新。
データベースの検索、読み込み、書き込みがオンライン状態だけで出来るのは簡単だけど、この、オフライン時にはiPhone内のデータベースを使って、オンライン時は自動的にサーバ上のデータベースと同期するという仕組みを作るのがすごく面倒だった。
たぶん、Evernoteとかは出来ているのかな。
ちなみに、オフラインになることは最近はあまりないけど、オフラインでもデータベースの検索ができるということは、ネットに繋げなくていいので速いということでもあります。あのグルグルを見なくてよいのです。
だから、ずっとオンライン状態を確保できる環境でもサクサク感で大きな違いが出ます。
Web側のデータベースとiOSのデータベースを繋げる面倒さ
この場合、iOS側のローカルデータベースとWeb側のデータベースをシームレスに繋げる作業が非常に大変。
なので、結構なアプリは、iOS側でシンクロする時はWeb側への読み込み時間がかかったり、データベースの検索する時も読み込み時間がかかる。
iOS側のローカルで動くデータベースであるCoreDataやSQLと、Web側のデータベースを繋げるのがとても面倒だったわけです。
そんな時、iCloud使えばいいんじゃないのってなるかもしれないけど、iCloudはバグが多くて信頼性が低いし、アップル端末上でしか使えないので自前のデータベースとは同期できない。なおかつ、データベースの取り出しもできない。
なので、アップルが用意したAPIはiPhoneとiPad間の同期限定ぐらいに使えるかなってレベルです。それも信頼性が低いのでたくさんの開発者が泣きをみてきました。
さて、Dropboxも同期APIもあるんだけど、あれは単純にデータベースの同期をやってくれるだけで、iOS側のローカルでCoreDataのように強力なデータベース機能を提供してくれるわけではないのです。
つまり、複雑な検索、データの読み込み、などの時にどうしてもWebにアクセスが必要で時間がかかる。
CoreDataとWeb側のデータベース同期させる仕組みを作るのがよいけど、面倒だし、CoreDataはそういうふうに作られてないので大変だとよく聞く。
Parse Local Datastoreのなにがいいか
そこで、Parse Local Datastoreはなにが違うのかというと、このツール自体がCoreDataのようなローカルでゴリゴリ動くデータベースの仕組みを持っており、オフライン時にもちゃんと検索、読み込み、書き込みもサクサク動いて、ネットに繋がって時点で自動的にWeb上のデータと同期してくれるという仕組みらしい。
今までのParseのデータベースだと、ネットに繋がっている時はデータベースの検索とか出来るけど、オフライン時は貧弱なキャッシュ機能があるぐらいだった。
だから、実質的にオンライン状態じゃないとデータベースの操作は現実的ではなかった。
ようは、Parse Local Datastoreがちゃんと説明どおり動いてくれれば、データベースを同期するクラウドアプリがとっても簡単にできちゃいそうってことですね。
僕が今後クラウドアプリを作るとしたら、期待を胸にとりあえず試してみたいと思います。
実際に使えるかどうかはまだ未知数なので、試して見た方、Android版の使い心地とか知っている方、@umekun123まで教えてくれると嬉しいです。
*家計簿と読み上げのアプリ作ってます。自己紹介と過去ログはこちら。