▶ 技術めも
Parse - Mobile Backend as a Service
Parse とは
スマホアプリでサーバサイドを簡単にクラウド上で作れる代表的なサービス(MBaaSと言われてます)。
サーバサイドの知識が無くても簡単に下記等が行えます。
まさにアプリエンジニアの救世主!
- ユーザー管理
- PUSH通知
- データストレージ(KVS)
- 課金システム
- SNS連携
- メール送信
個人的な MBaaS (Parse) のイメージ
①② iOS等のアプリケーションエンジニアは、Parse SDK を使って必要機能を持つオブジェクトを生成
③ そのオブジェクトに対して、データ保持、PUSH通知、SNS認証等の操作を行う
しかして、その実態は!
オブジェクトが Parse サーバのテーブル(Class)、PUSH通知機能、SNS認証機能等を操作(APIコール)!
アプリエンジニアが(あまり)サーバサイドを気にせずに、サーバサイド連携アプリケーションを作成可能!
オフィシャルURL
- オフィシャルサイト
- チュートリアル
- デフォルトで用意されているAPI
https://parse.com/docs/rest#summary
→ これらをアプリケーションから叩いて処理を行う場合、基本的にサーバサイドのプログラムは不要
- 自作API(Cloud Code)
https://parse.com/docs/cloud_code_guide
- 自作APIで使用出来る拡張モジュール(Mailgun, Mandrill, Twilio, Stripe, etc)
https://parse.com/docs/cloud_modules_guide#cloud_modules
- いろいろな言語のライブラリ(SDK)
https://parse.com/docs/api_libraries
おすすめURL(主に Cloud Code)
- Parseにサーバーサイドのコードを書いてiOSアプリから呼ぶ
http://qiita.com/shu223/items/c2222e4e1f87d473b23a
- [MBaaS] Parseで簡単モバイルバックエンド構築 – 【ざっと概要】
http://dev.classmethod.jp/cloud/parse-introduction-1/
- Parse - Cloud Code - Cloud Functions
http://murayama.hatenablog.com/entry/2014/01/15/223630
- PHPからParseでPush通知
http://tech.aainc.co.jp/archives/7155
- Node.jsのmoduleの書き方の基本: 別のファイルのオブジェクトや関数をrequireして使う方法
http://memo.yomukaku.net/entries/jbjiYnP
- Node.js v0.4.12 Manual & Documentation
http://nodejs.jp/nodejs.org_ja/docs/v0.4/api/modules.html
- Parse の Cloud Code を試す
http://nirasan.hatenablog.com/entry/2013/09/30/133401
DashBoard
Data Browser
Class(テーブル)を閲覧、編集するGUI画面
Cloud Code
開発環境 初期設定方法
https://parse.com/docs/cloud_code_guide#started
※ 最初 Python のエラーが出て動かなかった。古い(特定)バージョンの Python では動かない模様。Python 2.7.3 にアップデートして解決しました
適当なサーバ上でプログラム(JavaScript)を開発
→ 開発は作成したプログラムを Parse に deploy する
$ perse deploy
Parse は node.js ベースで動いているっぽいので、開発には node.js の情報が役に立ちます。
Hello Paese
このようなサンプルアプリを deploy した場合
Parse.Cloud.define("hello", function(request, response) {
response.success("Hello Parse!");
});
このような API で実行ができる
※ HTTPヘッダに Parse-Application-Id、Parse-REST-API-Key が必要です
https://api.parse.com/1/functions/hello
成功すると結果の JSON が帰ってきます
{"result":"Hello Parse!"}
API テストツール
安価でつくってみたので、使ってください。
Cloud Code を使ってみる
これに挑戦
https://parse.com/docs/cloud_code_guide#functions
Cloud Code で標準以外の「オリジナルAPI」をつくってみましょう
この「映画の平均スター数」を応答するサンプルプログラムを parse deploy
Parse.Cloud.define("averageStars", function(request, response) {
var query = new Parse.Query("Review");
query.equalTo("movie", request.params.movie);
query.find({
success: function(results) {
var sum = 0;
for (var i = 0; i < results.length; ++i) {
sum += results[i].get("stars");
}
response.success(sum / results.length);
},
error: function() {
response.error("movie lookup failed");
}
});
});
curl を使用して API アクセス
$ curl -X POST \
> -H "X-Parse-Application-Id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
> -H "X-Parse-REST-API-Key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
> -H "Content-Type: application/json" \
> -d '{"movie":"The Matrix"}' \
> https://api.parse.com/1/functions/averageStars
あれ?
{"result":null}
テーブル(Class)が無いですね (´・ω・`)
Data Browser から作成します。
「New Class」で「Review Class」を作りました。
「movie」カラムと「stars」カラムを追加します。
データを手で入れます。Starsは普通は整数だと思うんですが、Number型で少数以下も入るかテスト
curl を使用して API アクセス 再トライ
$ curl -X POST \
> -H "X-Parse-Application-Id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
> -H "X-Parse-REST-API-Key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
> -H "Content-Type: application/json" \
> -d '{"movie":"The Matrix"}' \
> https://api.parse.com/1/functions/averageStars
成功した模様です
{"result":4.433333333333334}