WebRTCとはどんな技術?仕組みやWebSocketとの違いを説明。
この記事では、ウェブアプリケーションにビデオチャット機能を実装するために欠かせないWebRTCについてその仕組みとユースケースなどを説明したい。
WebRTCの接続を異なるブラウザ間でWebRTCを使ったテストを実装するのは比較的簡単で予備知識が無くとも一日あれば実装できる。
実際に実装例は近いうちに別の記事で紹介する予定なので楽しみに待っていてほしい。
WebRTCとは?
WebRTCは「Web Real-Time Communication」略で、MS-TeamsやSkypeのようなビデオチャット機能を実現するための規格。
WebRTCはブラウザにプラグインなどをインストールせずともすぐに使用できるうえに、Chorme・MS Edgeといった主要なブラウザのすべてでサポートされれいるため、現在ではWebアプリにてチャットを実装するためのスタンダードな技術となっている。
また通信の際にはデータを暗号化するので、セキュリティの面でも優れている。
WebRTCはウェブの標準仕様であるW3Cにて標準の規格として定められており、ソースコードは公開されている。
開発者はライセンス料などを支払わずともWebRTCを自社の製品に組み込むことができる。
WebRTCとWebSocketの違い
WebRTCとWebSocketについて両者の違いを明確にしておきたい。
共に「Web~」という名称を持つことや使用目的などで被る部分があるためか、両者は混同されたり比較されたりすることが多い。
両者を簡潔に説明すると以下のようになる。
- WebRTC ➡ ブラウザ間でのリアルタイムメディアコミュニケーションを可能にするための規格。
複数のブラウザをダイレクトに接続する「Peer to Peer」型。 - WebSocket ➡ TCP接続に双方向通信のチャンネルを提供するための通信プロトコル。
接続においてはサーバーを経由するため、WebRTCと比較すると通信効率は劣る。
WebRTCの仕組み
上の図はWebRTCの仕組みをあらわしている。
2つのブラウザが接続されるまでの流れをあらわすと以下のようになる。
- ユーザ1がシグナリングサーバーに接続のオファーを提出する。
- ユーザ2がシグナリングサーバーからオファーのリストを受信する。
- ユーザ2がレスポンスをシグナリングサーバーに送る。
- ユーザ1がオファー承諾の受信する。
- ユーザ1とユーザ2が接続(Peer-to-Peer接続)を確立する。
STUNサーバーは接続のための障害を回避するために使用される。
1から4までの一連のプロセスを「シグナリング」と呼び、シグナリングサーバーはブラウザ間の接続を取り持つためのサーバーと言える。
WebRTCの通信方式(P2P・MCU・SFU)
WebRTCの通信方式にはP2P・MCU・SFUという3つの方式がある。
それぞれの方式は以下のような特徴を持つ。
- P2P (Peer to Peer)
一般的なWebRTCの通信方式。通信量が大きくなり過ぎるため多人数の同時通信には向いていない。 - MCU(Multipoint Control Unit)
ユーザから受け取ったメディアデータをサーバーにて合成してユーザに返す方式。
データの通信量は少ないもの、遅滞が大きい。 - SFU(Selective Forwarding Unit)
ユーザから受け取ったメディアデータを他の通信先にサーバーかた経由する方式。
遅滞は少ないものの通信量は多くなる。
WebRTCの使用用途
WebRTCが利用されるおもなユースケースはオンライン会議だが、それ以外にも様々な用途でWebRTCは活用することができる技術だ。
ここではそんな考えられる使用例を挙げてみよう。
- オンラインフィットネスコース
オンラインのフィットネス教室はコロナ禍で急拡大しているビジネスのひとつ。
対面でのフィットネスが難しい中、家の中にフィットネスの環境を整える人も増えている。
フィットネスのように一人ではモチベーションが保つのが難しい事も、オンライン通信でトレーナーと向き合っていれば続きやすいだろう。 - オンライン診察
医療分野は今後のIT化が大きく見込まれる分野。
コロナ渦で外出が難しい状態が続いているのも後押しとなり、今後は病気やケガの診察をオンラインでおこなうというのが拡まっていくだろう。
WebRTCはセキュリティの面でも強いので、医療といった繊細なデータが多くやり取りされる場面でも活用することができる。 - オンライン講座
オンライン講座は今後需要が拡大することが見込まれる分野。
近場では先生が見つからないような分野での講座はオンラインのほうが有利だ。
特に時間やお金に余裕があるシニア層は今後は増えると見込まれるので、そういった人たちをターゲットにしたビジネスを始める経営者も増えるだろう。
WebRTCはまだまだ需要の増加が見込める技術だというのが分かってもらえただろうか?
Webアプリケーションの開発に携わってい開発者ならば、WebRTCはぜひ抑えておこう。