【WebRTC とは】仕組みとSFUサーバーやプロトコルについて初心者にもわかりやすく徹底解説!

WebRTC

昨今、ウェブブラウザ上でリアルタイムにビデオや音声のやり取りをする機会が急増しました。

リモートワークが広まり、SkypeやGoogleMeetなどのビデオ通話ツールが活用される場面が多くなっています。また、オンライン英会話やオンライン診療、オンライン接客など、ブラウザやアプリ上でビデオ通話を必要とするサービスも増えています。

このようなリアルタイムなビデオ通話を実現する技術の一つに、「WebRTC」というものがあります。この記事では、WebRTCとはどういう技術なのか、仕組みなどを初心者にも分かりやすく解説します。

 

WebRTCとは

WebRTC とは

WebRTC(Web Real-Time Communication)は、ウェブブラウザ間でリアルタイムの音声、映像、データ通信を可能にするオープンソースな技術です。この技術はライセンス料無料で利用可能で、Chrome、Firefox、Safariなどの主要ブラウザで動作します。

また、Teams、Google Meetなどのビデオチャットアプリやリアルタイムデータ通信が必要なオンラインゲームなど、多くのアプリケーションで利用されています。

開発者は、この技術を使用してエンドユーザーにリアルタイムコミュニケーション体験を提供できます。

WebRTCの成り立ち

WebRTC 成り立ち

WebRTCは、インターネットのリアルタイムコミュニケーションを実現するために、W3C(World Wide Web Consortium)とIETF(Internet Engineering Task Force)によって提唱され、その標準化が進められました。

2013年頃から注目を集め、ウェブブラウザに組み込まれました。2020年には、Chrome、Microsoft Edge、Firefox、Safariなどの主要ブラウザが対応し、多くのウェブアプリケーションで利用されています。

WebRTCの仕組み

WebRTCは、Webブラウザ間でのリアルタイム通信を実現する技術です。ビデオ通話や音声通話、データの送受信など、多岐にわたる用途で利用されおり、以下のような独自の通信仕組みが存在します。

P2Pとは

P2P

まずWebRTCは、P2P(Peer To Peer)通信を基盤としています。 P2Pとは、端末同士が直接データの送受信を行う通信方式です。

従来のクライアント-サーバー型の通信とは異なり、サーバーを介さずに端末間で直接通信を行います。この方式の利点は、データの転送速度が速く、遅延が少ないことです。また、サーバーに負荷が集中し通信が不安定になるといった事も起こりにくいのが特徴です。

WebRTC P2P通信に必要なプロトコル

WebRTCを使用したP2P通信を確立するためには、いくつかの重要なプロトコルが必要となります。以下に、その主要な要素を詳しく解説します。

Session Description Protocol(SDP)

SDPは、音声や映像の通信セッションの詳細を記述するためのプロトコルです。具体的には、使用するコーデック、ビットレート、通信の方向性など、メディアの詳細情報を表現します。また、ICE Candidateと呼ばれるP2Pの通信経路に関する情報も含まれます。

WebRTCにおいて、通信を開始する前に、端末間でSDPを交換することで、通信のパラメータを合わせることができます。これを、Negotiation(交渉)と言います。

Interactive Connectivity Establishment(ICE)

ICEは、NATやファイアウォールを越えてP2P通信を確立するためのフレームワークです。STUNTURNといったプロトコルを使用して、端末間の最適な通信経路を見つけ出します。

シグナリングサーバー

シグナリングサーバーは、WebRTCの接続を確立するための、情報を中継する役割を持つサーバーです。SDPの交換やICEの候補の収集などを実現します。

WebRTC P2P通信を実現する方法

WebRTCはP2P通信を実現します。しかし、現実のネットワーク環境では、NATやファイアウォールといった障壁が存在するため、そのままではP2P通信が難しい場合があります。

NATとは

