質問: 最近、IOSアプリを制作し始めた初心者のものです。 作りたいアプリは、ユーザーが写真やテキストを記録できる日記アプリのようなものです。そこで、データベースにはRealmが良いと思ったので、使い方を勉強し始めました。 そして現在データベースにオブジェクトを追加、更新、削除などの基本的なことは理解した段階なのですが、今日ネットを見ていてParseなどのmBaaSというものの存在を知りました。 初心者考えですが、このParseなどのデータベースを使えば、Realmを勉強するよりも簡単にデータベースにデータを追加したりできるし、すばやく開発できるのではと思いました。 そこで質問なのですが、データベースなどをサーバーサイドにParseを使用するメリット、デメリット。逆に、Realmを学習するメリットやデメリットを教えてください。 ちなみに日記アプリは勉強のためではなく、しっかりと使ってもらえるように真剣に開発を頑張りたいと思っています。 データベースやサーバーサイドにどのようなものを使うべきか、アドバイスをお願いします。
回答: RealmやCoreDataは基本的にはローカルに(デバイス内)にデータを保存するものです。 いっぽう、ParseはBaaS(Backend as a Service)という名の通り、基本的にはサーバ側にデータを保存するための仕組みです。 (CoreDataはiCloudを使った同期機能があり、同じユーザーの複数のデバイスで同じデータを同期することができます。ただあくまで「同期」機能なので、一般的なサーバ側にデータを保存するのとはちょっと異なりますのでここでは触れません。) まず、日記アプリの要件で、データをローカルに保存するだけでいいのか、サーバサイドにデータを置きたいかのどちらかで変わります。 複数のデバイスで同じデータを扱いたかったり、アプリが消えてもデータが残るようにする場合は、サーバ側に保存する必要があります。 そうであるなら、なんらかのサーバ側で動く仕組みが必要になりますので、Parseなどを使うのは良い選択です。 Parseはデータベースだけでなく、ユーザー登録の仕組みやログインの仕組みを提供しているので、日記データをユーザーごとに保存するなどは、一から作るよりもだいぶ簡単にできます。 そして、Parseは1年ほど前から、Local Datastoreというローカルにもデータを保存することができる仕組みを提供しています。ですので、ローカルにデータを保存してオフラインでも使えるようにしつつ、サーバ側にもデータを保存するということもできるようになりました。 なので、サーバサイドが必要ならとりあえずParseだけで始めてみて、ローカルのパフォーマンスなどに問題があるなら、RealmやCoreDataを併用するというのがいいのではないでしょうか。 サーバサイドが必要なければ、Parseを使うのは大げさなので、RealmかCoreDataが標準的な選択肢になります。 CoreDataはかなり機能が豊富で複雑なので、始めはRealmのほうが簡単に使うことができると思います。 あと、データ件数が多い場合は、たいていはRealmのほうが速く動作するので、パフォーマンスのためにいろいろ工夫しなくて済むのが楽です。