「Android アプリのガチ開 発者が Mobile Backend Starter を使ってみた」
Upcoming SlideShare
Loading in...5
×
 

「Android アプリのガチ開 発者が Mobile Backend Starter を使ってみた」

on

  • 8,292 views

 

Statistics

Views

Total Views
8,292
Slideshare-icon Views on SlideShare
8,082
Embed Views
210

Actions

Likes
26
Downloads
26
Comments
0

3 Embeds 210

https://twitter.com 86
http://blog.kita-o.com 74
https://www.blogger.com 50

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    「Android アプリのガチ開 発者が Mobile Backend Starter を使ってみた」 「Android アプリのガチ開 発者が Mobile Backend Starter を使ってみた」 Presentation Transcript

    • 「Android アプリのガチ開 発者が Mobile Backend Starter を使ってみた」 あんざいゆき(@yanzm)
    • • blog : Y.A.M の雑記帳 • y-anz-m.blogspot.com • twitter : @yanzm (やんざむ) • Android女子部副部長 • uPhyca Inc. (株式会社ウフィカ) あんざいゆき
    • Mobile Backend Starter とは Google Cloud Platform を使った Android 用のバックエンドをサーバー側 のコードを書かずに構築できるサービス
    • Mobile Backend Starter とは • サーバ側のコードを書かなくていい • Google App Engine を使っているのでスケー ラビリティが高い • 認証機能が組み込まれている • Google Cloud Messaging(GCM)機能が組み 込まれている • 継続クエリ
    • Mobile Backend Starter とは
    • • Deploy → App Engine に Mobile Backend がデプロイされる • http://mobile-**********.[Project ID].appspot.com = 設定 • https://github.com/GoogleCloudPlatform/solutions- mobile-backend-starter-java Google Cloud Console Deploy 設定 Android 用のライブラリ兼サンプルアプリ
    • デモ
    • http://bit.ly/13Z09YP 続きは私のブログにて
    • MBSの使い道
    • Android アプリ開発者にとっての MBS • 簡単なのはわかった • 使い道は? • Google Cloud Messaging • データ永続化(?) • クラッシュログ収集 • センサーデータ収集
    • Google Cloud Messaging とは • Android デバイスに push 通知を送れる機能 • GCMと略す • 小さいデータを送ることができる • サードパーティのサーバーが必要 Google Play サーバー アプリ device Google Play アプリ サードパーティ サーバー push
    • GCM の使い道 •同期のトリガー(GCM を受取ったら サーバーに新しいデータを取りに行く) •チャット・SNS •お知らせ(配信)機能 •アプリ状態の同期 •位置情報の共有...
    • データの永続化 • オフライン対応必須 = デバイスの DB にもデータ 保存 • BackupAgent というバックアップ機能が Android にすでにある • 同期処理がめんどい(コンフリクトしたら...) • ゲストブック的なものでオフライン対応を捨てる ならあり(?)
    • クラッシュログの収集 • すでにリリーズ済みのアプリに MBS を組み込む 場合に一番ありうる • Google Play にもクラッシュログ収集の機能があ るが、ユーザーが送信ボタンを押さないといけな い • Google Analytics はクラッシュログは収集してく れない
    • センサーデータの収集 • ライフログ的な使い方 • 多くのデバイスからデータを集めるような場合 に向いている • 定期的にスマホで写真とってアップするなど
    • アプリ内課金の検証に使えるか? • サーバーに詳しくない個人アプリ開発者はけっ こう困ってると思う(セキュリティ対策はコス パだからね) • アプリの公開鍵をサーバー側に持たせる必要が ある = サーバー側のコードをいじらないと無理 • クライアント・サーバー間でセキュアなハンド シェイクが必要
    • ゲームに使えるか? • サーバー側のコードを変えられないので不可能 • ユーザーデータの保持には Google Play Services のゲーム用機能が利用できる • ゲーム系は悪意のあるユーザーを考慮しないと いけないので難しい
    • MBS の使い道まとめ •GCMによる通知 •ログ収集 •データ収集 •ユーザー間のデータ共有(位置データな ど)
    • MBS の Android Client Library
    • Android アプリ用の SDK やライブラリ を作るときに押さえておきたいこと
    • サンプルアプリは必要? •ぜひ作りましょう! •でもサンプルアプリとライブラリがバン ドルしているのはよくない
    • サンプルアプリは必要? • Android に依存しない部分 → jar • Android に依存する部分 → Library Project • http://developer.android.com/tools/ projects/projects-eclipse.html • サンプルアプリは jar や Library Project を利 用する
    • ライブラリ作成時の注意点 • bin/ gen/ はリポジトリや zip に入れない • github が生成してくれる .gitignore には bin/ gen/ が含まれている • Build path の設定に注意 • リソース(Library Project)の扱いに注意 • 画面回転に注意(ライブラリでメモリリークと かつらい!)
    • Build path の設定に注意 • project のインポート時に endpoint-libs が build path として認識されないことがある • project 直下の src 以外にコードがあるとめんどいかも [Java Build Path] の [Source] にendpoint-libs/ libmobilebackend-v1/mobilebackend/mobilebackend- v1-generated-source を追加
    • Library Project とは • 別のプロジェクトをそのままライブラリとして 利用できる機能 • Library Project とアプリケーションで同じリ ソースIDのものがあるとどちらかが無視される ので、ライブラリ側はパッケージ名などで prefix をつける • Action Bar Sherlock などが Library Project 形式のライブラリとして有名
    • Library Project とは アプリ library Project jar Activity Service Receiver res
    • MBS の Android Client Library を 改造してみた
    • サンプルアプリ Library Project
    • GCMの register が うまく動かない... GCM の register をしないようにしたら動いた
    • com.google.android.gcm は deprecated • GCM は Google I/O 2013 で発表された Google Play Services に含まれる ようになった × ○
    • public class GCMReceiver extends BroadcastReceiver { private final static String GCM_KEY_SUBID = "subId"; private final static String GCM_TYPEID_QUERY = "query"; public static String getRegistrationId(Context context) { GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(context); String registrationId = null; try { registrationId = gcm.register(Consts.PROJECT_NUMBER); } catch (IOException e) { e.printStackTrace(); } return registrationId; } @Override public void onReceive(Context context, Intent intent) { // decode subId in the message String subId = intent.getStringExtra(GCM_KEY_SUBID); Log.i(Consts.TAG, "onMessage: subId: " + subId); String[] tokens = subId.split(":"); String typeId = tokens[1]; // dispatch message if (GCM_TYPEID_QUERY.equals(typeId)) { CloudBackendAsync.handleQueryMessage(tokens[2]); }
    • <application android:allowBackup="false" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > ... <receiver android:name="com.google.cloud.backend.android.GCMReceiver" android:exported="true" android:permission="com.google.android.c2dm.permission.SEND" > <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <action android:name="com.example.mbssample.permission.C2D_MESSAGE" /> <category android:name="com.example.mbssample" /> </intent-filter> </receiver> </application>
    • GCM 動いた (*´ω`*)
    • まとめ • サーバー側を書かずに GCM 使えるのは便利 • 1分しないくらいで push が来る(10秒とか速 い) • 認証機能が組み込まれているのもありがたい
    • MBS へのお願い • 簡単に GAE に移行したい = サーバー側のコード も少しいじりたい • 画像アップロードのサンプルがほしい • Android 2.x でも使いたいなー(今は API Level 16以上) • ぜひ Library Project にしてください • Google Play Services の GCM 使ってね
    • その他 • API とか GAE コンソールとか API Key とかが全 部 Google Cloud Console から行けるようにまと まったのはとてもいい • developers.google.com/cloud/ 以下のコンテン ツが Google Cloud Console に対応してないのが 残念!Google の人がんばって!
    • ありがとうございました