はじめに
写真やデータの保存場所としてのクラウドは一般の方にもかなり認知されたようですが、アプリケーション開発でクラウドのメリットを享受されている方はまだ少ないように感じます。MBaaS(Mobile Backend as a Service)はクラウド利用の具体的な答えの一つです。MBaaSを使えば、簡単にクラウドのメリットを活かしたスマホアプリを作成できます。
対象読者
MBaaSと連携するAndroidアプリを開発したい方。JavaとEclipseについては解説しませんので、JavaとEclipseの基本的な知識があると読みやすいでしょう。
必要な環境
- JDK
- Eclipse
- Android SDK
- ニフティクラウド Mobile backend Basic(無料版)
スマホ+MBaaSの時代へ
スマートフォン(もしくはタブレット)+MBaaS(Mobile Backend as a Service)がコンピュータシステム利用の主要な形態の一つになりつつあります。
30年ほど時代を遡ると、大型コンピュータ(汎用機)の時代 → PCの時代 → クライアントサーバーシステム(C/Sシステム)の時代とコンピュータ利用の形態は変化してきました。C/Sシステムの時代は高速に複数ユーザーからの要求を処理するリレーショナルデータベースシステム(RDBMS)が注目を浴びました。
次にインターネットの普及によって、Webアプリケーションの時代が来ました。Webアプリを構築するには、WebサーバーやDBサーバーを用意して、サーバー側のプログラムをJavaやPHPで作成します。クライアントに必要なソフトウェアはブラウザだけなので、C/Sシステムの時代に面倒だったクライアントPC側のアプリのインストールが不要になりました。また、PCだけでなく携帯電話からも利用可能なので、どこにいてもWebアプリが利用可能になりました。
ここ数年は、スマートフォンやタブレットが普及する一方、サーバーを自前で準備する(オンプレミス)のではなく、クラウドとして用意されたサーバー群を利用する形態が広がりました。サーバー機の準備や管理の手間がないのは助かりますが、サーバー側のアプリとクライアント側のアプリを別々に用意しなくていけないので、開発は相変わらず大変です。
スマホやタブレット側でブラウザを起動して使うWebアプリならクライアント側のアプリは不要ですが、より便利で高速に動作するネイティブアプリを動作させようとしたら、クライアント、サーバー両方でのアプリの開発が必要です。
MBaaSは、スマホ側のプログラムで必要になるであろうサーバー側の機能があらかじめ用意されているサービスです。スマホ側のOS、開発言語に合わせたSDKを準備されており、アプリ開発者はそれをダウンロードしてAPIをコールするだけで、サーバー側の機能を利用することができます。
「どうして、わたしの作るアプリにどんな機能が必要になるかわかるの?」って思われた方もいらっしゃるかもしれませんね。でも、考えてみると、どんなアプリケーションでも必要になる機能に大きな違いはありません。
データを登録して、加工して表示したり、登録したデータを変化させて、いずれかの状態を表現する。このような機能はアプリの種類を問わず必要でしょう。グループウェアであれ、ゲームであれ、なんらかのデータが登場して、その状態を変えていきます。そして、利用者はそのデータを集めたり、並べ替えたりして眺めます。
また、スマホ特有の機能として、GPS(Global Positioning System、人工衛星を利用した全地球測位システム)から位置情報を取得して利用することや、一斉にスマホにプッシュ通知(メールソフトを立ち上げてから受信するメールと異なり、郵便配達のようにユーザーに能動的に通知する機能)を行うことも求められます。
MBaaSを概観する
海外で有名なMBaaSは「Parse」ですが、国産では、「ニフティクラウド」「アピアリーズ」「Kii Cloud」が代表的なサービスです。各社のMBaaSが提供している機能をみていきましょう。
機能の種類 | Parse | ニフティクラウド | アピアリーズ | Kii Cloud |
---|---|---|---|---|
ユーザー | 会員管理・認証 | 会員管理・認証 | ユーザー管理・認証 | ユーザー管理 |
権限管理 | 権限管理 | 権限管理 | アクセス制限機能 | Objectに対するアクセス権 |
データストア | データストア | データストア | データベース機能 | データ管理 |
ファイルストア | ファイルストア | ファイルストア | ファイル機能 | Object Bodyのアップロード |
位置情報 | 位置情報検索 | 位置情報検索 | ロケーション機能 | 位置情報 |
プッシュ通知 | プッシュ通知 | プッシュ通知 | プッシュ通知 | プッシュ通知 |
SNS連携 | SNS連携 | SNS連携 | - | 外部サービスを利用した認証 |
アプリ分析 | アプリ分析 | - | - | アプリ分析 |
バックグラウンドジョブ | バックグラウンドジョブ | - | - | スケジュール起動 |
サーバー | - | - | - | サーバー機能拡張 |
A/Bテスト | - | - | - | A/Bテスト |
当初、「MBaaSの比較(機能の違い)」の表において、Kii Cloudの機能で一部未対応のものがあると記載しておりましたが、表に記載の機能はすべて提供済みであるとご指摘を受けました。間違いを訂正させていただくとともに、深くお詫び申し上げます。
呼び方が異なる場合がありますが、共通している機能は会員管理・認証、権限管理、データストア(データベース機能)、ファイルストア(データ管理)、位置情報(ロケーション機能)、プッシュ通知です。
認証については、OAuth2.0に対応しているMBaaSもあります。権限管理では、ユーザーやグループごとにデータに対する読込権や更新権を細かく設定できます。
データストアはRDB(リレーショナル・データベース)ではありません。Key-Value形式の組み合わせでデータをオブジェクトとして記憶します。RDBのように最初にスキーマありきではないので、柔軟にデータを作成できます。
ファイルストアは、写真や動画、各種ドキュメントを扱います。さらに、SNS連携機能でFacebookやTwitterに投稿することもできます。
また、各サービス独自の機能もあります。Parseにはバックグラウンドジョブという機能があり、サーバー上でジョブをスケジューリングして実行することができます。
ParseとKii Cloudにあるアプリ分析では、アプリの利用状況やアプリのデータ分析が可能です。
さらにKii Cloudには、JavaScriptで書いたコードをクラウド上で実行できるサーバー機能拡張や、他にない機能としてA/Bテストがあります。A/Bテストとは、二つの選択肢のうち、AとBのどちらがよいかをユーザーの行動から判断する機能です。
これらの機能をすぐに使い始めることができる点が、MBaaSの良いところです。アイデアを形にするのに余計な手間が掛かりません。いきなりスマホ側のアプリの制作に着手することができるのです。
でも、お金になるかどうかわからないジャストアイデアのために、利用料がかかるMBaaSはいきなり使いにくいですよね。
しかし大丈夫です。MBaaSの料金は複数のプランがあり、月額いくらと決まっていることが多いのですが、しばしば無料のプランが用意されています。
機能 | Parse | ニフティクラウド | アピアリーズ | Kii Cloud |
---|---|---|---|---|
APIリクエスト数 | 30/秒 | 200万回/月 | 10,000/月 | 100万回/月 |
プッシュ通知 | 100万回(100万の端末)/月 | 200万回/月 | 500/月 | 100万回/月 |
ストレージ |
データストレージ 20GB ファイルストレージ 20GB |
基本ストレージ 5GB | 基本ストレージ 100MB | 1GB |
データ転送 | 2TB | - | 1GB | - |
その他 | バックグラウンドジョブ 1 | ファイルサイズ制限 5MB | - | A/Bテスト 1/月 |
表は各サービスの無料で使える範囲を示したものです。サービスによって、カウントの仕方や単位が異なったりしますが、アプリ開発、テスト工程でまず気になるのは、APIリクエスト数です。開発するアプリの中で、ユーザー登録のAPIを呼び出したら+1、ログインのAPIを呼び出したら+1、データを取得するAPIを呼び出したら+1とリクエスト数がカウントされていきます。ですから、単位時間あたりの回数が多い方が安心して、アプリのテストや試用ができます。データストアの容量やプッシュ通知回数は、開発するアプリによって異なります。
今回利用するニフティクラウド mobile backendでは、以下の表のように料金が決まっています。
Plan | Basic | Pro | Expert | カスタマイズ |
---|---|---|---|---|
月額 | 無料 | 2,000円 | 30,000円 | お問い合わせ |
APIリクエスト数 | 200万回/月 | 500万回/月 | 5000万回/月 | カスタマイズ |
プッシュ通知 | 200万回/月 | 300万回/月 | 1000万回/月 | カスタマイズ |
基本ストレージ | 5GB | 10GB | 100GB | カスタマイズ |
ファイルサイズ制限 | 5MBまで | 10MBまで | 100MBまで | カスタマイズ |
無料のBasicプランでAPIリクエスト数やプッシュ通知が月に200万回まで使えますので、開発、テスト、試用段階においては全く問題ないでしょう。基本ストレージの5GBも十分です。5MBまでというファイルサイズの制限はアップするファイルの種類によっては要注意かもしれません。
次にMBaaSが対応している実行環境や開発言語をみてみましょう。
OSや開発環境 | Parse | ニフティクラウド | アピアリーズ | Kii Cloud |
---|---|---|---|---|
iOS | ◯ | ◯ | ◯ | ◯ |
Android | ◯ | ◯ | ◯ | ◯ |
OS X | ◯ | - | - | - |
JavaScript | ◯ | ◯ | ◯ | ◯ |
Windows Phone 8 SDK | ◯ | - | - | - |
Windows 8 SDK | ◯ | - | - | - |
.NET SDK | ◯ | - | - | - |
Xamarin SDK | ◯ | - | - | - |
Unity SDK | ◯ | ◯ | - | ◯ |
Parseの対応環境の多さには一日の長を感じますが、どのサービスでもAndroid(Java)、iOS(Objective-C)、JavaScriptはサポートしているようです。
本連載では、無料で開発環境を準備できて、実機へのインストールも可能なAndroidをターゲットにします。