Parse使ったらPNSのコードがほとんどなくなった件。
Parse便利過ぎワロタ. どんだけ時代遅れの記事なのと言われようとも,この便利さを伝えずにはいられないのでエントリを書きます.
2tchの通知システム
今まで,SQLite + Rubyで,自前の通知システムを作って運用していましたが,通知システムのバックエンドをParse + node.jsでリプレースしたら,コードがほとんどなくなってしまいました.
今までの自前のシステムは,大ざっぱに言うと,
- 登録用のcgi
- データベースのSQLiteのコントローラ
- スレッドの勢い計算のためのモジュール
- PNSを定期的に送信するモジュール
から構成されていましたが,Parseを使ったら,
- (ほぼ)スレッドの勢い計算のためのコントローラ
だけになってしまいました.
iOS側のコントローラは,自前のcgiを非同期で叩くなどの色々面倒くさいコードがありましたが,Parse SDKを使ったらさらっとできてしまいました.
Parse?
Parseは,大分前から流行っているBaaS(なぜか英語版がない)というヤツです. Push Notificatoionによる通知,簡易データベース,Parseのバックエンドを使ったデバイス間のデータ共有などの機能を提供してくれるサービスです. ParseはすでにFacebookに買収されています. どんなのかを体験したい場合は,Parseのサイトにいって,アカウントを作成し,ドキュメントを見るといいでしょう. ドキュメントがすごく充実しているので,私は,ドキュメントを眺めるだけで,Push Notificationの通知のところまでさらっと作ることができました.
Push Notificationが簡単に実装できる.
Parse SDKを使って,ユーザのデバイスのPush NotificationのtokenをParseのバックエンドに登録するようにアプリ側で実装しておけば,ParseのWebフロントエンドからアプリに対してメッセージを送ることが出来ます. 無論,Parseのサーバに,AppleのCertification Center作った鍵等を登録する必要が有ります. Parseのサイト経由で,PNSを登録したユーザのレコードをブラウザで確認,編集したり,ユーザにキャンペーンやアップデートを促すようなメッセージを同様にブラウザから簡単に送ることができます. 当然,Parse APIを通じて,通知等の処理を外部のホストから容易にParseに依頼できるところがかなり素敵です. tokenの登録などを容易に実行するためのSDKも用意されており,デバイス側のコードはきわめて綺麗に実装できます.
自前でこういったシステムを組むと登録サーバからクエリでtokenを舐めて,ペイロードを作って・・・・みたいなことをブラウザ経由でできるようにするだけでもう,大仕事です.
SDK,たとえばJavascript
Parse APIを叩くために,色々な言語,環境向けにSDKが用意されています. 私は,node.jsでサーバを実装したので,Javascript SDKを使い,特定の条件のデバイスに通知を送るコードを実装したりしました. Push Notificationのtokenを保存するデータベースには,オリジナルのカラムを追加することが出来るため,通知条件などにそれらを利用することが出来ます.
たとえば,valueというカラムの値がthreshold以下の端末にだけ通知を送る場合は,以下のようなコードになります.
var Parse = require('parse').Parse;
Parse.initialize("your key", "your key");
var query = new Parse.Query(Parse.Installation);
query.lessThanOrEqualTo("value", parseInt(threshold));
Parse.Push.send(
{
where: query,
data: PushNotification.payload(info)
},
{
success: function() {
},
error: function(error) {
console.log(error)
}
}
);
Parse SDKを使えば,通知オブジェクトも抽象化して扱えるのですが,自前で細かく設定したい場合は,以下のようにしてPayloadを作成することもできます.
var payload = {
'aps':{
"alert":{
"loc-key":"PNS_FORMAT",
"loc-args":['hoge', 'bar'],
"action-loc-key":"Open"
}
},
"Info": {
'name':'sonson',
'value':256
}
};
PNSを簡単に使える他のサービスは?
他にもたくさんあるそうです. 私は,ひとつめにParseに手を付けたため,また満足のいくサービス内容だったので,使い続けています. 本当は,料金とか,PNSを大量に送ったときのパフォーマンスとか,そういうのを考えないといけないのでしょうけど・・・. 私は,とりあえず,Parseでいきます.
気になるお値段
当然!Parseはタダではありません. ParseのPricingのページにいくと,料金を確認することが出来ます. Push Notificationに注目すると,無料で1ヶ月で100万ユニークユーザに通知を打てるようです. それ以上通知を送るためには,1000人ごとに$0.05程度お金を支払う必要が有るようです. そこまでユーザがいないのでピンとこないのですが,割と妥当なお値段なんでしょうかね・・・・・. とにかく,そこまでユーザを集めてから悩むべきなのかと思いますです.
結論
おすすめです.通知サービスを,まず使ってみたい人はParseを使うべきです!