baa sでお気楽アプリ開発

Post on 28-May-2015

2.814 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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を 使いこなすには、

結構スキルが必要だよ

top related