ニフクラ mobile backendではmBaaSを提供している訳ですが、その実際の利用実績をどう捉えているかと言えば、まだまだこれからだろうといった考えです。国内においては他社の利用動向がサービス導入において大きく影響を及ぼすのですが、mBaaSはバックエンド(つまり裏側)の仕組みであるためになかなか表に事例が出てきません。そのため個別に事例は出てきていつつも、一気に流れ込むと言った状況にはなっていません。
ではmBaaSを使っていく上でのメリット、デメリットについてご紹介したいと思います。導入の際の参考にしていただければ幸いです。
導入のメリットは?
mBaaSについても同様で、アプリを作るための基盤として採用するのがベストだと言えます。ユーザ管理やデータストレージ、プッシュ通知などアプリ開発において欲しくなるサーバサイドの機能が開発なしで手に入るのです。
mBaaSを使い始める2つのパターンとは?
mBaaSを使い始めるパターンとしては、主に2パターンあると考えられます。1つ目は1からアプリを作成する場合です。最初からmBaaSを組み込んでしまえば、データ管理はシンプルです。
2つ目のパターンとしては、複数のアプリをリリースしていく中でサーバ管理が煩雑化していくケースです。例えば1つ目のアプリをリリースしたとき、app1.comというURLを使ったとします。それをコピーする形で2つ目のアプリを作ったとしますが、その場合1つ目のアプリのURLを変更するというのは簡単ではありません。なぜならアプリの中にURLが文字列として埋め込まれているからです。そこで1つ目のアプリで使っているサーバサイドの仕組みをコピーして動かします。これがapp2.comです。ドメイン代が勿体ない場合はapp2.app1.comかも知れません。今後を考えるとapp1.com/app2などとしたいでしょうが、既に動いているアプリケーションを修正するのは面倒ですし、汎用化するのはそうそう簡単ではありません。データベースのスキーマをコピーして、app1とapp2の接続先を変える方が簡単です。
既に自前のサーバーがある場合
mBaaS導入のデメリット
では逆にデメリットを挙げたいと思います。ここでは3つほど挙げます。
1. 機能の網羅性に欠ける
まず網羅性に欠けるということです。殆どの機能は満たせても、最後のちょっとした機能が足りないといったケースがよくあります。
この問題については解決手段が2つあります。1つはmBaaS事業者によってはサーバサイドスクリプトによる拡張をサポートしています。何でもできるという訳ではありませんが、それでもある程度自社で開発できます。もう1つは自分でサーバを立てて、Web APIを通じてサーバと連携させるという方法です。
mBaaSはアプリと通信する際にWeb APIを使っています。特にWebアプリケーションをサポートする際にはRESTfulのAPIを提供するのが一般的です。これはニフクラ mobile backendでも同じで、データの追加/更新/削除を含めたRESTfulなAPIを提供しています。mBaaSに保存したデータをWeb APIを使って取得したり、逆にデータをmBaaSに保存するのは難しいことではありません。そういったスクラッチ×mBaaSというハイブリッド構成はおすすめです。100% mBaaSかスクラッチかと言ったゼロサムで考えるとmBaaS導入に躊躇してしまいますが、mBaaSの良いところや必要なところだけを使うというのはおすすめです。
2. 速度面
次に速度面があります。各サービスベンダーとも強化していますが、それでもリアルタイムレベルの高反応性が求められるゲームでの導入は難しいと思われます。ただしユーザ認証やゲーム結果を保存してランキングを作ると言ったような方法であれば十分活用できます。
3. 移行
最後に、データ移行が難しいと言うのがあります。詳細は省きますが、Webサービスでデータベースを移行する以上に難しいでしょう。
まとめ
mBaaSはベンダーロックインの強いサービスだけに、メリット/デメリットを慎重に見極めた上で判断する形になるかと思います。とは言え、アプリは日々たくさん生まれており、開発に時間をかけていてはあっという間に取り残されてしまうことになりかねません。スピード感は大事です。
もし導入しようと思った際にもベンダーは幾つもありますので、その際にはぜひmBaaSベンダー選定でチェックしたいことを参考にしてください。
eBookのご紹介
さらに詳細は下記のmBaaSのメリット(eBook)にて紹介しています。この他、モバイルのバックエンド開発の種類と違い、日本や海外のmBaaSベンダーについてや、mBaaSの今後などのトピックについて掲載しています。ご興味がありましたらぜひダウンロードしてください!