mobile backend starterを使ってサクサクアプリ開発

38
Mobile Backend Starterを使って サクサクアプリ開発 GDG九州 本田 克己

Upload: katsumi-honda

Post on 31-May-2015

2.436 views

Category:

Technology


1 download

DESCRIPTION

DevFest Japan 2014 Springの前日に急遽、登壇の機会を頂いたので慌てて用意したバージョンです。 https://sites.google.com/site/devfestjapan/ 後日、修正版をアップしまする。

TRANSCRIPT

Page 1: Mobile Backend Starterを使ってサクサクアプリ開発

Mobile Backend Starterを使ってサクサクアプリ開発

GDG九州本田 克己

Page 2: Mobile Backend Starterを使ってサクサクアプリ開発

Mobile Backend Starterって?

IaaS

BaaS(Backend as a Service)

SaaS

PaaS

クラウドの何か。

https://developers.google.com/cloud/samples/mbs/

Page 3: Mobile Backend Starterを使ってサクサクアプリ開発

去年のGoogle I/Oで発表されました

https://developers.google.com/events/io/sessions/333508149

Page 4: Mobile Backend Starterを使ってサクサクアプリ開発

システム構成

クライアントライブラリはAndroidとiOS向けに提供

Page 5: Mobile Backend Starterを使ってサクサクアプリ開発

Google App Engine

Google App Engineを使っているので

・サーバのメンテとか考えなくていい

・無料で初められる

・お金を払えば自動的にスケールしてくれる

Page 6: Mobile Backend Starterを使ってサクサクアプリ開発

できること

● データの保存と認証認可● 継続的クエリ

● Pub/Subメッセージング

Page 7: Mobile Backend Starterを使ってサクサクアプリ開発

データの保存と認証認可

データはGoogle App EngineのDatastoreに保存

Googleアカウントでの認証・認可

JSON形式のREST API

Page 8: Mobile Backend Starterを使ってサクサクアプリ開発

継続的クエリ

データの変更があったことを検知できる

ポーリングやリロードボタンを排除

無駄な通信を減らせる  → バッテリーにやさしい  → お財布にもやさしい

ポーリングを無くして世界に平和を!

Page 9: Mobile Backend Starterを使ってサクサクアプリ開発

Pub/Subメッセージング

パブリッシャが送信したメッセージを、サブスクライバが受信

複数のサブスクライバに、同時にメッセージを送れる

subpub

Mobile Backend Starter

subsubsub

Page 10: Mobile Backend Starterを使ってサクサクアプリ開発

プッシュ通知

継続的クエリもPub/Subメッセージングも、プッシュ通知を使ってサーバからクライアントに通知

Google Cloud Messaging(GCM)

Apple Push Notification Service(APNS)

Page 11: Mobile Backend Starterを使ってサクサクアプリ開発

動かしてみる

・GAEにMBSをデプロイ(簡単)

・Android用クライアントライブラリ設定

・GCMの設定(面倒)

・iOS用クライアントライブラリ設定

・APNSの設定(すごく面倒)

Page 12: Mobile Backend Starterを使ってサクサクアプリ開発

GAEにデプロイ

Google Developers Consoleから[プロジェクトを作成]

プロジェクトを作成すると、「ようこそ。・・・」って表示される。

おもむろに「Mobile Backend Starter」を開いて [展開] をクリック

Page 13: Mobile Backend Starterを使ってサクサクアプリ開発

GAEにデプロイ

しばらく待ちます

Page 14: Mobile Backend Starterを使ってサクサクアプリ開発

Androidで動かす

Androidの開発環境を準備(Eclipse + ADT+GPE)

