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 API | P2P接続の確立・管理 | 通話相手との直接通信路 |
RTCDataChannel API | 任意データのP2P送受信 | ファイル転送・チャット |
| シグナリングサーバー | 接続開始時の仲介(経路情報の交換) | WebSocket等で自前実装 |
| STUNサーバー | 自分のグローバルIPアドレスを調べる | Google公開STUNなど |
| TURNサーバー | P2P不可時の中継サーバー | NAT越えが難しい環境向け |
接続の流れを「待ち合わせ」で覚える
WebRTCの接続確立は「初対面の人と待ち合わせるプロセス」に似ています。
- 自分の住所を調べる(STUN) ─ 「私のIPアドレスはXXXです」
- 待ち合わせ場所を伝え合う(シグナリング) ─ 「こっちはこのIPとポートで待ってるよ」という情報(SDP/ICE候補)を交換
- 直接会いに行く(P2P接続) ─ 情報をもとにブラウザ同士が直結
- 直接会えない場合は中継所を使う(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と他のリアルタイム通信技術の比較
| 比較項目 | WebRTC | WebSocket | 従来のビデオ通話(Flash等) |
|---|---|---|---|
| インストール | 不要(ブラウザ内蔵) | 不要 | プラグイン必要 |
| 通信方向 | 双方向P2P | 双方向(サーバー経由) | 双方向(サーバー経由) |
| 映像・音声 | ✅ネイティブ対応 | ❌別途実装が必要 | ✅対応(旧来型) |
| 暗号化 | 必須(DTLS/SRTP) | 任意(wss推奨) | 任意 |
| 遅延 | 低遅延(UDP主体) | 中程度 | 中〜高遅延 |
| 主な用途 | ビデオ通話・ライブ配信 | チャット・通知 | 旧来のWeb会議 |
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| W3C WebRTC 1.0 | ブラウザAPIの標準仕様(RTCPeerConnectionなど) |
| RFC 8825 | WebRTCのアーキテクチャ概要(IETF) |
| RFC 8829 | SDP(セッション記述プロトコル)のWebRTC利用仕様 |
| RFC 8656 | TURNプロトコル(NAT越え中継) |
| RFC 8489 | STUNプロトコル(グローバルIP調査) |
| RFC 8445 | ICEフレームワーク(接続経路の自動選択) |
| RFC 3550 | RTP(リアルタイム転送プロトコル)─SRTPの基盤 |