WebRTCとは
WebRTCとは、ビデオや音声、データをブラウザ間でやり取り可能にする規格です(RTCは「Real-Time Communication」の略)。WebRTCの機能を利用することで、Webサイト上でビデオ・音声チャットやファイルをやり取りできます。
具体例を見てみましょう。「appear.in」は、WebRTCを利用して開発されたWebアプリケーションで、同じチャットルームに入った人同士でビデオ・音声チャットができます(チャットルームはURLベースで分けられます)。アカウント登録やログインをしなくても使えますから、Chrome、Firefox、OperaのいずれかのWebブラウザでアクセスしてみてください。
WebRTCを使えば、このようなリアルタイムコミュニケーションを行うWebアプリケーションを作ることができるのです。
WebRTCの通信形態
WebRTCの特徴の1つは、通信をP2P方式で行う点です。通常のWebサイトでは、ブラウザとサーバの間で通信を行います。また、WebRTCとよく比較される規格に「WebSocket」がありますが、WebSocketでは必ずWebブラウザとサーバ間で通信を行うことになっています。チャットなど、ユーザ同士でデータをやり取りを行うのに使われることもありますが、その場合も必ずサーバを介して通信します。
一方、WebRTCはサーバを介さず、P2Pによりユーザ間で直接通信を行うため、レスポンス性がより高い通信を実現できます。また、下位層のプロトコルに(TCPでなく)UDPを使っていることから、品質よりもリアルタイム性を重視した通信方式といえるでしょう。
API仕様書
WebRTCのAPIは、次の2つの仕様として策定されています。
- WebRTC 1.0: Real-time Communication Between Browsers
- Media Capture and Streams
WebRTC 1.0: Real-time Communication Between Browsersは、P2Pでブラウザ間を接続するためのJavaScript API仕様です。仕様はW3Cのサイトで公開されています。WebRTCのAPIの仕様策定はW3Cが、通信プロトコルの仕様策定はIETFが行っているのですが、どちらもまだ策定途中の段階です。
Media Capture and Streamsは、PCに搭載されているカメラや、USB接続のカメラ・マイクのストリームを取得するための仕様です。仕様はW3Cのサイトで公開されています。こちらもまだ仕様策定中です。
ブラウザの対応状況
ただし、WebRTCのAPIが実装されていないブラウザもあります。本稿執筆時点(2014年10月7日)で実装されているブラウザは次の3つのみです。
- Chrome
- Firefox
- Opera
SafariやInternet Exprolerはまだ使用することはできず、スマートフォンやタブレットでWebRTCを使用するには、AndroidのChromeを使うしかありません。
これは、PC版のChromeとは異なり、iOSのChromeで使用されているエンジンにはiOSアプリ向けに提供されているSafariのエンジンを使われているためです。Appleがその機能を提供していない現在、iOSのChromeでWebRTCを使用することはできません。
また、Chromeで動いたプログラムがFirefoxやOperaで動くとも限らず、まだブラウザ間での対応状況は差があるというのが現状です。
とはいえ、着々とWebRTCを使ったWebアプリケーションは増え続けています。 ぜひリアルタイムコミュニケーションを用いたWebアプリ開発にトライしてみましょう。