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