API・メッセージング

WebRTC うぇぶあーるてぃーしー

P2P通信リアルタイム通信ビデオ通話ブラウザSTUN/TURNメディアストリーム
WebRTCについて教えて

簡単に言うとこんな感じ!

ブラウザだけでビデオ通話やファイル共有ができちゃう仕組みだよ!アプリのインストール不要で、2台のパソコンが直接つながれるイメージ。ZoomっぽいことをWebページだけで実現できるってこと!


WebRTCとは

WebRTC(Web Real-Time Communication) とは、Webブラウザやモバイルアプリが、サーバーを経由せずにブラウザ同士で直接(P2P)、映像・音声・データをリアルタイムに送受信できるようにする技術標準です。Googleが2011年にオープンソース化し、現在はW3CおよびIETFが標準化を進めています。

最大の特徴は「プラグインやアプリのインストールが不要」な点です。ChromeやFirefox、Safariなど主要なブラウザにすでに組み込まれており、JavaScriptのAPIを呼び出すだけでビデオ通話機能を自分のWebサービスに組み込むことができます。

ビジネスの現場では、オンライン商談ツール・遠隔医療・カスタマーサポートのビデオチャット・リモート教育など幅広く活用されています。Google Meetや多くのビデオ会議SaaSの内部エンジンとしても採用されており、「現代のリアルタイム通信インフラ」とも言える存在です。


WebRTCの仕組みと構成要素

WebRTCは大きく3つのAPIと、通信を成立させるための補助サーバーで構成されています。

構成要素役割具体例
getUserMedia APIカメラ・マイクへのアクセスビデオ通話の映像取得
RTCPeerConnection APIP2P接続の確立・管理通話相手との直接通信路
RTCDataChannel API任意データのP2P送受信ファイル転送・チャット
シグナリングサーバー接続開始時の仲介(経路情報の交換)WebSocket等で自前実装
STUNサーバー自分のグローバルIPアドレスを調べるGoogle公開STUNなど
TURNサーバーP2P不可時の中継サーバーNAT越えが難しい環境向け

接続の流れを「待ち合わせ」で覚える

WebRTCの接続確立は「初対面の人と待ち合わせるプロセス」に似ています。

  1. 自分の住所を調べる(STUN) ─ 「私のIPアドレスはXXXです」
  2. 待ち合わせ場所を伝え合う(シグナリング) ─ 「こっちはこのIPとポートで待ってるよ」という情報(SDP/ICE候補)を交換
  3. 直接会いに行く(P2P接続) ─ 情報をもとにブラウザ同士が直結
  4. 直接会えない場合は中継所を使う(TURN)ファイアウォール等で直接つながれない場合

NAT越えとICEの仕組み

家庭やオフィスのネットワークでは、外部から直接端末にアクセスできないNAT(ネットワークアドレス変換) 環境が一般的です。WebRTCはICE(Interactive Connectivity Establishment) というフレームワークを使い、STUN→P2P直接→TURNの順に接続方法を試してベストな経路を自動選択します。


歴史と背景

  • 2010年 ─ GoogleがGlobalIPSoundおよびOn2 Technologiesを買収。音声・映像コーデックの特許を取得
  • 2011年 ─ GoogleがWebRTCをオープンソースとして公開。Chromeへの組み込みを開始
  • 2012年 ─ Mozilla FirefoxがWebRTCサポートを表明。W3C・IETFでの標準化作業が本格化
  • 2013年 ─ ChromeとFirefox間での初のビデオ通話成功(クロスブラウザ実証)
  • 2017年 ─ AppleがSafariでのWebRTCサポートを開始。主要ブラウザがすべて対応
  • 2021年 ─ W3CおよびIETFがWebRTC 1.0を正式勧告として公開
  • 2020年代 ─ コロナ禍でオンライン会議需要が爆増。Google Meet・Discord等の主要サービスがWebRTCを中核技術として採用・拡充

WebRTCと関連技術の比較・全体像

WebRTCは単独では成立せず、複数のプロトコルと補助技術が組み合わさって動きます。

WebRTC 技術スタック全体像 アプリケーション層(JavaScript API) getUserMedia / RTCPeerConnection / RTCDataChannel 映像コーデック VP8 / VP9 / H.264 / AV1 音声コーデック Opus / G.711 / G.722 データチャネル SCTP(信頼性・順序制御) メディア転送プロトコル SRTP(暗号化メディア) / SRTCP(制御) セキュリティ層 DTLS(鍵交換・暗号化) トランスポート層 UDP(主) / TCP(フォールバック) / ICE(経路選択) 接続確立補助(シグナリング) SDP(セッション記述) / ICE候補交換 NAT越え補助サーバー STUNサーバー / TURNサーバー ※ WebRTCはすべての通信をDTLS/SRTPで暗号化(必須)

WebRTCと他のリアルタイム通信技術の比較

比較項目WebRTCWebSocket従来のビデオ通話(Flash等)
インストール不要(ブラウザ内蔵)不要プラグイン必要
通信方向双方向P2P双方向(サーバー経由)双方向(サーバー経由)
映像・音声✅ネイティブ対応❌別途実装が必要✅対応(旧来型)
暗号化必須(DTLS/SRTP)任意(wss推奨)任意
遅延低遅延(UDP主体)中程度中〜高遅延
主な用途ビデオ通話・ライブ配信チャット・通知旧来のWeb会議

関連する規格・RFC

規格・RFC番号内容
W3C WebRTC 1.0ブラウザAPIの標準仕様(RTCPeerConnectionなど)
RFC 8825WebRTCのアーキテクチャ概要(IETF)
RFC 8829SDP(セッション記述プロトコル)のWebRTC利用仕様
RFC 8656TURNプロトコル(NAT越え中継)
RFC 8489STUNプロトコル(グローバルIP調査)
RFC 8445ICEフレームワーク(接続経路の自動選択)
RFC 3550RTP(リアルタイム転送プロトコル)─SRTPの基盤

関連用語

  • P2P通信 — サーバーを介さずに端末同士が直接通信する方式
  • WebSocket — ブラウザとサーバー間で双方向通信を実現するプロトコル
  • SDP(Session Description Protocol) — 通信セッションの能力・パラメータを記述するフォーマット
  • STUN — NAT環境下で自分のグローバルIPを確認するためのプロトコル
  • TURN — P2P接続が困難な場合に通信を中継するサーバー・プロトコル
  • NAT — プライベートIPとグローバルIPを変換するネットワーク技術
  • [DTLS](./dtls