GAEjでChannelAPI利用時の端末~サーバー間接続をしっかり管理しよう - その1
まず、GoogleAppEngine には、いわゆる昨今のWebSocketのようにサーバーからプッシュし、ネット閲覧中の画面を他動的に変更する方法が用意されています。それをChannelAPIといいます。
難しく言いましたが、つまり、ブラウザを立ち上げてそのままほったらかしておいても、サーバー側から何か情報を与えて画面上の情報を変更できる機能を作ることができるのです。
例えば、チャットだったら、ブラウザを立ち上げておけば誰かがメッセージを送信した際に、勝手に画面にそのメッセージが表示されたり、今何か買いたいものを探している人に効率的にマッチした広告を見せてあげたりといったことが可能になるのです。
一番のポイントとしては、サーバーという機械が勝手に何か情報をスマホなどの端末に与えるのではなく、リアルタイムにどこか別の場所にいる何者か人間が情報を与えることができることではないかと思います。
リアルタイムかつインタラクティブにゴージャスな情報を与え合うことができる技術として個人的にはかなり今後イクんじゃないか?と期待しております。(与える側のインセンティブをどうするとかビジネス的な観点はあまり得意でなく考えてないのですが笑)
前置きは長くなりましたが、このWebSocketやChannelAPIなどざっくりいうと、
端末⇔サーバー⇔端末
のように、今どの端末が接続されているかをサーバー自身が管理することで、適切な端末に対して適切なメッセージを送ることができるわけです。
この「サーバーで管理する」という部分、用途には依りますが、個人で実装しなければならないのがとても面倒です!
例えばチャットアプリを作った場合の必要条件は、
・同じ部屋に入った人だけにメッセージが送信されること
→同じ部屋に入っている人をサーバーで管理する必要
・ブラウザを切った場合に部屋から退場されること
→ブラウザがOFFになったという通知をサーバーが適切に受け取ることができること
辺りになると思うのですが、案外これがかったるい!
自分がアプリを作っていたところ、この辺に面倒くささを感じたので、ちょっとサンプルアプリとソースを公開してみようと思ったので、ここにそれを紹介しようと思いました。
次回に順を追って詳しく記載しようと思うのですが、とりあえずソースだけ読みたい場合は、
直でここを見てもらえればと思います!