backendのエバンジェリストを務めています多くのスマートフォンアプリではフロントエンドだけでなく、バックエンドの開発も必要となります。自分たちでサーバをセットアップして、サーバサイドプログラムを開発しても良いのですが、大抵のアプリにおいて必要となる機能は似通っています。使うのがプッシュ通知、その他にはデータベースやファイルストレージ、認証の仕組み等が必要になるでしょう。Service)です。mBaaSを使うことで、サーバサイドの開発工数を大幅に削減できるようになります。各種mBaaSが使われている現状が分かります。有名なところでは以下のようなサービスがあります。backendの機能や料金面での比較を行います。Hub)AWSを利用されている方は、EC2やS3を使って自分でインスタンスを構築しているケースもあるかと思います。Hub」というmBaaSを提供していますので、今回はこちらを紹介します。Hubは特別な機能を提供する訳ではなく、ほとんどの機能はAWSで元々提供しているものを使っています。Hubで提供されている機能と、それぞれのAWSサービスに対する割り当ては次のようになります。Hubは構成されています。Learningなど)と組み合わせることも容易です。認証、データベース、ストレージ、クラウドロジック、利用解析などの機能を使ってみた感想です。ソーシャルサービスによる認証といったさまざまな認証方式が使えます。データベースについてはDynamoDBというNoSQL型データベースになるので、使い方に慣れる必要があります。SQLによるデータベース操作に慣れている方にとっては、データのCRUD操作で手間取るかもしれません。Lambdaを使っているのでNode.js、Python、Java、.NET、Goといった幅広いプログラミング言語が使えます。これは今回の比較対象としているサービスの中で一番多いです。Hub全般に言えることですが、AWSに慣れている方でないと各機能を使いこなすのは難しいかもしれません。Hub上からできますが、細かな設定は各AWSサービス上で行わないといけません。クラウドロジックのように裏側で複数のサービスが組み合わさっている機能を使いこなすには、データがどういったフローで登録されているのかを把握しなければなりません。うまく動かない時に問題がどこにあるのか(権限なのか、サービス側で制限してしまっているのかなど)を見つけるのに苦労するかもしれません。アプリを運用していく中で、日々増えていくニーズに素早く対応していくにはAWSの拡張性、柔軟性は魅力的です。ホスティング機能(S3利用)もあり、Webサイトとモバイルアプリを同時に展開する案件にも対応しやすいはずです。Hubではプッシュ通知のCordovaプラグインは提供されていません。Nativeのみとなっています。サードパーティーでもプラグインは作られていないようです(執筆時点:2018年06月現在)。料金について料金は他のAWSのサービスと同じく従量課金制になります。Hubに含まれる各サービスごとに費用が発生します。無料枠も用意されていて、例えば認証であれば50,000/月まで無料です。データベースも25GB/月間2億リクエストまで無料であるなど、十分な無料枠が用意されています。HubFirebaseGoogleが買収し、リブランディングして提供しているmBaaSです。リアルタイムDBとして有名でしたが、それ以外の機能も多数実装されています。買収後は元々存在していたGoogleのサービスの中でモバイル向きのものをFirebaseに取り込んでいます。主な機能は次の通りです。Messaging(FCM)を必ず使わなければなりません。backendを使っている場合でも、FCMを経由してプッシュ通知を送信します。Android向けにアプリを提供する際には必ずFirebaseを利用する必要があります(少なくともプロジェクトを登録する必要があります)。使ってみた感想まず、Firebaseの中で一番有名なリアルタイムDBは、JSONをそのまま登録できるNoSQLです。チャットやゲームなど、多人数で一緒に作業するアプリのデータを送受信する用途に適しています。DBとは言いつつもデータ構造はKVSであり、検索条件も同じ値/以上/以下くらいしか用意されていません。そのため、複雑な構造のデータを格納するのにはあまり向かない印象です。FirestoreがNoSQL型DBとして使えます。認証機能は、Googleアカウントによる認証、その他のソーシャルサービスによる認証、SMS認証、匿名認証が提供されています。データ対してのアクセス権限も設定可能です。クラウドファンクション(サーバサイドでのコード実行)はNode.jsのみがサポートされています。Cloudを使うことになるでしょう。広告のサポートを提供しているのはGoogleならではと言えそうです。AdMobはアプリ広告の最大手で、導入も容易です。分析や利用解析機能も充実しています。Queryや機械学習など)との連携も考えられますので、アプリ利用者の規模が拡大するにつれ発生するニーズに素早く対応できそうです。料金についてプッシュ通知を送信するためのFCMは無料で利用できます。リアルタイムDBの容量1GBまで、同時接続数が100までは無料で利用できます。ストレージも5GB、クラウドファンクションは12.5万回呼び出しまで無料です。ストレージの容量やAPIの呼び出し回数がそれらを超える場合は、月額25ドル~の費用が発生します。料金は各機能をどれだけ利用するかによって変わってきます。使い方によってはコストが大きくなる可能性もあります。backendはニフクラ(旧ニフティクラウド)上で提供されるmBaaSです。旧ニフティ社の自社サービスで使われていた機能を汎用化したものがベースになっています。そのため、実用性の高い機能に特化しています。主な機能は下記になります。会員管理メールアドレス、ユーザIDによる認証。ソーシャルサービスによる認証もあり。データストアMongoDBをバックエンドにしたNoSQLデータベース。ファイルストア画像やバイナリファイルを保存。プッシュ通知iOS/Android両方に対応したプッシュ通知。スクリプトサーバサイドでのコード実行が可能。Node.js、Rubyに対応。他のサービスに比べると機能が見劣りしますが、アプリ解析やテストなどはパートナー企業と連携して提供しています。すべての機能を自社で提供するのではなく、各機能に特化したサービスと組んでいく方針をとっています。使ってみた感想データベース相当のデータストアは他のサービスと同じくNoSQL型ですが、MongoDBベースなのでより一般的なデータベースのように扱うことができます。検索条件も他のサービスに比べると数多く指定できます。FirebaseやDynamoDBがサポートしているトランザクションは利用できません。その代わり、ではないのですがNoSQL型ながらポインターとリレーションという機能で1対多、または多対多のデータの関係性を表現できます。ファイルストアは各ファイルに対してアクセス権限が指定できます。HTTPSでダイレクトにファイルへアクセスできる機能もあるので、アプリやWebサイトで利用するリソースを保存しておくのに適しています。スクリプト(サーバサイドでのコード実行)はNode.jsとRubyに対応しています。実行時間やファイルサイズには制限があるので注意して下さい。実行可能回数は料金プランによって決まっており、それを超過すると従量課金になります。backendははじめから一つのサービスとして設計されています。そのため管理画面に統一感があり、認証の設定やデータの管理、プッシュ通知の作成などすべての機能を一箇所で行えます。SDKはiOS、Android、Monaca、Node.js、Unity向けに提供されています。Native向けにもSDKが開発されています。backendの料金体系はシンプルです。スクリプト機能は従量課金ですが、それ以外は無料または月額3万円の2パターンとなっています。上位のカスタマイズプランも用意されています。他のサービスのように帯域やコール数による従量課金制ではありません。力を入れているのがサポートで、有料契約すると日本語でのテクニカルサポートが受けられます。このテクニカルサポート目当てで有料プランを契約されるケースも多いようです。backendはMonacaと連携しているので、MonacaのCordovaプラグイン管理画面から簡単にプッシュ通知用のプラグインをインストールすることができます。手軽に使えるので、とりあえず試してみるのに向いています。Hubの場合はプラグインが提供されていませんので、デバイストークンを取得した後、APIを使ってデータを登録する必要があります。このAPIを使う部分は実装のハードルが高そうです。Firebaseの場合はcordova-plugin-firebaseプラグインを使ってデバイストークンの取得と登録が行えます。後は管理画面上でプッシュ通知を作成します。backendでしょう。HubのDynamoDB、FirebaseのリアルタイムDBはJSONを保存する場所といったイメージになります。どちらも検索条件はあまり設定できません。Firestoreがより本格的に使えるNoSQLになります。AWSの場合は別途インスタンスを立てたり、別のサービスと組み合わせるのが良さそうです。HubのLambdaでしょう。言語も多数使えますし、実行料金も格安です。backendになるでしょう。他のmBaaSに比べて実行時の料金は高い印象です。Firebaseはサポートされている言語がNode.jsだけですが、トリガーの指定ができるのが強みです。Lambdaも可能です)。backendはトリガーに対応していません。Hub、Firebaseどちらにも備わっています。Hubで提供されている機能は簡易的です。FirebaseはGoogleアナリティクスと統合されているので、強力な解析機能が提供されています。どちらのサービスもモバイルアプリ開発や運用に関係するプロセスをすべて取り込んでいこうとしているようです。一口にmBaaSと言っても、三者三様の特性があることが理解いただけたでしょうか。いずれのサービスも、すべての機能が優れている訳ではないので、開発者としてはアプリの特性に合わせて使いたい機能だけを選んでいく形になるでしょう。機能ごとに異なるmBaaSを組み合わせて利用しても良いかもしれません。mBaaSを使うことでアプリ開発からリリースまでの速度は大幅に高速化します。中津川篤司プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。2004年、まだ情報が少なかったオープンソースソフトの技術ブログ『MOONGIFT』を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶエバンジェリスト業「DevRel」活動をスタートした。