ども、@kimihom です。
今日は Twilio の新技術、 Twilio Sync についての勉強会があった。いやーこの技術は熱いね。まぁほとんどの方は聞いたことすらないと思うから、簡単にシェアしようと思う。
Twilio Sync とは
例えば、Google Spreadsheet のようなものを作りたいと思った時に、あなたはどんな技術を使うだろうか?同じログインしている他の人の行動をリアルタイムで通知できるような仕組みを作りたい場合にどういう技術を使うだろうか?
こういうリアルタイム系の処理ってチャットとかそういうリアルタイム全体なサービスだったら自前でやるべきなのはよく言われる話。でも例えばちょっとした通知やチャット以外の仕組みを作る時って結構大変だよね。(ぜひここは頷いていただきたい)
で、そのためにわざわざ Firebase? ってのもある。しかもあれはモバイル開発に特化している感が強く、Webサービスに通知機能を入れる程度で Firebase を入れたくない、と。そんな時に Twilio Sync だ。それか Twilio のコミュニケーションサービスを作ってるなら、間違いなく Twilio Sync だろう。
Twilio Sync は端的に言えば データ構造にそれなりの種類がある Firebase。 Firebase を使ったことがあるなら、あれは JSON だけでなんとかするって感じだろうけど、 Twilio Sync を使えばドキュメントの他に、リストやマップ形式のデータ構造を同期する仕組みを作ることが可能だ。あと料金体系が違っていて、完全従量課金。 Firebase のようにしばらくしたら有料に切り替えるなんて面倒なことはしなくていい。ここは一長一短。
以下、発表していただいた方の内容を簡単にまとめる
Twilio Sync を使ってみた (永嶋さん)
Twilio Sync でリアルタイム相談アプリを作ってみたとのこと。自身の相談ノウハウをベースにこのサービスを思いついたそう。ページに入った時点で、自分の相談できる内容を登録し自分から相手に相談を持ちかけることのできるサービスだ。せっかくなので乗っけてみる。そのうち消えるらしい。
https://consultation-with-twilio-sync.herokuapp.com/
んでこの裏が Twilio Sync を使ってどのように動いているのかを解説してくれた。サーバーサイドでシンプルな裏側のトークン生成をして、そのトークンを Twilio Sync JavaScript SDK に初期化するだけで利用可能になる。
では具体的にどのように実現するのか、というのをその後に説明してくれた。この情報はまだ Private Beta 版なのでそのうち出たら是非ドキュメントを見ながら作ってみよう。
Document は JSON。JSONがあるのになぜList, Map もあるか。それはそれ専門のイベントが定義できるから。例えば(itemAdded, itemRemove) など。またはそれ以外の便利メソッド(setなど)も用意されている。自分の作りたい機能において適切なデータ構造を設計することが可能だ。全体で意味を持つものは Document, 個別に意味を持つ場合は Map, List を使おうという話があって、いい表現だなと思った。
さらに Twilio Sync には Webhook(何か書き込んだ時に Webエンドポイントに通知できる) 仕組みがあったり、 Sync 時の Conflict 検知といったこともできる。その場合の対応処理を書くことができるので、より大規模な同時接続にも対応することができる。
Twilio Sync のテクノロジー(八木さん)
Twilio Sync はズバリ AWS 上で動いている Firebase
- Websocket によるリアルタイム通信(Websocket が使えない環境ではロングポールにフォールバックしてくれる)これは重要で、イントラ環境で Websocket 使えない環境とかはブラウザが発展しても普通に起きる。
- サーバ側でオブジェクトのステートを管理 (Websocketの最大の弱点=いつ切断されたのかわからない問題を回避)
- 1000接続とか同時に接続してもなんとかなる
Twilio Sync のデータ構造の使い分け
- Doc: ステートが管理されたオブジェクト
- Map: 順番を保証しないKVS
- List: 順番を保証したリスト
例えば: IoT の連携、リアルタイム情報共有(交通情報や位置情報などの情報管理) サーバー
Twilio Sync の課題
- 各種のアクセスコントロールは Firebase の方が強い。
- モバイルデバイスの対応
さすがは Twilio 界一のギークエンジニア八木さんの発表。中がどうなっていて、どういう使い分けをしたらいいかを詳しく教えてくれた。 Twilo Sync の課題であるモバイルデバイス対応がしっかりすれば、Firebase といい勝負になってくるのかなといったところ。現状は今後に期待といったところか。また、ライブラリやデモなどの環境も今後整備されていけば良いだろう。
そして Firebase は機能が巨大化しつつある(変な方向に行きつつある)ので、Twilio Sync はチャンスなんじゃないかという話をしていただいた。
[LT] IPメッセージングと Video でサービス作ってる話 (Me)
最後は私の簡単なLT。今個人で週末プロジェクトで作ってる、イカした新サービスを軽く公表した。
このスライドだけじゃ DEMO も見せられないのでなんのこっちゃと言われるかもしれないけど、どんなのを作ろうとしているのかは伝わったかと思う。
私はいろんな技術を極めるというよりも、サービスをユーザーに価値を届けられるまで作り込めることが自分の強みだと思っている。その発言通り、週末の時間を開発に当てて近々リリースする予定だ。
終わりに
最近の Twilio 勉強会は新サービスがどんどん出てくるのに追従して新サービスの勉強会をたくさん開催している。こういうのにいち早く触り、可能性に気づき、それに着手できるか。そこが成功を左右するものだと考えている。
別に Twilio に限った話じゃないけど、最近の Twilio 勉強会はそういうところの可能性を感じることができて面白い。全国で勉強会を開催しているっぽいので、最寄りで開催予定があれば今度参加してみてはいかがだろうか。