WebRTCとは、「Web Real-Time Communication」の略称で、APIを経由して、ウェブブラウザやモバイルアプリでリアルタイム通信を実現する技術のこと。WebRTCのプロジェクトに参画しているのは、Apple、Google、Microsoftなど名だたるIT企業ばかりです。
対応しているブラウザは、PCでは、Google Chrome、Microsoft Edge、Mozilla Firefox、Safari、Operaになります。多くの人が日常的に使っている主要なブラウザでは、ほぼ対応していると言ってよいでしょう。
またスマートフォンなどモバイル環境で使用するOSでは、AndroidはGoogle Chrome、Mozilla Firefox、Opera Mobile、iOSはSafariです。
WebRTCは様々なシーンで利用されています。例えば、Web会議、Web面接、オンライン営業などのビジネスシーンではもちろん、オンライン教育、ボイスチャット、オンラインクレーンゲームなどでもWebRTCの仕組みが利用されています。
また、遠隔医療(オンライン診療)、オンラインフィットネス、IoT映像配信、VRライブ配信などにもその活用が広がってきています。
WebRTCは、様々なサーバーなどを組み合わせ、利用できるようにしています。
その1つに「シグナリングサーバー」があります。シグナリングサーバーは「通信相手に関する情報を得る」のが役割で、WebRTCにおいて欠かせないサーバーです。
そもそも相手とやり取りをしようにも、相手が誰でどこにいるのか判別できなければ、やりようがありません。そこで、シグナリングサーバーは相手のユーザー名を伝えることで、その他通信に必要な情報を収拾できるようにしているのです。
WebRTCを理解するうえで、とても重要な概念があります。それが「P2P」です。P2PはPeer to Peerの略になります。
P2Pの基本的な概念は「サーバーを介さず、端末同士が直接通信できるようにする」というものです。
"P2Pのような"やり取りを実現するために、必要となるのはシグナリングサーバーだけではありません。その他にも「STUNサーバー」や「TURNサーバー」などを利用します。
なぜ、これらのサーバーが必要となるのか。その理由は「NAT(=Network Address Translation)」の存在があります。
NATは、ネットワークアドレスを変換する機能です。
例えば、自宅でWi-Fiをつないだ際、端末にグローバルIPアドレスが付与されていないケースがあります。これは、プロバイダーから割り振られるIPアドレスが一つのため、複数の端末がインターネットに接続できるよう、ルーターがIPをLANの端末へ振り分けているためです。
そのため、端末で表示されるIPアドレスがグローバルIPアドレスと異なることがあります。しかし、これでは情報を送りたい側は困ってしまいます。なぜなら、通信したい先の本当のIPアドレスが変換されているため、わからないからです。
そこで、NATによって変換されたアドレスをセキュアに関連づける「NAT超え」が必要となります。その際に必要となるのが、STUNサーバーとTURNサーバーです。
STUNサーバーは外部ネットワークから見た際の自身のIPアドレスを教えてくれます。そのアドレスと自身のPCのアドレスを比較してNAT越えが必要かを判断します。
STUNサーバーを使えば、NAT超えが必要かどうかがわかります。実際に企業で導入しているネットワークにはNAT越えが必要な場合が多く、且つ、Firewallを超える必要もでてきます。
Firewallは、ほとんどのパソコンに組み込まれた基本的なセキュリティ対策の1つです。特に、企業においては、サイバー攻撃などのリスクを防ぐため、ポート制御やウイルス感染を防ぐ役割を担います。
しかし、Firewallをセキュアに超えられる仕組みがなければ、ビジネスシーンでP2Pのような通信ができません。そこで、考えられたのが「TURNサーバー」です。
TURNサーバーは、もともとVoIPやオンラインゲームで使用されていた仕組みです。TURNサーバーでは、通信の際に発生するストリームデータの受け渡しをするブリッジの役割を担います。
SFU(Selective Forwarding Unit)サーバーは、音声や映像をP2Pではなく、サーバー経由で行う技術です。配信者が直接相手に通信するのではなく、サーバーを間に挟むことで、動画の視聴者増加などによる、端末への負荷軽減を可能にします。これにより、リアルタイムで多くの視聴者に音声や動画を配信できます。
現代では、多拠点に同時に動画を届ける必要があります。YouTubeなどの動画サイトでもライブ配信が行われ、大量のユーザーが同時に視聴するケースが多々あります。
このような処理を行うには、一般ユーザーが使用する端末では不可能です。よりハイスペックで、大量の同時接続にも耐えうるような強力なサーバーが求められ、その傾向は今後もさらに続くでしょう。
多拠点同時配信を行う技術として、MCU(Multipoint Control Unit)があります。MCUは、SFUで用いるサーバーよりさらにハイスペックなマシンを用いて、音声や映像を合成したり、回線が細いユーザーに対してはビットレートを落として映像を送るなどができます。
しかしその分、処理の負荷がかかり、特にCPUのコア数が必要です。
SFUやMCUよりもさらに多くの拠点と接続できる仕組みとして、「仮想広域ネットワーク」を使ったサービスも存在します。
例えば、ライブ配信・ビデオ通話・音声通話API/SDKのAgoraは、HLSやFlashを使用せず、独自のプロトコルで超低遅延を実現。世界中のデータセンターにノードを構築し、自動で最適な経路を選択するアルゴリズムを備えています。
またWebRTCとも互換性を持ち、SFU型よりさらに規模が大きい通話などにも対応。P2Pより安定した通信を実現しています。
上記の通り、WebRTCを利用したシステムを自社開発するには、様々なサーバーの構築・管理が必要です。しかし、最近ではSDKを使って自社開発を極力少なくすることができます。
とはいえ、SDKにも様々な種類があり、選ぶのに迷うケースもあるでしょう。その際は、WebRTCの商用サービスについてまとめた記事がありますので、こちらをご覧ください。
ここまで、WebRTCの基本的な仕組みからサーバーの構成までお伝えしました。
動画・音声サービスは今後さらに発展していくと予想されます。
単なる1:Nの配信だけでなく、参加型ライブ配信などに代表される双方向性の高い映像配信や、ウォッチパーティのような仲間同士で楽しめるサービス、また、パフォーマー側にもオーディエンスの気持ちが伝わる熱量可視化のサービスなど、オンラインならではの体験が加速していくでしょう。 その際、WebRTCが必要になりましたら参考にしていただければ幸いです。