WebRTCとは？
Published: 2024-03-05 21:11:52

### WebRTCの定義

[WebRTC](https://webrtc.org/)WebRTCはWeb Real-Time Communicationの略で、JavaScript APIを使用して、Webブラウザやアプリ内などの2つのエンドポイント間でデータ、音声、ビデオのリアルタイム・ピアツーピア通信を提供するオープンソースプロジェクトです。この技術は、より優れたネットワーク・トラバーサル、強化されたデータ・ストリーミング、帯域幅機能など、その開始以来、大幅な進歩や改善が見られます。その強固な機能性から、WebRTCはeラーニング、[遠隔医療](https://www.pubnub.com/solutions/digital-health/)、[リアルタイムコラボレーションツールなど](https://www.pubnub.com/solutions/multiuser-collaboration/)様々な分野で広く採用され、現在の市場での地位を確固たるものにしている。

### WebRTCの歴史

WebRTCは2011年にGoogleによって初めてリリースされ、時を経てApple、Microsoft、Mozilla、Operaといった大手企業の支持を受けるようになった。Google Chrome、Safari、Mozilla Firefox、Edgeなど、モバイルとデスクトップの両方のブラウザと互換性があるため、開発者は追加のプラグインを必要とせずに、ブラウザベースのアプリケーションやモバイルアプリケーションに直接通信機能を統合することができる。

近年、WebRTCはインターネット接続の進歩やリアルタイム通信アプリの需要により、導入が急増している。その継続的な進化は、企業、独立した貢献者、標準化団体を含む技術コミュニティの協力的な努力の証です。

### 一般的なWebRTCの使用例

WebRTCは、リアルタイムの音声やビデオ通話、チャットからピアツーピアのファイル共有まで、数多くのユースケースに対応しています。技術の進歩により、WebRTCの用途はヘルスケア、ライブストリーミングプラットフォーム、ビデオ会議へとさらに広がっています：

-   ブラウザ内/アプリ内カスタマーサポートチャットは、画面共有やリアルタイム注釈などの機能で強化されました。
    
-   遠隔医療アプリケーションは、医師と患者のビデオ/音声通話を容易にし、ビデオコミュニケーションを支援し、現在では高解像度ストリームをサポートし、健康記録を共有するための安全なデータチャネルを提供します。
    
-   ピアツーピアのファイル共有は、より大きなファイルとより速い転送速度に対応できるようになりました。
    
-   WebRTCの低遅延ストリーミング機能を利用した、リアルタイム・ゲームおよびライブ・ストリーミング・プラットフォーム。
    
-   ライブビデオ・音声会議、文書編集などの共同作業ツール。
    

![](https://www.pubnub.com/cdn/3prze68gbwl1/6RGxRNvHpjDnS55Yackzm8/5c5d8953204d4735a8e1c9ba5fc23859/PeertoPeer.jpg)

### WebRTCの仕組み

WebRTCは、セッション記述プロトコル（SDP）などのシグナリングプロトコルによって促進されるRTCPeerConnectionを介して2つのブラウザを接続することで動作します。STUN (Session Traversal Utilities for NAT)やTURN (Traversal Using Relays around NAT)プロトコルのようなネットワークトラバーシング手順がWebRTCの動作メカニズムに組み込まれ、さまざまなネットワークシナリオでの接続に対応しています。これには、ファイアウォールやNATを通り抜けてでも直接接続を確立すること、パブリックIPアドレスを決定すること、必要に応じてTURNサーバーを使用してデータを中継することなどが含まれます。

### RTCPeerConnection による WebRTC の使用

WebRTC は、ピアツーピア接続を設定するための RTCPeerConnection インターフェー スを提供します。RTCPeerConnection では、信号処理、コーデック処理、ピアツーピア通信、セキュリティ、帯域幅管理を行うことで、低遅延で高品質な音声通話やビデオ通話が可能な接続を確立できます。getStats()のような追加メソッドは、接続に関する統計データを取得するために導入され、開発者が通話のパフォーマンスを監視し最適化するのに役立ちます。

### RTCDataChannelとMediaStreamによるWebRTCの使用方法

WebRTCでは、RTCPeerConnectionのコンポーネントであるRTCDataChannelを通じてデータ交換が可能です。RTCDataChannel API はピア間で任意のデータの双方向通信を可能にします。これはストリーム制御伝送プロトコル（SCTP）を使用し、信頼性が高く安全なデータ転送を提供し、直接ファイル共有やリアルタイムゲームなどの可能なユースケースを開きます。getUserMediaとしても知られるMediaStream APIは、ユーザーの同意のもと、ローカルのカメラやマイクへのアクセスを可能にする。最近のアップデートにより、ビデオ解像度、フレームレート、音質の調整など、メディアストリームをより細かく制御できるようになった。

**PubNubとWebRTCを使ってアプリケーションを構築する方法**
------------------------------------

![](https://www.pubnub.com/cdn/3prze68gbwl1/4QbGEgmhK9dXPOVj0XHIiv/4a6775807145a9efcd70e83e638a2f30/WebRTC-Diagram.png)

最初に、ブラウザAからブラウザBにSDPを転送する何らかの方法が必要です。PubNubネットワークは、これらのアプリケーションのシグナリングサーバーとして使用できます。PresenceやStorage/Playbackなどの機能も、これらのアプリを拡張するために使用できます。

WebRTCプロトコルやアプリを通じて他のユーザーを呼び出す場合、発信側は着信側が現在オンラインかオフラインか、どのデバイスを使っているか、着信を受けられるかどうかなどを知る必要がある。

プレゼンスは、そのようなすべての情報を提供し、接続可能なユーザーを表示することを可能にします。これは、ユーザーが利用可能でない他のユーザーに接続しようとするのを防ぐためのシグナリングに不可欠です。

### WebRTCプロトコルとテキストに関する注意事項

WebRTCプロトコルはストレージ機能を提供しないため、どのようなメッセージが送信されたかの記録は残りません。具体的には、テキストチャットでは、ユーザーは以前のチャットの会話の履歴を期待しています。PubNubの [保存/再生](https://www.pubnub.com/blog/getting-started-swift-pubnub-storage-playback-presence/) 機能により、ユーザは希望する期間の過去の会話の履歴を見ることができます。

基本的に、PubNubは以下を提供します：

-   SDPシグナリング
    
-   [プレゼンスステータス](https://www.pubnub.com/how-to/admin-portal-presence/)
    
-   チャットメッセージの保存
    

WebRTCとWebSocketsの比較
--------------------

[ウェブソケット](https://www.pubnub.com/blog/what-are-websockets/)は、クライアントとサーバー間のTCPベースの全二重通信プロトコルを提供します。逆に、WebRTCはUDPを介したピアツーピアのやりとりをサポートし、リアルタイムのビデオやオーディオのデータストリームを可能にします。WebRTCとWebSocketsの区別は、リアルタイム・アプリケーションの需要が高まるにつれて重要性を増しており、多くの開発者が両技術のユニークな長所を活用するようになっています。

**WebRTCで音声とビデオを使用する方法**
------------------------

WebRTCを使えば、ビデオや音声のコミュニケーションをどんなウェブサイトにも簡単に実装することができます。これにより、Webサイトに高度なインタラクションレベルが追加され、ユーザーはサイト運営者やユーザー同士で、コンテクストやリアルタイムでコミュニケーションをとることができます。このような機能は、ユーザーが番号に電話したり、プラグインをダウンロードしたり、ウェブサイトを離れたりする必要がある現在の制限よりも望ましい。例えば、金融機関のウェブサイトでは、WebRTCコミュニケーション・アプリを簡単に組み込むことができ、ユーザーは金融機関の担当者とすぐに話すことができる（自動化された担当者と延々と話すために電話を使わせるのではなく）。

音声とビデオによるWebRTCのもう一つの例は、Skypeのようなビデオ・チャット・アプリケーションで、これは完全にウェブ・ブラウザで使用できる。つまり、エンドユーザーはソフトウェアやプラグインをインストールする必要がなく、ブラウザー間でビデオ、音声、テキストチャットを介して簡単に互いに接続することができます。我々が構築したのは [WebRTC.coを構築しました。](https://www.pubnub.com/blog/integrating-video-calling-in-chat-with-webrtc-and-pubnub/)を構築しました。 [WebRTCとPubNub](https://github.com/stephenlb/webrtc-sdk).

![](https://www.pubnub.com/cdn/3prze68gbwl1/3hU9HWjdkEj3Y15NfmostG/aa805363e6a0d2afe4b1d365e1625201/WebRTCSkype.png)

**WebRTCの未来は？**
---------------

ビデオとデータサービスとして、WebRTCはほぼここにとどまるでしょう。主要なブラウザのプレーヤーからの賛同と、モバイルとデスクトップのAPIを最新に保つためのコミットメントにより、出会い系、[ゲーム](https://www.pubnub.com/solutions/gaming/)、ヘルスケアなどのサービスのためのビデオチャットをサポートするツールで、消費者をプラットフォーム上に維持するために、より多くのアプリを見つけるでしょう。

#### 目次

[WebRTCの定義](#h-0)[WebRTの](#h-1)[歴史](#h-0)[一般的な](#h-1)[WebRTCの使用例](#h-2)[WebRTCの](#h-3)仕組み[RTCPeerConnectionを通してWebRTCを使用する方法](#h-4)[RTCDataChannelと](#h-5)[MediaStreamPubNubとWebRTCを使用してアプリケーションを構築する](#h-6)[方法](#h-5)[WebRTCプロトコルとテキストに関する注意点WebRTC](#h-7)[vs.](#h-8)[WebSocketsWebRTCでオーディオとビデオを使用する](#h-9)[方法](#h-8)WebRTC[の将来は？](#h-10)

PubNubはどのように役立つのか？
==================

この記事は[PubNub.com](https://www.pubnub.com/blog/what-is-webrtc/)に掲載されたものです。

PubNubのプラットフォームは、開発者がWebアプリ、モバイルアプリ、IoTデバイス向けにリアルタイムのインタラクティブ機能を構築、提供、管理できるように支援します。

私たちのプラットフォームの基盤は、業界最大かつ最もスケーラブルなリアルタイムエッジメッセージングネットワークです。世界15か所以上で8億人の月間アクティブユーザーをサポートし、99.999%の信頼性を誇るため、停電や同時実行数の制限、トラフィックの急増による遅延の問題を心配する必要はありません。

PubNubを体験
---------

[ライブツアーを](https://www.pubnub.com/tour/introduction/)チェックして、5分以内にすべてのPubNub搭載アプリの背後にある本質的な概念を理解する

セットアップ
------

[PubNubアカウントに](https://admin.pubnub.com/signup/)サインアップすると、PubNubキーに無料ですぐにアクセスできます。

始める
---

[PubNubのドキュメントは](https://www.pubnub.com/docs)、ユースケースや[SDKに](https://www.pubnub.com/docs)関係なく、あなたを立ち上げ、実行することができます。