WebRTC

WebRTC（）は、ウェブブラウザやモバイルアプリケーションにシンプルなAPI経由でリアルタイム通信（; RTC）を提供する自由かつオープンソースのプロジェクトである。ウェブページ内で直接ピア・ツー・ピア通信を行うことによって、プラグインのインストールやネイティブアプリのダウンロードを行わなくても、ウェブブラウザ間のボイスチャット、ビデオチャット、ファイル共有などを実装できるようになる。WebRTCは、Apple、Google、マイクロソフト、Mozilla、Operaがサポートしており、World Wide Web Consortium（W3C）およびInternet Engineering Task Force（IETF）で標準化が進行中である。

WebRTCの目的は、「ブラウザ、モバイルプラットフォーム、IoTデバイス向けのリッチで高品質なRTPアプリケーションを、開発できるようにし、共通のプロトコルセットで通信できるようにすること」である。リファレンス実装がBSDライセンスのフリーソフトウェアとして公開されている。また、マルチメディアフレームワークのGStreamerをベースに実装されたOpenWebRTCという別のフリー実装も存在する。JavaScriptを発明したブレンダン・アイクは、WebRTCのことを 「妨げなく開かれているウェブへの戦いにおける新たな戦線」であると評している。

歴史 
ブラウザでリアルタイムなコミュニケーションを可能にするWebRTCは、Googleによってオープンソース化されており、IETFによる関連プロトコルとW3Cによるブラウザ対応APIの標準化が進められてきた。

W3CによるWebRTCのドラフトは、Google ChromeとMozilla Firefoxで特別に実験的に実装が行われる。APIはWHATWGに予備的に記述され、ConnectionPeer APIと呼ばれており、Ericsson Labsが仮の標準概念実装として作成している。ウェブリアルタイムコミュニケーションワーキンググループは、この仕様が以下の項目に基づいて進化することを期待している。

 ウェブブラウザでのリアルタイムなコミュニケーションを可能にするこのドキュメントと一緒に一連のプロトコルを定義するためのIETFにおける仲間のRTCWEBグループでの継続的交流の成果
 ローカルキャパシティとローカルストリームを公開する時に発生するプライバシー問題
 特殊な環境でデータチャネルの実装に関するグループでの技術的ディスカッション
 初期の実験を通して得られる経験
 他のグループや個人からのフィードバックの受け取り

概要

設計 
WebRTCを構成する主要な API を次に挙げる。

 getUserMedia カメラやマイクなどのメディア入力の利用をユーザーに許可させる。
 RTCPeerConnection ピア同士で直接ビデオ・音声をやりとりするためのクラス。シグナリング、コーデックの処理、P2P通信、セキュリティおよび帯域管理を担う。
 RTCDataChannel ピア間の双方向通信で任意のデータを扱うためのクラス。WebSocketsと同じAPIを利用しており、レイテンシーが非常に低い。

WebRTC には統計のためのAPIもある。

 getStats はWebRTCセッションの統計をWebアプリケーションが取得可能にする。なお、統計に関する仕様は別のW3Cドキュメントになっている。

WebRTC自体には、シグナリング（ピア同士の検索と接続確立のためのプロセス）のためのAPIは含まれない。代わりに、アプリケーションではInteractive Connectivity Establishment（ICE）を用いる。なお、ICEのプロセスではシグナリングやNATトラバーサルのためにサーバーを介した通信が必要な場合がある。

サポート 
WebRTCは以下のブラウザでサポートされている。

 PC
Microsoft Edge 12+
 Google Chrome 28+
 Mozilla Firefox 22+
 Safari 11+
 Opera 18+
 Vivaldi 1.9+
 Brave
 Android
 Google Chrome 28+（デフォルトで有効なのは 29以降）
 Mozilla Firefox 24+
 Opera Mobile 12+
 ChromeOS
 Firefox OS
 BlackBerry 10
 iOS
 MobileSafari/WebKit（iOS 11+）
 Tizen 3.0

脚注

関連項目 
 HTML5
 HTML5オーディオ
 Datagram Transport Layer Security（DTLS）および （SRTP） - DTLS-SRTPはWebRTCの鍵管理に不可欠なプロトコルである

外部リンク 
 
 W3C WebRTC API
 IETF Real-Time Communication in WEB-browsers (rtcweb) Working Group

HTML
ウェブ開発
ウェブ技術
ウェブサイトの構成