WebRTC (Web Real-Time Communication) について
WebRTCは、ウェブブラウザや
モバイルアプリケーションにリアルタイム通信機能を提供する、自由でオープンソースのプロジェクトです。この技術を利用することで、
プラグインのインストールやネイティブアプリのダウンロードなしに、
ウェブページ上で直接ピアツーピア通信が可能になります。具体的には、ウェブブラウザ間でのボイスチャット、ビデオチャット、ファイルの共有などを容易に実装できます。
主要な特徴
- - オープンソース: 誰でも自由に利用、開発、改良できる。
- - プラグイン不要: ブラウザの標準機能として動作するため、追加のソフトウェアインストールが不要。
- - リアルタイム通信: 低遅延で音声や映像、データのやり取りが可能。
- - 主要ブラウザ対応: Apple、Google、Microsoft、Mozilla、Operaといった主要なブラウザベンダーがサポート。
技術的な詳細
WebRTCは、単一のプロトコル仕様(プロトコルスイート)と
JavaScript API仕様で構成されています。これらの仕様は、W3C(
World Wide Web Consortium)およびIETF(
Internet Engineering Task Force)によって定義され、複数の規格書に分散して記述されています。
WebRTCの主な目的は、ブラウザ、モバイルプラットフォーム、IoTデバイス向けに高品質なRTP(
Real-time Transport Protocol)アプリケーションを開発しやすくすること、そして、共通のプロトコルセットで通信できるようにすることです。
リファレンス実装は
BSD[[ライセンス]]の自由ソフトウェアとして公開されており、GStreamerをベースにしたOpenWebRTCという別のフリー実装も存在します。
JavaScriptの開発者として知られるブレンダン・アイクは、WebRTCを「開かれたウェブへの戦いにおける新たな戦線」と評価しています。
歴史
WebRTCは、
Googleがオープンソース化したことで、ブラウザにおけるリアルタイムコミュニケーションの基盤が形成されました。その後、IETFによるプロトコル標準化とW3CによるAPI標準化が進められました。W3CによるWebRTCのドラフトは、
Google Chromeと
Mozilla Firefoxで実験的に実装され、APIはWHATWG(Web Hypertext Application Technology Working Group)で予備的に記述されました。このAPIはConnectionPeer APIと呼ばれ、Ericsson Labsによって標準概念実装が作成されました。
ウェブリアルタイムコミュニケーションワーキンググループは、以下の点を考慮して仕様を進化させています。
- - IETFのRTCWEBグループとの連携。
- - ローカルキャパシティとローカルストリームを公開する際のプライバシー問題。
- - データチャネル実装に関する技術的な議論。
- - 初期実験からの経験。
- - 他のグループや個人からのフィードバック。
主要なAPI
WebRTCは主に以下のAPIで構成されています。
- - `getUserMedia`: カメラやマイクなどのメディア入力をユーザーに許可する。
- - `RTCPeerConnection`: ピア間でビデオや音声を直接やり取りするためのクラス。シグナリング、コーデック処理、P2P通信、セキュリティ、帯域管理を担う。
- - `RTCDataChannel`: ピア間で任意のデータを双方向通信するためのクラス。WebSocketsと同じAPIを使用し、低レイテンシーを実現。
さらに、WebRTCには統計を取得するためのAPIである `getStats` も存在し、Webアプリケーションがセッションの統計情報を取得できるようにします。
シグナリングについて
WebRTC自体には、シグナリング(ピア同士の検索と接続確立プロセス)のためのAPIは含まれていません。アプリケーションでは、Interactive Connectivity Establishment(ICE)を利用します。ICEプロセスでは、シグナリングやNATトラバーサルのためにサーバーを介した通信が必要になる場合があります。
サポートブラウザ
WebRTCは以下の主要なブラウザでサポートされています。
PC
Android
その他
仕様の構成
WebRTCは、以下の6つの機能グループで構成されています。
1. ローカルシステムサポート機能
2. プライバシー懸念の解消(例:カメラアクセス許可)
3. RFC 7874の処理機能を実装するエンドポイント
用語
WebRTCに関連する主な用語は以下の通りです。
- - リアルタイムメディア: コンテンツの生成と提示が時間的に密接して行われるメディア。例:電話、ビデオ会議。
関連規格
W3CやIETFにおいて、以下のWebRTC関連規格が策定されています。
脚注
W3C WebRTC API
IETF Real-Time Communication in WEB-browsers (rtcweb) Working Group
関連項目
- - HTML5
- - HTML5オーディオ
- - DTLS-SRTP: WebRTCの鍵管理に不可欠なプロトコル