ども、@kimihom です。
今日 Twilio の IP メッセージング勉強会ってのに登壇して発表するんだけど、それに先立って色々調べていたら、リアルタイム技術の業界がめちゃ盛り上がっててビビったので記事にしてみる。
IoT 業界では割と騒がれているようなのだけども、Webやアプリエンジニアは"蚊帳の外"みたいに思ってるとほんと取り残されるな、と痛感した。
てかリアルタイムって何よ
本当の基本はチャットである。Aさんが「ヤッホー」って言った時に、Bさんがその「ヤッホー」をどのタイミングで受け取れるのかという話。これ、普通のHTTPを使うだけだと困難な話なんだよね。
てことで WebSocket っていうHTML5から出た新しいプロトコルを使うわけだ。そうすればHTTPとは別のコネクションを張ってイベントが発生した(Aさんが発言した)時点でイベントを取得する(Bさんが受け取る)ことができるようになる。
さて、この WebSocket って技術を自分で使って動かすこともできるんだけど、その実装を開発者みんながやるのは面倒だ。これのコードをうまくラッピング(SDK化)して、開発者が簡単にブラウザやスマホでイベントを取ってこれるような仕組みを作れるようにしようってのがリアルタイムサービスの基本的な考えだ。
乱立するリアルタイムサービス
ここまで激戦区な領域だとは知らなkった。調べれば調べるほどいろんなサービスがあることを知った。主な特徴とともに挙げてみる。
Firebase
Google が買収した MBaaS サービス。リアルタイムサービスの中では一番大きいと思う。Web/スマホ技術周りのSDKがめちゃめちゃ発達している。 React, Angular はもちろん、その他 SDK として提供されているので、簡単に作れるのがメリットだろう。コミュニティの大きさで選ぶならこれか。
メッセージをFirebaseないで保存してくれるので、例えばオフライン対応だとか、マルチデバイス対応だとかでメッセージの同期をやってくれるのがGood。ただそれだと機能として多すぎるって場合には他のシンプルなサービスを選んだ方がいいのかもしれない。
PubNub
Firebase とは一線を画して IoT 領域でそれなりに話題になっている模様。IoT でよく使われる技術(ラズパイとか?) 用のSDKがかなり提供されていることから、手軽に IoT でリアルタイムを実現することができる。とはいえ自分は IoT な人間ではないのでそこまで詳しくはないけど、そういうことらしい。
Milkcocoa
日本のリアルタイムサービス。シンプルで日本語ドキュメントってのがやっぱりいいところなのではないかな。前からサービスは聞いてたけど詳しく調べたことがないので、詳しくは Qiita とかに沢山記事あるみたいだから見てみるといいかと。IoT よりな感じに見える?
Pusher
Heroku を使っていると割とリアルタイムといえば Pusher 的な感じだと思う。 WebSocket がで始めた時から存在するサービスなので個人的にも何回か使ったことがある。こちらは IoT よりかはアプリに特化しているように見受けられる。
IP メッセージング
Twilio の新サービス。今まで紹介した中では一番"チャット"を意識した設計になっている。Twilio自体がコミュニケーションサービスだからということもあるだろう。Firebase同様、メッセージはサービス側で保存されるので、オフラインやデバイス同期などもSDKの中に組み込まれているのがいい。
ちなみに CallConnect では IP メッセージングで電話のリアルタイムな制御をおこなっている。
Nifty Cloud
調べてみたら Nifty Cloud も同様の提供しているみたい。 MQTT と WebSocket って似てるけど IoT とかだと MQTT って感じっぽい。
結局、何を選べばいいのよ!?
自分で選んで決めてほしい。それぞれに強みとか特徴があるので、自分に合ったサービスを選ぶといいだろう。
IoT 領域じゃなくて、英語読むのはそんなに苦じゃない、メッセージとかあんまこっちで保存したくない 自分は Firebase か IP メッセージング かなといったところ。
所感
いや〜すごいね、の一言。 今までの Web2.0 な会社はリアルタイムなんてもちろん実現していないわけだし、そうした会社が思い切ってこういうリアルタイムサービスを使うってのにも時間がかかるだろうから、そこにスタートアップが漬け込む価値は十分ある。てか最近のスタートアップのほとんどはこういうの使って勝負してるパターンな気がするw それか人工知能()とか?
Webの基本概念をぶち壊す"リアルタイム"で日本を, 世界を変えるサービスを作ろうではないか。