サンプルプロジェクトをダウンロード、展開(http://developers.google.com/cloud/samples/repository/mbs/android)

Eclipseにインポート

サポートライブラリの参照が切れてるので、適当に設定しときます

Page 15: Mobile Backend Starterを使ってサクサクアプリ開発

GCMの設定

com.google.cloud.backend.core.Consts.javaを変更する

/** * Set Project ID of your Google APIs Console Project. */ public static final String PROJECT_ID = "*** ENTER YOUR PROJECT ID ***";

/** * Set Project Number of your Google APIs Console Project. */ public static final String PROJECT_NUMBER = "*** ENTER YOUR PROJECT NUMBER ***";

Page 16: Mobile Backend Starterを使ってサクサクアプリ開発

GCMの設定

/** * Set Project ID of your Google APIs Console Project. */ public static final String PROJECT_ID = "sinuous-client-541";

/** * Set Project Number of your Google APIs Console Project. */ public static final String PROJECT_NUMBER = "260486999232";

Page 17: Mobile Backend Starterを使ってサクサクアプリ開発

GCMの設定

Developers Consoleから Google Cloud Messaging for Androidを有効に切り替える

Page 18: Mobile Backend Starterを使ってサクサクアプリ開発

GCMの設定

Page 19: Mobile Backend Starterを使ってサクサクアプリ開発

● プッシュ通知はシミュレータだと動かないので、Appleにお布施して実機で動かしてください

iOSで動かす

Page 20: Mobile Backend Starterを使ってサクサクアプリ開発

● iOS Developer Programのサインアップ● App IDの設定● プッシュ通知用証明書の作成

APNSの設定

Page 21: Mobile Backend Starterを使ってサクサクアプリ開発

APNSの設定

Page 22: Mobile Backend Starterを使ってサクサクアプリ開発

APNSの設定

Page 23: Mobile Backend Starterを使ってサクサクアプリ開発

プッシュ通知用証明書の作成

Page 24: Mobile Backend Starterを使ってサクサクアプリ開発

プッシュ通知用証明書の作成

Page 25: Mobile Backend Starterを使ってサクサクアプリ開発

プッシュ通知用証明書の作成

ダウンロードしたファイルを開いてキーチェーンアクセスに取り込む

キーチェーンアクセスから証明書を選択して.p12ファイルに書き出す

Page 26: Mobile Backend Starterを使ってサクサクアプリ開発

プロビジョニングプロファイルを作る

App IDを選択

Page 27: Mobile Backend Starterを使ってサクサクアプリ開発

プロビジョニングプロファイルを作る

Page 28: Mobile Backend Starterを使ってサクサクアプリ開発

iOSクライアントIDを作成

Page 29: Mobile Backend Starterを使ってサクサクアプリ開発

MBSに証明書を登録

Page 30: Mobile Backend Starterを使ってサクサクアプリ開発

課金を有効にする

iOS向けのプッシュ通知は、1日4時間を超えると1時間あたり$0.16費用がかかるそうです。

Android向けのプッシュ通知は、コストがかからなくて素敵。

Page 31: Mobile Backend Starterを使ってサクサクアプリ開発

課金を有効にする

Page 32: Mobile Backend Starterを使ってサクサクアプリ開発

プッシュ通知の設定めんどくさい

Page 33: Mobile Backend Starterを使ってサクサクアプリ開発

設定できてしまえば、ものすごく簡単に

サーバとのデータのやりとりが実現できます

コードは簡単

Page 34: Mobile Backend Starterを使ってサクサクアプリ開発

データの追加(Android) // create a CloudEntity with the new post CloudEntity newPost = new CloudEntity("Guestbook"); newPost.put("message", mMessageTxt.getText().toString());

// create a response handler that will receive the result or an error CloudCallbackHandler<CloudEntity> handler = new CloudCallbackHandler<CloudEntity>() { @Override public void onComplete(final CloudEntity result) { mPosts.add(0, result); updateGuestbookView(); mMessageTxt.setText(""); mMessageTxt.setEnabled(true); mSendBtn.setEnabled(true); }

@Override public void onError(final IOException exception) { handleEndpointException(exception); } };

Page 35: Mobile Backend Starterを使ってサクサクアプリ開発

継続的クエリ(Android) // create a response handler that will receive the result or an error CloudCallbackHandler<List<CloudEntity>> handler = new CloudCallbackHandler<List<CloudEntity>>() { @Override public void onComplete(List<CloudEntity> results) { mAnnounceTxt.setText(R.string.announce_success); mPosts = results; animateArrival(); updateGuestbookView(); }

@Override public void onError(IOException exception) { mAnnounceTxt.setText(R.string.announce_fail); animateArrival(); handleEndpointException(exception); } };

// execute the query with the handler mProcessingFragment.getCloudBackend().listByKind( "Guestbook", CloudEntity.PROP_CREATED_AT, Order.DESC, 50, Scope.FUTURE_AND_PAST, handler);

Page 36: Mobile Backend Starterを使ってサクサクアプリ開発

データの追加(iOS) NSDictionary *dict = @{kGuestbookPropMessage:textView.text};

CloudEntity *record = [CloudEntity entityWithKind:kGuestbookEntityName properties:dict];

[record insertInstanceWithCallback:^(CloudEntity *entity, NSError *error) { [self insertCompletedWithObject:entity error:error]; }];

- (void)insertCompletedWithObject:(CloudEntity *)returnedObject error:(NSError *)error { if (error) { [self showPopupMessageWithVerb:@"inserting"]; [self resetToolBarWithAddButton]; }}

Page 37: Mobile Backend Starterを使ってサクサクアプリ開発

継続的クエリ(iOS) [_controllerHelper listCollectionWithKind:kGuestbookEntityName pastScope:manually completionHandle:^(NSArray *array, NSError *error) { [self listCollectionCompletedWithArray:array error:error]; }];

Page 38: Mobile Backend Starterを使ってサクサクアプリ開発

サーバサイドはノータッチでできちゃいます。

お気楽にアプリ作ってみるのもいいと思います。