Baa sでお気楽アプリ開発

3,272 views

Published on

OSC 2013 北海道で公演した内容です。
BaaSを使ったアプリ開発として、ParseとMobile Backend Starterを比較しています。

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,272
On SlideShare
0
From Embeds
0
Number of Embeds
1,881
Actions
Shares
0
Downloads
10
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Baa sでお気楽アプリ開発

  1. 1. BaaSを使った
 お気楽アプリ開発 日本Androidの会北海道支部 まいむぞう / 大路裕介
  2. 2. 自己紹介 まいむぞう (本名 大路裕介) 札幌でAndroidやクラウド系開発をしている フリーランサーです。 日本Androidの会の北海道支部長やってます ずっとAndroidばかりやってるので、Android開発自体には 若干飽きてます。 最近はAR・コンピュータビジョン・電子工作・ウェアラブル コンピュータなどやってます。
  3. 3. 今日お伝えしたいこと BaaSって何? どこが便利なの? どうやって使うの?
  4. 4. クラウドの分類 •  クラウドにより提供される部分と、自社で構築する必要が ある部分をまとめると、以下のようになる 4 自社調達 アプリケーション 開発・実行環境 インフラ IaaS アプリケーション 開発・実行環境 インフラ PaaS アプリケーション 開発・実行環境 インフラ SaaS アプリケーション 開発・実行環境 インフラ ・自社ですべて構 築・所有 ・自由度が高いが、 構築に手間はかか る ・制限は多いがアプ リケーション開発に 専念できる ・必要なときに必要 な分だけ使える。コ ストも使った分だけ 一昨年ぐらいの AWSなど GAEなど
  5. 5. BaaSの登場 •  スマホ用アプリでは、、、 •  サーバに求められる機能は、どのアプリでも同じようなもの が多い •  スマホアプリ開発者はWeb系技術に慣れてない人も多い 5 自社調達 フロントエンド バックエンド 開発・実行環境 インフラ IaaS フロントエンド バックエンド 開発・実行環境 インフラ PaaS フロントエンド バックエンド 開発・実行環境 インフラ BaaS フロントエンド バックエンド 開発・実行環境 インフラ SaaS フロントエンド バックエンド 開発・実行環境 インフラ Backend as a Serviceの出現
  6. 6. BaaS界の巨人たち 6 Parse
  7. 7. BaaS界の巨人たち 7 Kinvey
  8. 8. BaaS界の巨人たち 8 StackMob
  9. 9. BaaS界の巨人たち 9 Appcelerator Cloud
  10. 10. BaaS界の巨人たち 10 Kii
  11. 11. BaaS界の巨人たち 11 appiaries
  12. 12. And more... 12 他にもたくさんの巨人がいるのですが、 おすすめはParseです ※個人的な感想です
  13. 13. どこが便利なの? 13 •  BaaSの主な機能としてParseを例に取ると •  サーバ側は管理画面からぽちぽちするだけ •  サーバ側の同じデータ、同じ機能に対して、複数の 環境(AndroidだけではなくiOSやWebなど)からアク セスできる •  それぞれの開発環境用のライブラリを呼び出すだけ で、クラウド上にデータを保存したり、ユーザ管理や アクセス制御が可能 •  AndroidやiOSなどのPush通知を簡単に送信できる •  TwitterやFacebookなどに簡単に投稿できる
  14. 14. コストメリット 14 •  Parseが提供している機能を自分で実装する場 合、Web系技術に詳しい人でも2~3人月程度 はかかりそうです。 •  すなわち少なく見積もっても100~200万円ぐら いの価値があります。
  15. 15. 具体例 15 •  Parseでデータをクラウドに保存するコード ParseObject gameScore = new ParseObject("GameScore"); gameScore.put("score", 1337); gameScore.put("playerName", "Sean Plott"); gameScore.put("cheatMode", false); gameScore.saveInBackground(); テーブル名 ハッシュ構造 (KeyとValue) 同期保存も非同期保存も Offline保存も可能
  16. 16. 具体例 16 •  Parseでデータをクラウドから取得するコード ParseQuery<ParseObject> query = ParseQuery.getQuery("GameScore"); query.getInBackground("xWMyZ4YEGZ", new GetCallback<ParseObject>() { public void done(ParseObject object, ParseException e) { if (e == null) { int score = object.getInt("score"); String playerName = object.getString("playerName"); boolean cheatMode = object.getBoolean("cheatMode"); } else { // something went wrong } } }); 保存した時のKey エラーの時は例外 オブジェクトが入る
  17. 17. Parseは万能ではない 17 •  この先ずっとParseが用意した機能だけで大丈夫? •  サーバ側はさわれないので機能拡張には限界が… •  定期的に実行したいサーバ側のコードがある場合 •  定期的にランキング集計や統計を取るような機能は苦 手 •  アプリの価値がデータ統計部分にあるなら伸び悩むか も… 心配な方はMobile Backend Starterも検討
  18. 18. Mobile Backend Starterとは 18 •  Mobile Backend Starter(MBS)は今年のGoogle I/O で発表されたBaaS(?)です
  19. 19. Mobile Backend Starterとは 19 •  機能的にもParseと同じ問題領域をサポートしていま す
  20. 20. 機能比較 機能 Parse Mobile Backend Starter 無償利用 ◯ ◯ Android ◯ ◯ iOS / .Net / OS X / Windows 8 /Windows Phone 8 / Unity / Web(JavaScript) ◯ △(RESTで可能) RESTful API ◯ △(コードが読めれば) Push通知 ◯ ◯ Analytics ◯ ☓ File送受信 ◯ ☓ ユーザ管理 / アクセス制御 ◯ ◯(google acount) Twitter / Facebook連携 ◯ ☓ サーバサイドロジック △ ◯ サーバ側機能拡張 ☓ ◯
  21. 21. MBSの使い所 21 •  サーバはGoogle App Engine(GAE)です。MBSは、GAE上で 稼働するオープンソースのサーバアプリケーション+クライアン トライブラリという形で提供されています。 •  すなわち、Parseのように完成形のサーバが稼働しているわけ ではなく、サーバとして使えるひな形が提供されていることにな ります。 •  最低限の機能しか搭載されていませんが、GAEさえ使えれ ば必要に応じて機能拡張可能です。制限はありません。 •  Google Cloud Endpointsを使っているのでAndroidだけで はなく、iOSやWebもサポート可能
  22. 22. Google Cloud Endpoints 22 •  GAEを使ったRPCっぽいことをするフレームワーク 1.Endpointsを使って サーバコードを書くと 2. http://ホスト/post/(id) などエンドポイントができて (RESTful API) 3. 各OS用のクラ イアントコードを 自動生成できる
  23. 23. 具体例 23 •  MBSのサーバ側のコードの抜粋です @ApiMethod(path = "CloudEntities/insertAll", httpMethod = "POST") public EntityListDto insertAll(EntityListDto cdl, User user) throws UnauthorizedException { SecurityChecker.getInstance().checkIfUserIsAvailable(user); return CrudOperations.getInstance().saveAll(cdl, user); } @ApiMethod(path = "CloudEntities/{kind}/{id}", httpMethod = "GET") public EntityDto get(@Named("kind") String kindName, @Named("id") String id, User user) throws UnauthorizedException, NotFoundException { SecurityChecker.getInstance().checkIfUserIsAvailable(user); return CrudOperations.getInstance().getEntity(kindName, id, user); }
  24. 24. 具体例 24 •  MBSのクライアント側のコードの抜粋です CloudEntity newPost = new CloudEntity("Guestbook"); newPost.put("message", "message from EditText"); getCloudBackend().insert(newPost, null);
  25. 25. まとめ 25 そろそろいい時間なのでまとめます。 次の3つを覚えて帰って下さい。
  26. 26. まとめ 26 1. Parseサイコー 機能が充実しているうえに、無料もで使えます
  27. 27. まとめ 27 2. あなたのアプリの価値が サーバ側にもあるのならば Mobile Backend Starterも 検討して
  28. 28. まとめ 28 3.でもMobile Backend Starterを 使いこなすには、 結構スキルが必要だよ

×