Upload
yusuke-ohmichi
View
2.814
Download
2
Embed Size (px)
DESCRIPTION
OSC 2013 北海道で公演した内容です。 BaaSを使ったアプリ開発として、ParseとMobile Backend Starterを比較しています。
Citation preview
BaaSを使ったお気楽アプリ開発
日本Androidの会北海道支部
まいむぞう / 大路裕介
自己紹介
まいむぞう (本名 大路裕介)
札幌でAndroidやクラウド系開発をしている フリーランサーです。 日本Androidの会の北海道支部長やってます
ずっとAndroidばかりやってるので、Android開発自体には 若干飽きてます。 最近はAR・コンピュータビジョン・電子工作・ウェアラブル コンピュータなどやってます。
今日お伝えしたいこと
BaaSって何? どこが便利なの? どうやって使うの?
クラウドの分類
• クラウドにより提供される部分と、自社で構築する必要がある部分をまとめると、以下のようになる
4
自社調達
アプリケーション
開発・実行環境
インフラ
IaaS アプリケーション
開発・実行環境
インフラ
PaaS アプリケーション
開発・実行環境
インフラ
SaaS アプリケーション
開発・実行環境
インフラ
・自社ですべて構築・所有
・自由度が高いが、構築に手間はかかる
・制限は多いがアプリケーション開発に専念できる
・必要なときに必要な分だけ使える。コストも使った分だけ
一昨年ぐらいの
AWSなど GAEなど
BaaSの登場
• スマホ用アプリでは、、、 • サーバに求められる機能は、どのアプリでも同じようなもの
が多い
• スマホアプリ開発者はWeb系技術に慣れてない人も多い
5
自社調達 フロントエンド
バックエンド
開発・実行環境
インフラ
IaaS フロントエンド
バックエンド
開発・実行環境
インフラ
PaaS フロントエンド
バックエンド
開発・実行環境
インフラ
BaaS フロントエンド
バックエンド
開発・実行環境
インフラ
SaaS フロントエンド
バックエンド
開発・実行環境
インフラ
Backend as a Serviceの出現
BaaS界の巨人たち
6
Parse
BaaS界の巨人たち
7
Kinvey
BaaS界の巨人たち
8
StackMob
BaaS界の巨人たち
9
Appcelerator Cloud
BaaS界の巨人たち
10
Kii
BaaS界の巨人たち
11
appiaries
And more...
12
他にもたくさんの巨人がいるのですが、
おすすめはParseです
※個人的な感想です
どこが便利なの?
13
• BaaSの主な機能としてParseを例に取ると • サーバ側は管理画面からぽちぽちするだけ
• サーバ側の同じデータ、同じ機能に対して、複数の環境(AndroidだけではなくiOSやWebなど)からアクセスできる
• それぞれの開発環境用のライブラリを呼び出すだけで、クラウド上にデータを保存したり、ユーザ管理やアクセス制御が可能
• AndroidやiOSなどのPush通知を簡単に送信できる
• TwitterやFacebookなどに簡単に投稿できる
コストメリット
14
• Parseが提供している機能を自分で実装する場合、Web系技術に詳しい人でも2~3人月程度はかかりそうです。
• すなわち少なく見積もっても100~200万円ぐらいの価値があります。
具体例
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
• 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
エラーの時は例外 オブジェクトが入る
Parseは万能ではない
17
• この先ずっとParseが用意した機能だけで大丈夫? • サーバ側はさわれないので機能拡張には限界が…
• 定期的に実行したいサーバ側のコードがある場合 • 定期的にランキング集計や統計を取るような機能は苦
手
• アプリの価値がデータ統計部分にあるなら伸び悩むかも…
心配な方はMobile Backend Starterも検討
Mobile Backend Starterとは
18
• Mobile Backend Starter(MBS)は今年のGoogle I/Oで発表されたBaaS(?)です
Mobile Backend Starterとは
19
• 機能的にもParseと同じ問題領域をサポートしています
機能比較
機能 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連携 ◯ ☓
サーバサイドロジック △ ◯
サーバ側機能拡張 ☓ ◯
MBSの使い所
21
• サーバはGoogle App Engine(GAE)です。MBSは、GAE上で稼働するオープンソースのサーバアプリケーション+クライアントライブラリという形で提供されています。
• すなわち、Parseのように完成形のサーバが稼働しているわけではなく、サーバとして使えるひな形が提供されていることになります。
• 最低限の機能しか搭載されていませんが、GAEさえ使えれば必要に応じて機能拡張可能です。制限はありません。
• Google Cloud Endpointsを使っているのでAndroidだけではなく、iOSやWebもサポート可能
Google Cloud Endpoints
22
• GAEを使ったRPCっぽいことをするフレームワーク
1.Endpointsを使って サーバコードを書くと 2. http://ホスト/post/(id)
などエンドポイントができて (RESTful API)
3. 各OS用のクライアントコードを自動生成できる
具体例
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
• MBSのクライアント側のコードの抜粋です
CloudEntity newPost = new CloudEntity("Guestbook");newPost.put("message", "message from EditText");getCloudBackend().insert(newPost, null);
まとめ
25
そろそろいい時間なのでまとめます。 次の3つを覚えて帰って下さい。
まとめ
26
1. Parseサイコー
機能が充実しているうえに、無料もで使えます
まとめ
27
2. あなたのアプリの価値が サーバ側にもあるのならば Mobile Backend Starterも
検討して
まとめ
28
3.でもMobile Backend Starterを 使いこなすには、
結構スキルが必要だよ