ブラウザ間の通信をサポートするAPI
WebRTC ( Web Real-Time Communication )は、 Webブラウザ や モバイルアプリケーション に アプリケーションプログラミングインターフェース(API)を介して リアルタイム通信 (RTC)を提供する 、無料のオープンソース プロジェクトです。WebRTCは 、ピアツーピアの 直接通信を可能にすることで、Webページ内で音声・動画の通信とストリーミングを可能にし、 プラグインの インストールやネイティブアプリのダウンロードを不要にします 。 [4]
WebRTCの仕様は、 Apple 、 Google 、 Microsoft 、 Mozilla 、 Opera によってサポートされており、 ワールドワイドウェブコンソーシアム (W3C)と インターネット技術タスクフォース (IETF)によって公開されています 。 [5] [6]
ICE 、 STUN 、 TURNは 、リモートピアに接続するために使われる NATトラバーサル 技術です。 [7]
歴史
2010年5月、Googleは VoIP および ビデオ会議 ソフトウェア企業であるG lobal IP Solutions (GIPS)を買収しました。同社は、コーデックやエコーキャンセル技術など、RTCに必要な多くのコンポーネントを開発していました。GoogleはGIPS技術をオープンソース化し、 IETF および W3C の関連標準化団体と連携して業界のコンセンサスを確保しました。 [8] [9] 2011年5月、 Googleは WebRTCとして知られるブラウザベースのリアルタイム通信のための オープンソース プロジェクトをリリースしました。 [10]その後、 IETF [11] では関連 プロトコルの 標準化、W3CではブラウザAPIの 標準化に向けた作業が継続されています。 [12]
2011年1月、 エリクソン研究所は改良された WebKit ライブラリを用いてWebRTCの最初の実装を構築した 。 [13] [14] 2011年10月、 W3Cは 仕様の最初のドラフトを公開した。 [15] WebRTCのマイルストーンとしては、初のクロスブラウザビデオ通話(2013年2月)、初のクロスブラウザデータ転送(2014年2月)が挙げられ、2014年7月時点では Googleハングアウト が「ある意味」WebRTCを使用していた。 [16]
W3CのAPIドラフトは WHATWG で行われた予備作業に基づいています。 [17] これはConnectionPeer APIと呼ばれ、標準化前のコンセプト実装が Ericsson Labsで作成されました。 [13] WebRTCワーキンググループは、この仕様が以下の点に基づいて大きく進化することを期待しています。
2017年11月、WebRTC 1.0仕様はワーキングドラフトから勧告候補に移行しました。 [21]
2021年1月、WebRTC 1.0仕様は勧告候補から 勧告 に移行しました。 [5]
デザイン
WebRTC の主要コンポーネントには、いくつかの JavaScript API が 含まれます。
WebRTC API には統計機能も含まれています。
getStatsウェブアプリケーションがWebRTCセッションに関する統計情報を取得できるようにします。これらの統計データは、別のW3C文書で説明されています。 [26]
WebRTC APIには 、接続先のピアを発見し、それらの間で接続を確立する方法を決定する シグナリングに関する規定は含まれていません。アプリケーションは接続に インタラクティブ接続確立を使用し、セッション管理の責任を負います。セッション管理は、 セッション開始プロトコル 、拡張メッセージングおよびプレゼンスプロトコル( XMPP )、 メッセージキューイングテレメトリトランスポート 、 マトリックス 、またはその他のプロトコルのいずれかに依存します 。シグナリングは、1つまたは複数のサーバーに依存する場合があります。 [27] [28]
RFC 7478では、実装において最低限の機能として、 PCMA / PCMU ( RFC 3551)、電話イベント( DTMF) ( RFC 4733)、および Opus ( RFC 6716) オーディオコーデック の提供が求められています 。PeerConnection、データチャネル、およびメディアキャプチャブラウザAPIの詳細は、W3C仕様に記載されています。
W3CはWebRTC用のORTC(オブジェクトリアルタイム通信)を開発しています。 [29]
アプリケーション
WebRTCはブラウザ間でファイルを直接ストリーミングすることを可能にし、サーバー側のファイルホスティングの必要性を減らす、あるいは完全に排除する。WebTorrent は WebRTCトランスポートを使用し、ブラウザ内で BitTorrent プロトコルを用いたピアツーピアのファイル共有を可能にする。 [30] 一部の ファイル共有 ウェブサイトはWebRTCトランスポートを使用し、ユーザーがブラウザ内でファイルを直接送信できるようにしているが、この場合、アップロード者はファイルがダウンロードされるまでタブを開いたままにしておく必要がある。 [31] [32] [33] Microsoft所有のPeer5などの一部の CDNは 、クライアントの帯域幅を使用して接続された他のピアにメディアをアップロードし、各ピアをエッジサーバーとして機能させている。 [34] [35]
WebRTCは当初ウェブブラウザ向けに開発されましたが、モバイルプラットフォームやIoTデバイス など、ブラウザ以外のデバイスにも応用可能です 。例えば、ブラウザベースの VoIP 電話(クラウドフォンまたはウェブフォンとも呼ばれます)では、ウェブブラウザ内から通話の発信と受信が可能になり、ソフトフォンのダウンロードとインストールが不要になります。 [36]
サポート
WebRTC は次のブラウザでサポートされています (不完全なリスト、サポートされている最も古いバージョンが指定されています)。
ブラウザ間のコーデックサポート
WebRTCは、すべての準拠ブラウザに実装が義務付けられる標準コーデックセットを規定しています(下線部)。一部のブラウザでは、他のコーデックもサポートしている場合があります。 [42]
脆弱性
2015年1月、 TorrentFreakは WebRTCをサポートするブラウザに重大なセキュリティ上の欠陥があり、ユーザーの実際の IPアドレスが公開されることで VPN トンネルのセキュリティが侵害されると報告しました 。 [44] IPアドレスの読み取り要求はブラウザの開発者コンソールには表示されず、ほとんどの 広告ブロック 、 プライバシー 、 セキュリティ アドオンではブロックされないため 、予防措置を講じていてもオンライントラッキングが可能になります。 [45]
アドレス漏洩の原因はパッチを適用できるバグではなく、WebRTCの動作原理に根ざしたものだと報告されています。しかし、この問題を軽減するための解決策はいくつかあります。WebRTCの漏洩はテストが可能で、ほとんどのブラウザで解決策が提供されています。 [46] WebRTCは、必要がない場合はほとんどのブラウザで無効にすることができます。uBlock Origin アドオンはこの問題を解決できます(一部のブラウザではこの問題が自動で修正されるため、uBlock Origin v1.38以降ではこれらのブラウザでこのオプションは無効になっています [47] )。
参照
参考文献
^ “WebRTC 1.0: ブラウザ間のリアルタイム通信”. World Wide Web Consortium . 2018年9月27日. 2019年4月7日時点のオリジナルよりアーカイブ 。 2019年 3月25日 閲覧。
^ “Src/webrtc - Git at Google”. 2018年4月23日時点のオリジナルよりアーカイブ 。 2018年4月22日 閲覧。
^ 「WebRTC ライセンス」。
^ WebRTCが電話技術に革命を起こす方法(2014年4月7日アーカイブ、 Wayback Machine ). Blogs.trilogy-lte.com (2014年2月21日). 2014年4月11日閲覧。
^ ab 「Web Real-Time Communications (WebRTC) transforms the communications landscape as it becomes a World Wide Web Consortium (W3C) Recommendation and Internet Engineering Task Force (IETF) standards”. World Wide Web Consortium . 2021年1月26日. 2022年7月27日時点のオリジナルよりアーカイブ。 2021年 1月27日 閲覧 。
^ “Rtcweb Status Pages”. tools.ietf.org . 2020年4月20日時点のオリジナルよりアーカイブ 。 2021年2月18日 閲覧。
^ 「はじめに」 W3C WebRTC 。
^ 「WebRTCコンポーネントはGoogleによるGlobal IP Solutionsの買収によるものか?」 WebRTC . 2011年6月7日時点のオリジナルよりアーカイブ 。 2018年 2月6日 閲覧。
^ Wauters, Robin (2010年5月18日). 「Google、Global IP Solutionsに6820万ドルの現金オファー」 TechCrunch . 2018年2月7日時点のオリジナルよりアーカイブ。 2018年 2月6日 閲覧 。
^ Harald Alvestrand (2011年5月31日). 「Google による WebRTC ソースコードのリリース」. [email protected] . 2013年2月27日時点のオリジナルよりアーカイブ 。 2012年9月12日 閲覧。
^ 「Webブラウザにおけるリアルタイム通信(rtcweb)ワーキンググループの憲章」。2013年11月11日時点のオリジナルよりアーカイブ。 2013年11月11日 閲覧 。
^ 「WebRTC 1.0: ブラウザ間のリアルタイム通信」W3.org. 2012年9月5日時点のオリジナルよりアーカイブ。 2012年9月12日 閲覧 。
^ ab 「HTML5を超えて:ピアツーピア会話型ビデオ」 Ericsson Researchブログ 。Labs.ericsson.com。2011年1月25日。2017年2月25日時点のオリジナルよりアーカイブ。 2021年 3月21日 閲覧 。
^ Stefan Håkansson; Stefan Ålund (2011年5月26日). 「HTML5を超えて:ブラウザでのリアルタイム通信の実験」. Ericsson Researchブログ . 2018年2月7日時点のオリジナルよりアーカイブ。 2018年 2月6日 閲覧 。
^ “WebRTC 1.0: ブラウザ間のリアルタイム通信(W3Cワーキングドラフト 2011年10月27日)”. World Wide Web Consortium . 2011年10月27日. 2011年10月29日時点のオリジナルよりアーカイブ。 2018年 2月6日 閲覧 。
^ Nowak, Szymon. 「WebRTC: ビデオ会議以上の機能」. GitHub . 2018年2月7日時点のオリジナルよりアーカイブ。 2018年 2月6日 閲覧 。
^ “Introduction — HTML Standard”. Whatwg.org. 2014年8月16日時点のオリジナルよりアーカイブ。 2012年9月12日 閲覧 。
^ “Rtcweb Status Pages”. Tools.ietf.org. 2012年9月5日時点のオリジナルよりアーカイブ 。 2012年9月12日 閲覧。
^ SIP Trunking、MTPL (2023年7月18日). 「SIP Trunking VoIP with WebRTC SDK」 Moon Technolabs . 2023年8月5日時点のオリジナルよりアーカイブ。 2023年 7月18日 閲覧 。
^ Jesup, Randell; Loreto, Salvatore; Tüxen, Michael (2012年3月5日). 「draft-jesup-rtcweb-data-protocol-00 - WebRTC Data Channel Protocol」. Tools.ietf.org. 2012年10月31日時点のオリジナルよりアーカイブ。 2012年9月12日 閲覧 。
^ “WebRTC 1.0: ブラウザ間のリアルタイム通信(W3C 2017年11月2日候補勧告)”. 2017年11月2日時点のオリジナルよりアーカイブ。 2019年 3月25日 閲覧 。
^ 「メディアキャプチャとストリーム: getUserMedia」. W3C. 2013年9月3日. 2014年1月2日時点のオリジナルよりアーカイブ 。 2014年1月15日 閲覧。
^ 「WebRTC: RTCPeerConnection インターフェース」. W3C. 2013年9月10日. 2012年9月5日時点のオリジナルよりアーカイブ 。 2014年1月15日 閲覧。
^ Jesup, Randell; Loreto, Salvatore; Tüxen, Michael (2021年1月). 「RFC 8831 - WebRTC データチャネル」. datatracker.ietf.org . 2022年3月10日時点のオリジナルよりアーカイブ。 2022年3月10日 閲覧 。
^ "WebRTC: RTCDataChannel". W3C. 2013年9月10日. 2012年9月5日時点のオリジナルよりアーカイブ。 2014年1月15日 閲覧 。
^ 「WebRTCの統計APIの識別子」W3C、2014年9月29日。2017年7月15日時点のオリジナルよりアーカイブ 。 2017年12月2日 閲覧。
^ Tsahi Levent-Levi (2020年4月13日). 「WebRTCサーバー:一体何なのか?」 BlogGeek.me . 2020年5月11日時点のオリジナルよりアーカイブ 。 2020年 6月10日 閲覧。
^ Tsahi Levent-Levi (2014年11月13日). 「Matrix.orgとWebRTC:Matthew Hodgson氏へのインタビュー」 BlogGeek.me . 2021年2月25日時点のオリジナルよりアーカイブ。 2020年 6月10日 閲覧 。
^ “W3C ORTC (Object Real-time Communications) Community Group”. 2014年8月19日. 2014年10月29日時点のオリジナルよりアーカイブ。 2014年10月29日 閲覧 。
^ “WebTorrent FAQ”. webtorrent.io . 2022年3月11日時点のオリジナルよりアーカイブ。 2022年3月10日 閲覧 。
^ 「Snapdropを使ってLinux、Android、iOS間でファイルを転送する方法」 MUO . 2021年8月4日. 2022年1月29日時点のオリジナルよりアーカイブ 。 2022年3月10日 閲覧。
^ Pinola, Melanie (2014年4月7日). 「同一ネットワーク上のデバイス間でファイルを転送する最も簡単で迅速な方法」. Computerworld . 2022年6月28日時点のオリジナルよりアーカイブ。 2022年3月10日 閲覧 。
^ “FilePizza: ブラウザで仲介者なしでファイルを共有 - gHacks Tech News”. gHacks Technology News . 2015年5月12日. 2022年1月23日時点のオリジナルよりアーカイブ 。 2022年3月10日 閲覧。
^ Foley, Mary Jo. 「Microsoft、Teamsのライブビデオストリーミングを補完するためPeer5を買収」 ZDNet . 2022年3月10日時点のオリジナルよりアーカイブ。 2022年3月10日 閲覧 。
^ “Overview - Peer5 P2P Docs”. docs.peer5.com . 2022年3月16日時点のオリジナルよりアーカイブ 。 2022年3月10日 閲覧。
^ 「バベルフィッシュを捕まえろ:アイルランドの通信会社が新しい種類のクラウドフォンを開発」2017年11月。2017年11月1日時点のオリジナルよりアーカイブ 。 2017年11月20日 閲覧。
^ 「ORTC APIがMicrosoft Edgeで利用可能になりました」。Microsoft。2015年9月18日。2015年10月9日時点のオリジナルよりアーカイブ。 2015年9月20日 閲覧 。
^ Firefox Notes - Desktop Archived 2014-08-21 at the Wayback Machine . Mozilla.org (2013-06-25). 2014年4月11日閲覧。
^ “Safari 11.0”. Apple Inc. 2017年11月14日時点のオリジナルよりアーカイブ 。 2017年 6月6日 閲覧。
^ Opera News Archived 2015-09-07 at the Wayback Machine . blogs.opera.com (2013-11-19). 2015年9月17日閲覧。
^ Firefox Notes - デスクトップ Archived 2021-04-01 at the Wayback Machine . Mozilla.org (2013-09-17). 2014年8月4日閲覧。
^ “WebRTCで使用されるコーデック - Webメディアテクノロジー | MDN”. developer.mozilla.org . 2021年7月27日時点のオリジナルよりアーカイブ 。 2021年7月29日 閲覧。
^ Fablet, Youenn (2019年3月12日). 「VP8を含むWebRTC 1.0への道」 WebKit . 2021年7月29日時点のオリジナルよりアーカイブ。 2021年7月29日 閲覧 。
^ 重大なセキュリティ欠陥によりVPNユーザーの実IPアドレスが漏洩 Archived 2021-01-08 at the Wayback Machine TorrentFreak.com (2015-01-30). Retrieved on 2015-02-21.
^ WebRTC の STUN IP アドレス要求 Archived 2015-02-18 at the Wayback Machine Retrieved on 2015-02-21.
^ Timmerman, Crystal (2022年2月28日). 「WebRTCは(VPN接続時でも)実IPアドレスを漏らす」 IPVanish . 2022年8月13日時点のオリジナルよりアーカイブ。 2022年 8月12日 閲覧 。
^ Raymond Hill (2021年9月17日). 「WebRTCによるローカルIPアドレスの漏洩を防ぐ」. uBlock Originドキュメント . 2016年2月21日時点のオリジナルよりアーカイブ 。 2021年 12月18日 閲覧。
^ 「リアルタイムトランスポートプロトコル(RTP)入門 - Web API | MDN」。developer.mozilla.org 。 2024年7月26日。
さらに読む
Proust, S. 編 (2016年5月). 相互運用性のための追加のWebRTCオーディオコーデック. IETF . doi : 10.17487/RFC7875 . RFC 7875. 2016年10月12日 閲覧 .
Valin, JM; Bran, C. (2016年5月). WebRTCオーディオコーデックおよび処理要件. IETF . doi : 10.17487/RFC7874 . RFC 7874. 2016年10月12日 閲覧 .
Roach, AB (2016年3月). WebRTCビデオ処理およびコーデック要件. IETF . doi : 10.17487/RFC7742 . RFC 7742. 2016年10月12日 閲覧 .
Perumal, M.; Wing, D.; Ravindranath, R.; Reddy, T.; Thomson, M. (2015年10月). NAT(STUN)を用いた同意の鮮度保持のためのセッショントラバーサルユーティリティ. IETF . doi : 10.17487/RFC7675 . RFC 7675. 2016 年10月12日閲覧 .
Holmberg, C.; Hakansson, S.; Eriksson, G. (2015年3月). Webリアルタイムコミュニケーションのユースケースと要件. IETF . doi : 10.17487/RFC7478 . RFC 7478. 2016年10月12日 閲覧 .
外部リンク
公式サイト
W3C ウェブリアルタイムコミュニケーションワーキンググループ
IETF ウェブブラウザにおけるリアルタイム通信 (rtcweb) ワーキンググループ
WebRTC ベースのビデオチャット デモ アプリ
libdatachannel、オープンソースの WebRTC ネットワーク ライブラリ