『ReDois』は、WebRTC技術を利用しリアルタイム配信を実現します。
新型コロナウイルス感染者数は未だ増加傾向にあります。
コロナ禍の終息に向かえるよう、ひとり一人の感染予防対策を確りと心掛けましょう。
今回は弊社で開発を行っております、
Webブラウザでリアルタイムにコミュニケーションを行うためのソフトウェア「ReDois」で使われている
『WebRTC(Web Real Time Communication)』の技術についてご紹介いたします。
WebRTCとは
WebRTC(Web Real Time Communication)は、Webブラウザ上で、音声・映像などのデータをリアルタイムにやり取りするためのHTML5の規格です。
Webブラウザ同士がサーバを経由せずP2Pで通信します。
シグナリング
P2P通信をするために、お互いのIPアドレス・ポート番号などの接続先情報や、送受信できる音声・映像の形式を知る必要があります。
この情報を交換するとことをシグナリングといい、シグナリングサーバを介して行います。
ICE
多くの場合、端末はLANの中にいるため、NAT(Network Address Translation)されたプライベートなIPアドレスしか持っていません。
ですが、インターネットを経由する場合はプライベートなIPアドレスでは通信できないため、自分のグローバルIPアドレスや通信可能なポートを知る必要があります。
このNATを越えるための仕組みをICE(Interactive Connectivity Establishment)といい、STUNサーバやTURNサーバを使って行います。
WebRTC SFUとは
WebRTC SFU(Selective Forwarding Unit)は、通常はP2Pで行うWebRTCをサーバを経由して通信させる技術です。
ReDoisはWebRTC SFUの機能を具備しています。
WebRTC、WebRTC SFUのメリット
WebRTC、WebRTC SFUを使うメリットを説明します。
WebRTCのメリット
WebRTCを使うことの一番のメリットは、HTMLの標準規格であるため、独自アプリケーションのインストールが不要でWebブラウザのみでリアルタイム通信を実現できることです。
規格自体は2012年に発表されましたが、各ブラウザの実装が追い付いていませんでした。
2019年8月時点で、IEを除くと対応ブラウザのシェアが98.4%以上になっています。
WebRTC SFUのメリット
Web会議などで多くの端末と接続した場合、 P2Pの場合は端末それぞれが他の全ての端末との接続を管理する必要があります。また、接続可能な台数も端末の性能に左右されます。
WebRTC SFUを使用した場合、端末はSFUと接続するだけなので、端末の管理が容易になります。
また、端末側で接続するセッションの本数が減るため、P2Pでは実現できなかった数の端末での同時接続が可能になります。
また、Webアプリケーション開発の観点では、SFUを使って接続をまとめた方がJavascript側の実装が簡単になります。
WebRTC、WebRTC SFUのデメリット
WebRTC、WebRTC SFUを使うデメリットもあります。
WebRTCのデメリット
- 各ブラウザの実装が完全に一致しておらず、ブラウザによって微妙に違いあるため、シグナリングの記述やJavascriptの実装に違います。
⇒今後、統一に向かっているためこの違いは解消されていくと予想されます。
⇒ReDoisではシグナリング時のブラウザごとの差分を吸収し、できる限り接続ができるようにしています。
WebRTC SFUのデメリット
- P2Pでは不要の、サーバが必要となります。
- サーバを経由する分、P2Pに比べて遅延が発生します。サーバのロケーションや通信状況によりますが、100ms~200ms程度遅延します。