ども、@kimihom です。本記事は Twilio Advent Calendar 17日目の記事です。
アドベントカレンダーのリストを見ると、Twilio Video に関して一件もなかったので書くことにする。個人的には今、Twilio Video は Twilio プロダクトの中で最もアツいと考えている。その理由を以下に説明する。
Twilio Video と WebRTC
Twilio Video は、裏側で WebRTC という技術が使われている。これは、HTML5 で新たに策定されたコミュニケーションのための技術だ。Twilio は PBX 機能のAPI 化と WebRTC の 2つに注力した結果、他社には真似されにくい技術を持つことによって爆発的に成長していったと考えている。そしてこれからも Twilio は WebRTC に注力していくことだろう。それが他の API を提供する競合他社との差別化になるはずだ。
そんな中、Twilio Video が Alpha 版として JavaScript SDK を正式リリースしたのが 今年の4月25日のこと。いよいよ、Twilio Video でも WebRTC を使った本格的なプロダクトを作られるようになった。WebRTC の重要な背景として、今年の後半になって Safari の WebRTC サポートが発表されたことが挙げられる。ゆくゆくは iOS(iPhone) でも正しく WebRTC が使えるようになれば、ほぼ全ての端末(PC/Tablet/SmartPhone)のブラウザが WebRTC に対応することになる。これは WebRTC が、プロダクト開発において大事なWhy Now? の条件をテクノロジーの側面で完全に満たしたと言える。
よって、来年 2018 年は、 ほぼ確実にWebRTC が流行る年になる。そこでまずは WebRTC の基本について簡単にご紹介する。
今でもよく使われている WebRTC の使い方として、P2P と呼ばれる PC と PC が直接繋がってビデオ通話やチャットを実現する方法がある。P2P により、遠隔の人とビデオ通話できる基本的な仕組みを WebRTC で実現できる。このタイプでおそらく一番有名なのは appear.in だろう。
この P2P 方式の欠点として、最大でも10人程度までの同時接続しか対応できないという問題がある。全ての PC へそれぞれのコネクションを繋げる必要があるため、指数的に接続数が増えていくことでネットワークが耐えられなくなってしまうのだ。今までの Twilio Video はこの P2P 型のネットワーク構成しか提供していなかったため、実質10人までの同時接続が限度だった。
そこで、 WebRTC SFU の登場だ。WebRTC SFU という中央に配信専用サーバーを設けることで、ブラウザのネットワーク負荷を劇的に下げることが可能になる。実質、サーバー側さえ強化していけば何人でも同時に接続できるビデオ通話(配信)を実現できる。
この中央サーバーをどうやって構成するかってのがとても難しく、普通のエンジニアが WebRTC SFU のサーバーを自前で持つというのも現実的ではなく、今までなかなか一般的に普及することはなかった。そんな中、2016年に Twilio は WebRTC SFU の Kurento という技術を買収した。その Kurento の技術を活用して Twilo Video をリニューアルしたのが、今年の4月ってわけ。
この話をより知りたい方は、今年の Signal 2017 の公演を見るといいと思う。私はこの公演を生で聴いてきた(自慢)。
Twilio Video SFU
現状の Twilio Video には、10接続が上限の Peer-to-peer Room
と 50接続が上限のGroup Room
という2つのタイプに分けられる。これが、まさに先述した P2P と WebRTC SFU の違いである。そして今後、Twilio の SFU サーバーのさらなる強化によって、 Group Room の上限はますます増やしていくことを Twilio は表明済みだ。つまり、今のうちから Twilio Video の Group Room でプロダクトを作れば、ゆくゆくは千,万単位の人が同時視聴可能なプラットフォームを作ることが可能になる。
実装方法は、今までの Twilio Video となんら変わらなく実装が可能で、デフォルトが Group Room になっているので困ることはないと思う。Group Room を使う他の利点としては録音/録画も可能になるという点がある。これは 間に SFU が挟まっているからこそできることだ。実際に Twilio Video を使って実装してみて重要だと感じたのは、 Status Callback を頻繁に活用するという点がある。基本的に Twilio Video での参加者情報や録画URLなど、全て Webhook を通じて情報を投げてくれるので、その情報を適宜保存していく必要がある。
KWC Twilio Video のページには、Coming Soon として データチャンネルがあるけど、これはもう最新の Twilio Video SDK を使えば利用が可能だ。データチャネルを利用することで、ビデオだけでなく文字やバイナリのリアルタイムなやりとりも可能になる。決してデータチャンネル自体が AR の技術だったりホワイトボードの技術ではないということに注意していただきたい。
さてここまで書いたなら、SkyWay との違いも書かなくてはならないだろう。 SkyWay 自体も、WebRTC SFU に対応した数少ない WebRTC API を開発者に提供している。しかも無料で始められるという魅力つきだ。
...えーっと Twilio の中の人じゃないから正直にいうと、日本語好きで配信の仕組みだけシンプルに提供したいって場合は、現時点では SkyWay の選択肢のほうが良いと思う。日本人コミュニティが強く、専門知識を有した日本語サポートがあり、SkyWay 専門のイベントも開催されるくらい盛り上がりを見せている。提供している API も洗練されて使いやすい。
それでもなぜ私が Twilio Video に注目すべきだと書いたのか。それは、世界レベルの Twilio テクノロジーによる Video 機能の拡張への期待と、Twilio Video だけでなく、他の Twilio プロダクトとの親和性が高いなどの点がある。Twilio は Video の機能だけでなく、開発に必要な様々な API を提供してくれている。これらをうまく組み合わせることで、 WebRTC SFU だけでは実現できないプロダクトが作れるのではないか。とりわけ一般電話公衆網と Twilio Video が繋がるといったことも技術的には可能なわけで、そういった Twilio ならではの部分をガンガン攻めていってほしいと思う。
終わりに
今回は概要に過ぎないけど、 Twilio Video になぜ注目すべきかについて説明した。
私はこの WebRTC 及び Twilio Video の可能性に半年前から気づき、開発を進めてきている。読者の方が今から何かを開発するにしても、Twilio の助けを借りれば遅くはないだろう。来年は多くの WebRTC SFU を活用したサービスが世に出回るはずだ。
このビッグウェーブに、あなたは乗るか乗らないか?