NAT(Network Address Translation)は、プライベートネットワークとインターネットとの間でIPアドレスを変換する技術を指します。グローバルIPアドレスを節約することができるほか、外部ネットワークから内部ネットワークを直接参照することができなくなるため、外部からの不正アクセスを防ぐメリットがあります。

NAT超えを実現するには

WebRTC NAT超え

NATを使用するネットワークでは、外部からの接続要求が直接内部のデバイスに届かないため、P2P通信が難しくなります。特に、両方の端末がNATの背後にある場合、通信の確立が非常に難しくなります。 NATを越えてP2P通信を確立するためには、STUNやTURNといった技術が必要となります。

STUN/TURNサーバー

STUN TURN

STUNサーバーは、NATの背後にある端末のグローバルIPアドレスとポート番号を取得するためのサーバーです。

一方、TURNサーバーは、NATのセキュリティレベルが高かったり、ファイアウォールやプロキシサーバーがWebRTC通信をブロックし直接通信できない場合に、中継役として動作し、データの送受信をサポートします。

これにより、NATの背後にある端末同士でもWebRTCの通信が可能となります。

WebRTCで複数人接続(多拠点接続)を行う方法

WebRTCは、2人だけでなく、複数人とのリアルタイム通信を実現することができます。しかし、多拠点接続を行う際には、特定のアーキテクチャや技術が必要となります。その主要な方法を詳しく解説します。

クライアントサーバー方式

複数人との通信を効率的に行うためには、SFUやMCUを利用するクライアントサーバー方式を採用することが一般的です。この方式では、中央のサーバーがデータの中継や配信を行い、各クライアントがそのサーバーと通信する形態を取ります。

SFUとは

SFU

SFU(Selective Forwarding Unit)は、複数のクライアントから受け取ったメディアストリーム(映像や音声データ)を、他のクライアントに転送する役割を持つサーバーです。転送先のクライアントが増えても転送元のクライアントの負荷が増えないのが特徴です。
また、SFUは受け取ったデータをデコードせずにそのまま転送するため、サーバーのリソースを節約することができます。

MCUとは

MCU

MCU(Multipoint Control Unit)は、複数のクライアントから受け取ったメディアストリーム(映像や音声データ)を一つに結合し、その結合されたストリームを各クライアントに転送する役割を持つサーバーです。MCUは、ストリームのデコードやエンコードを行うため、サーバーのリソースが多く必要となります。

WebRTCのセキュリティ

WebRTC セキュリティ

WebRTCは、SRTPというセキュアな通信規格を採用しており、安全にリアルタイム通信を行うことができます。また、暗号化に必要な鍵交換は、DTLS(Datagram Transport Layer Security)という仕組みを利用して安全に行われます。

SRTPとは

SRTP

SRTP(Secure Real-time Transport Protocol)とは、リアルタイムに音声や映像などのデータを転送する基本的な通信規格、RTPのセキュア版です。SRTPはデータの暗号化を行い送受信されるため、第三者によるデータの傍受や改ざんが非常に困難です。

WebRTCを実装するには

WebRTCの実装には、専門的な知識かつ膨大な開発工数が必要ですが、SDK(Software Development Kit)を使用する方法もあります。SDKを使用することで、様々なサーバーの構築や管理を簡略化し、効率的に開発を進めることができます。

WebRTC SDK「SkyWay」

WebRTC SDK SkyWay

WebRTCの代表的なSDKとして、NTTコミュニケーションズが開発、運営する「SkyWay」があります。 「SkyWay」とは、ビデオ・音声通話をアプリケーションに簡単に実装できる国産SDKです。

大きな特徴としては、以下が挙げられます。

  • スピーディーな開発ができる
    開発資料が豊富かつ日本語でわかりやすい、国内エンジニアがサポートしてくれる
  • 信頼性・安全性が高い
    NTTコミュニケーションズが開発、運営する国産SDK。サービス歴は10年以上で、累計導入サービス数も21,000件以上
  • 無料で開発スタート
    開発検証用として、Freeプランあり。テスト検証期間中は無料で利用可能。商用サービス提供後も基本利用料11万 + 従量課金制で安心。

