Mobile Backend Starter は、Google が提供する PaaS(Platform as a Service)である
Google App Engine 上で動作するモバイル アプリ用バックエンドを、クリックひとつでアップロードできます。手間をかけてサーバー環境をセットアップしたりサーバー側プログラムをコーディングしたりといった作業は一切不要。以下の豊富なバックエンド機能を Android 向けアプリから直接利用できます。
Datastore によるデータ保存と検索
Google の他の主要サービスと同じレベルのきわめて高いスケーラビリティと可用性を備えるデータ ストア、App Engine Datastore に対して、Android 向けアプリから直接データの保存や検索が可能です。もしあなたのアプリが大ヒットして膨大な量のデータやアクセスが集中したとしても難なくさばけます。また、すべてのデータは常に複数のデータ センターにコピーされ、もしもの障害時にもサービスが停止したりデータが失われる可能性はわずかです。
Android 向けアプリへのプッシュ通知と Pub/Sub メッセージング
Google Cloud Messaging を利用したプッシュ通知をサポートしており、Android デバイス間での 1:1 や 1:n のメッセージングやブロードキャスト配信を簡単に実装できます。ソーシャル アプリや掲示板、チャット、ゲーム、グループ コラボレーション等のアプリを容易に実現できます。
Continuous Query によるリアクティブなユーザー エクスペリエンス
Continuous Query、すなわちデータの更新を常時監視して変化を検知し、クエリを自動再実行するメカニズムをサポートします。例えば、掲示板アプリにおいて書き込み内容を取得するクエリを実行すると、掲示板に誰かが書き込むたびに同じクエリが自動的に再実行され、数秒のうちにユーザー インタフェースが更新されます。もうユーザーに「リロード」ボタンを何度も押させたりポーリングを行う必要はありません。この機能の実装には App Engine の Prospective Search API が利用されています。
Google アカウント認証とアクセス制御
Android デバイスで使用されている Google アカウント情報が自動的にバックエンド側に渡され、個々のデータにアクセスしたユーザー ID の取得やアクセス制御などのセキュリティ機能がごく簡単に利用できます。
無償で始められて運用管理も楽ちん
Mobile Backend Starter は App Engine 上のアプリケーションとして動作するので、トラフィックやデータ量の少ない場合には無償 で利用できます。PaaS ですからサーバー インフラの運用管理は Google エンジニアにおまかせでき、App Engine の管理コンソール から動作状況を確認できます。
オープン ソースで公開、バックエンドの機能拡張も容易
すべてのソース コードがオープン ソースとして GitHub リポジトリ で公開されており、必要に応じてバックエンド側のコードやロジックを追加・変更して App Engine 上にアップロードして運用できます。
Mobile Backend Starter を使ってみよう
Mobile Backend Starter の使い方は簡単です。以下では、Mobile Backend Starter を使いはじめるまでのステップを簡単に紹介します。なお、手順の詳細については
Getting Started ドキュメント を参照してください。
まずは
http://cloud.google.com/console を開き、CREATE PROJECT ボタンをクリックして 新しいプロジェクトを作成します。つづいて、画面上に表示されるサンプルコードから Mobile Backend App を選択して
Deploy ボタンをクリックすると、Mobile Backend が App Engine にアップロードされます。
次に Setting ボタンをクリックし、認証設定を
Open にセットして保存します。
これでバックエンドが Android 向けアプリからアクセス可能になりました。最後に、ひな形となる Android クライアントをダウンロードし、Eclipse で開きます。Consts.java というファイル上の PROJECT_ID に作成したプロジェクト ID を記入します。
この Android クライアントに含まれるサンプルである Guestbook アプリを起動すると、バックエンドとアクセスできていることを確認できます。
Mobile Backend Starter のドキュメント ページでは、さらに
Google Cloud Messaging を利用した Continuous Query や、
Google アカウントによる認証処理やユーザー情報取得 をテストする手順が記載されていますので合わせてご覧ください。
Mobile Backend Starter のプログラミング
Eclipse 上で Guestbook アプリのソース コードを眺めれば、Mobile Backend Starter のプログラミングがいかに簡単か解るはずです。例えば Guestbook アプリでは、以下のような数行のコードでゲストブックに新しいメッセージを追加しています。サーバー側コードの記述や事前のテーブル定義が不要なだけでなく、Android 開発につきものの AsyncTask の記述(非同期ネットワーク通信)、AccountPicker(Google アカウントの選択)まわりの記述、サーバー側のユーザー認証まわりのコーディングなどをすべて省略できます。
CloudEntity newPost = new CloudEntity("Guestbook");
newPost.put("message", <...the entered text...>);
getCloudBackend().insert(newPost, null);
また以下のコードでは、Guestbook テーブルに対して
Continuous Query を実行しています。Continuous Query とは、サーバー側に保存されたデータの変化を捉えてクエリを継続的に実行する新しいメカニズムです。
CloudQuery cq = new CloudQuery("Guestbook");
cq.setScope(Scope.FUTURE_AND_PAST);
List<CloudEntity> results = cloudBackendAsync.list(cq, handler);
ここで、Scope.FUTURE_AND_PAST とは過去と未来の両方のデータに対して検索を行うという意味の指定です。具体的には、ゲストブックの過去の書き込み内容を検索するだけでなく、新しい書き込みがあるたびに瞬時に検索が再実行され、イベント ハンドラが呼び出されてユーザー インタフェースが更新されます。ユーザーにリロードボタンを何度も押させたりポーリングしたりしなくてもつねに最新の情報を表示でき、かつネットワークアクセスの回数を大幅に減らしてバッテリー消費を低く抑えられます。本来、こうしたサーバー プッシュ機能を利用するには Google Cloud Messaging のプログラミングが必要となりますが、Continuous Query を使えば一行の Scope 指定だけでサーバー プッシュ機能を利用できます。
いかがでしょうか。Mobile Backend Starter ではほんのわずかな作業でモバイル アプリ用のバックエンド環境を準備でき、かつ簡単な Android プログラミングだけでインタラクティブ性の高い豊富なバックエンド機能をすぐに利用できることが理解いただけたかと思います。なお、近日中には詳細なプログラミング マニュアルも公開される予定です。Mobile Backend Starter についてのご質問や、こう使ったよ、といったレポートなどありましたら、
Stack Overflow の Cloud Endpoints フォーラム にぜひご投稿ください(ただし残念ながら英語のみとなります)。
Posted by 佐藤一憲 / Solutions Architect, Cloud Solutions Team
[この記事は Mobile Backend Starter のプロダクト マネージャー、Brad Abrams が Cloud Platform Blog と Android Developers Blog に投稿した記事、Get your Android Application Cloud-Powered with the Mobile Backend Starter を元に、佐藤が加筆・再構成しています]
いまどきのモバイル アプリケーション開発では「クラウドとの連携」が欠かすことができません。とはいっても、データベース アクセスやユーザー認証といった定番の機能を利用するためだけに毎回サーバーを自分で立てたりサーバー側のコードをひと通り書いたり自分で運用したりするのはちょっと面倒ですよね。モバイル アプリ用のバックエンドをクリックひとつで準備できて、運用もラクちんなクラウド環境があったらいいな...と思いませんか?
先日の Google I/O 2013 でのセッション From Nothing to Nirvana in Minutes: Cloud Backend for Your Android Application では、まさにそうしたニーズに応えるツール Mobile Backend Starter が公開されました。
Mobile Backend Starter は、Google が提供する PaaS(Platform as a Service)である Google App Engine 上で動作するモバイル アプリ用バックエンドを、クリックひとつでアップロードできます。手間をかけてサーバー環境をセットアップしたりサーバー側プログラムをコーディングしたりといった作業は一切不要。以下の豊富なバックエンド機能を Android 向けアプリから直接利用できます。
Datastore によるデータ保存と検索
Google の他の主要サービスと同じレベルのきわめて高いスケーラビリティと可用性を備えるデータ ストア、App Engine Datastore に対して、Android 向けアプリから直接データの保存や検索が可能です。もしあなたのアプリが大ヒットして膨大な量のデータやアクセスが集中したとしても難なくさばけます。また、すべてのデータは常に複数のデータ センターにコピーされ、もしもの障害時にもサービスが停止したりデータが失われる可能性はわずかです。
Android 向けアプリへのプッシュ通知と Pub/Sub メッセージング
Google Cloud Messaging を利用したプッシュ通知をサポートしており、Android デバイス間での 1:1 や 1:n のメッセージングやブロードキャスト配信を簡単に実装できます。ソーシャル アプリや掲示板、チャット、ゲーム、グループ コラボレーション等のアプリを容易に実現できます。
Continuous Query によるリアクティブなユーザー エクスペリエンス
Continuous Query、すなわちデータの更新を常時監視して変化を検知し、クエリを自動再実行するメカニズムをサポートします。例えば、掲示板アプリにおいて書き込み内容を取得するクエリを実行すると、掲示板に誰かが書き込むたびに同じクエリが自動的に再実行され、数秒のうちにユーザー インタフェースが更新されます。もうユーザーに「リロード」ボタンを何度も押させたりポーリングを行う必要はありません。この機能の実装には App Engine の Prospective Search API が利用されています。
Google アカウント認証とアクセス制御
Android デバイスで使用されている Google アカウント情報が自動的にバックエンド側に渡され、個々のデータにアクセスしたユーザー ID の取得やアクセス制御などのセキュリティ機能がごく簡単に利用できます。
無償で始められて運用管理も楽ちん
Mobile Backend Starter は App Engine 上のアプリケーションとして動作するので、トラフィックやデータ量の少ない場合には無償 で利用できます。PaaS ですからサーバー インフラの運用管理は Google エンジニアにおまかせでき、App Engine の管理コンソール から動作状況を確認できます。
オープン ソースで公開、バックエンドの機能拡張も容易
すべてのソース コードがオープン ソースとして GitHub リポジトリ で公開されており、必要に応じてバックエンド側のコードやロジックを追加・変更して App Engine 上にアップロードして運用できます。
Mobile Backend Starter を使ってみよう
Mobile Backend Starter の使い方は簡単です。以下では、Mobile Backend Starter を使いはじめるまでのステップを簡単に紹介します。なお、手順の詳細については Getting Started ドキュメント を参照してください。
まずは http://cloud.google.com/console を開き、CREATE PROJECT ボタンをクリックして 新しいプロジェクトを作成します。つづいて、画面上に表示されるサンプルコードから Mobile Backend App を選択して Deploy ボタンをクリックすると、Mobile Backend が App Engine にアップロードされます。
次に Setting ボタンをクリックし、認証設定を Open にセットして保存します。
これでバックエンドが Android 向けアプリからアクセス可能になりました。最後に、ひな形となる Android クライアントをダウンロードし、Eclipse で開きます。Consts.java というファイル上の PROJECT_ID に作成したプロジェクト ID を記入します。
この Android クライアントに含まれるサンプルである Guestbook アプリを起動すると、バックエンドとアクセスできていることを確認できます。
Mobile Backend Starter のドキュメント ページでは、さらに Google Cloud Messaging を利用した Continuous Query や、Google アカウントによる認証処理やユーザー情報取得 をテストする手順が記載されていますので合わせてご覧ください。
Mobile Backend Starter のプログラミング
Eclipse 上で Guestbook アプリのソース コードを眺めれば、Mobile Backend Starter のプログラミングがいかに簡単か解るはずです。例えば Guestbook アプリでは、以下のような数行のコードでゲストブックに新しいメッセージを追加しています。サーバー側コードの記述や事前のテーブル定義が不要なだけでなく、Android 開発につきものの AsyncTask の記述(非同期ネットワーク通信)、AccountPicker(Google アカウントの選択)まわりの記述、サーバー側のユーザー認証まわりのコーディングなどをすべて省略できます。
CloudEntity newPost = new CloudEntity("Guestbook");
newPost.put("message", <...the entered text...>);
getCloudBackend().insert(newPost, null);
また以下のコードでは、Guestbook テーブルに対して Continuous Query を実行しています。Continuous Query とは、サーバー側に保存されたデータの変化を捉えてクエリを継続的に実行する新しいメカニズムです。
CloudQuery cq = new CloudQuery("Guestbook");
cq.setScope(Scope.FUTURE_AND_PAST);
List<CloudEntity> results = cloudBackendAsync.list(cq, handler);
ここで、Scope.FUTURE_AND_PAST とは過去と未来の両方のデータに対して検索を行うという意味の指定です。具体的には、ゲストブックの過去の書き込み内容を検索するだけでなく、新しい書き込みがあるたびに瞬時に検索が再実行され、イベント ハンドラが呼び出されてユーザー インタフェースが更新されます。ユーザーにリロードボタンを何度も押させたりポーリングしたりしなくてもつねに最新の情報を表示でき、かつネットワークアクセスの回数を大幅に減らしてバッテリー消費を低く抑えられます。本来、こうしたサーバー プッシュ機能を利用するには Google Cloud Messaging のプログラミングが必要となりますが、Continuous Query を使えば一行の Scope 指定だけでサーバー プッシュ機能を利用できます。
いかがでしょうか。Mobile Backend Starter ではほんのわずかな作業でモバイル アプリ用のバックエンド環境を準備でき、かつ簡単な Android プログラミングだけでインタラクティブ性の高い豊富なバックエンド機能をすぐに利用できることが理解いただけたかと思います。なお、近日中には詳細なプログラミング マニュアルも公開される予定です。Mobile Backend Starter についてのご質問や、こう使ったよ、といったレポートなどありましたら、Stack Overflow の Cloud Endpoints フォーラム にぜひご投稿ください(ただし残念ながら英語のみとなります)。