質問: IOSの日記アプリを作りたいと考えている初心者のものです。アプリとしては、勉強のためにつくるという感じではなく、しっかりと皆さんに使ってもらえるような完成度を目指しています。 現在、サーバーサイドとして、PHP+MYSQLにするべきか、Parseなどのサービスを使用するかで迷っています。 PHPやMYSQLなどは簡単にしか触れたことがないうえに、自分一人で開発しているので、サーバーサイドもやろうとすると時間がかかってしまいます。その点、Parseを使えば早いとは思うのですが、長く運営するとなると拡張性がどうなのか?また、画像も扱いたいので、登録や削除のスピードが、普通にサーバーサイドも作った場合に比べて、遅くなってしまうのではないかなど、不明な点があります。 もし、最初はParseで作った場合、仮にたくさんの人に使ってもらえるようになったり、SNS的な機能を実装したくなったときに、自分でサーバーサイドも開発する必要がでてくるのならば、今のうちにサーバー関係を勉強したほうが良いのかなとも思っています。 この二つの選択肢を考えるうえで、それぞれのメリットやデメリットなどアドバイスをいただけないでしょうか。よろしくお願いします。 補足 基本的には、日記データの更新、削除はローカルデータベースにも保存して、サーバーサイドのほうは機種変更などに備えてバックアップ的なイメージでいます。 ただ、ユーザーだけが個人的に記録する日記の機能とは別で、アプリ内で短いコメントや写真を投稿できて、他のユーザーさんとコミュニケーションをとれるような機能も実装したいと思っています。その部分はサーバーサイドのデータベースでのスムーズなやり取りが必要になるかと考えています。
回答: 以下、自前のPHP+MySQLを**オンプレ**(オンプレミス)、Parseを**BaaS** (Backend as a Service) と表記します。 オンプレとBaaS、それぞれのメリットとデメリットを極めて簡単にいうと以下のようになります。 * オンプレ + メリット - 自分の好きに機能を作れる。どのような機能であれ、実装する能力さえあれば作れる。 + デメリット - 手間がかかる。設計・開発だけでなく、サーバを使ったサービスにとっては運用こそが重要かつ膨大なノウハウが必要。 * BaaS + メリット - お手軽に始められる。サーバ側の基本となるモデルやAPI設計、通信ライブラリの開発、運用などからはほぼ解放され、クライアント側のUXの開発・更新に集中できる。 + デメリット - 機能が束縛される。自分が実現したい機能を、BaaSが提供している機能を組み合わせて、作らなければならない。 コスト面では、ゼロから始めてサービスを立ち上げるまでのコストに限定して言えば、BaaSのほうが圧倒的に低いといえるでしょう。ただ、すでにさまざまなインフラを持っている場合や、もしもサービスが大成功した場合には、オンプレのほうが(運用を含めた)コストが低くなる可能性が高いです。 質問のケースではサーバ側の経験が少ないということですので、BaaSの利用をオススメします。とにもかくにも動くサービスを素早く提供して、**人に使ってもらってこそ**、その価値の有無が見定められるのですから。 以下は、質問中に上げられた個別の不安に対して回答をしておきます。 > > 長く運営するとなると拡張性がどうなのか? > > > BaaS を提供する各社、ある程度の拡張性は提供しています。またAPIが公開されていますから、複数のサービスを(オンプレも含めて)組み合わせるようなこともできます。 > > 登録や削除のスピードが、普通にサーバーサイドも作った場合に比べて、遅くなってしまうのではないか > > > ユーザやデータが増えた時のスピードには、サーバ側の設計や運用技術が強く関係してきます。BaaSはもともとそういうことを想定して開発・運用されているため、それらの技術がゼロの状態からオンプレでやるよりは、遥かに心配が少なくて済みます。 > > 自分でサーバーサイドも開発する必要がでてくるのならば > > > 必要になった時に勉強すれば良いでしょう。また本当に必要になる状況であれば、収益化もされているでしょうから、そのお金でより詳しい人・会社にお願いするということも選択肢になるでしょう。 なおBaaSを提供しているのは Parse 1社ではありません。国内で最近名前を聞くところでは、アピアリーズ、AzureのMobile Apps、Kii Cloud、Milkcocoa、ニフティクラウドなどがあります。BaaSを利用する場合は、各社のサービス・機能を自分のニーズに照らしあわせて検討すると良いでしょう。特に速度を気にするのであれば、サーバの設置場所に、利用者の居住地から近い場所(今回は日本でしょうか)を選べるBaaSを選択することも、なにげに重要かもしれません。 ちょっと宣伝気味ではありますが、私は何度か Kii Cloud を利用 (事例1) (事例2) しています。