Parse便利過ぎワロタ. どんだけ時代遅れの記事なのと言われようとも,この便利さを伝えずにはいられないのでエントリを書きます.

2tchの通知システム

今まで,SQLite + Rubyで,自前の通知システムを作って運用していましたが,通知システムのバックエンドをParse + node.jsでリプレースしたら,コードがほとんどなくなってしまいました.

今までの自前のシステムは,大ざっぱに言うと,

  1. 登録用のcgi
  2. データベースのSQLiteのコントローラ
  3. スレッドの勢い計算のためのモジュール
  4. PNSを定期的に送信するモジュール

から構成されていましたが,Parseを使ったら,

  1. (ほぼ)スレッドの勢い計算のためのコントローラ

だけになってしまいました.

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程度お金を支払う必要が有るようです. そこまでユーザがいないのでピンとこないのですが,割と妥当なお値段なんでしょうかね・・・・・. とにかく,そこまでユーザを集めてから悩むべきなのかと思いますです.

image

結論

おすすめです.通知サービスを,まず使ってみたい人はParseを使うべきです!