SkyWayの詳細はこちら

 

WebRTCのSDKとして提供されているものは、海外製が多いため、開発ドキュメントも英語か和訳のもので開発しにくい傾向にあります。 「SkyWay」であれば、NTTグループが開発、運営する安心の国産SDKかつ、国内エンジニアがサポートしてくれるため、開発運用工数も大幅に削減でき、開発のしやすさからもおすすめです。

テスト検証用は無料のため、ぜひアカウント登録をしてみください。

アカウント登録はこちら

WebRTCを利用したサービスについて

WebRTC サービス

WebRTCは、多様なシーンでの利用が拡大しています。ビジネスシーンでのWeb会議やオンライン教育、ボイスチャットなどの一般的な利用の他に、遠隔医療、オンラインフィットネス、IoT映像配信、VRライブ配信など、新しい利用シーンが増えています。特に、参加型ライブ配信や双方向性の高い映像配信、オーディエンスの熱量可視化のサービスなど、オンライン特有の体験が注目されています。

WebRTC SDK「SkyWay」のサービス利用例

WebRTC技術を活用したビデオ通話SDK「SkyWay」が利用されているサービスとして、以下があげられます。

  • オンライン英会話「レアジョブ英会話」
    会員数100万人のオンライン英会話。顧客満足度No.1。
  • オンラインワークスペース「NeWork」
    リモートワーク、オフィス、複数の拠点が同じ空間でつながるオンラインワークスペース
  • アバター接客「AVACOM」:
    リアルとWEBで利用できる、アバターオンライン接客サービス
  • メタバース「VKET CLOUD」
    自分だけのメタバースを作成し利用できる開発エンジン

その他、オンライン接客やオンライン診療、オフィスDX、IoTなど、幅広いサービスに「SkyWay」が利用されています。 ご興味のある方は概要資料をぜひダウンロードしてみてください。

SkyWay概要資料のダウンロードはこちら

まとめ

WebRTCは、ブラウザ間のリアルタイム通信を実現するオープンソースな技術です。基盤としてP2P通信を採用し、SDPやICEなどのプロトコルを使用して通信を確立します。NAT越えのためのSTUN/TURNサーバーや、複数人接続のSFU、MCUが存在します。 WebRTCを実装するには専門知識と膨大な開発工数が必要ですが、「SkyWay」を利用すれば、開発の簡略化が可能です。 セキュリティも安全で、多様なシーンでの利用が拡大しており、今後はオンラインコミュニケーションやメタバースなどでもより活用が進んでいくでしょう。

ぜひWebRTCを活用した、サービス開発を検討してみてはいかがでしょうか。

ビデオ・音声通話機能を簡単に実装したい方必見!

SkyWay

「SkyWay」なら、あなたのサービスにビデオ通話や音声通話機能をカンタンに組み込む事ができます。

    • NTTコミュニケーションズが運営・開発し、サービス歴は10年以上、累計導入サービス数も21,000件以上
    • 日本語の開発ドキュメントや国内エンジニアがサポートでスムーズな開発が実現!
    • 開発検証用として、Freeプランあり

社内にエンジニアがいない場合でも開発パートナーのご紹介が可能です。ぜひ、ご検討ください。

詳しくはこちら

 

この記事を監修した人

仲裕介

NTTコミュニケーションズが開発、運営する「SkyWay」のエンジニアリングマネージャー。WebRTC Meetup Tokyo、WebRTC初心者向け勉強会 主催、WebRTC Conference Japan 実行委員会 ボードメンバー、HTML5Experts.jp 副編集長、pmconf 2023スタッフ。

この記事を監修した人

内田裕貴

NTTコミュニケーションズが開発、運営する「SkyWay」のWebRTCリサーチャー。Zennにて「WebRTC徹底解説」を公開。fukabori.fmのPodcastに出演。