Pocket

WebRTCのPeer to Peer接続に必要なもの

それでは、早速ビデオチャットアプリを作ってみたいと思うのですが、WebRTC接続における、基本的な仕組みは理解しておいた方が良いかと思います。まず、Peer to Peerという技術は、簡単に言うとクライアントとクライアントの接続の際に、間にサーバを介さず、直接端末同士が接続する技術となります。では、WebRTC接続をする際にサーバは必要がないのかというと、そういう訳ではありません。Peer to Peerの接続を可能にするためのサーバが必要になります。

1. シグナリングサーバ

シグナリングサーバとは、クライアントとクライアントを繋げる仲介役のサーバとなります。直接Peer to Peerで接続するとは言え、相手のIP情報など、通信に必要な相手の情報を、何処かで探したり教えたりする処理は必要になります。その役割を担ってくれるのがシグナリングサーバです。

2. STUNサーバ

Peer to Peerで接続する際に、必ず障壁となる部分がNATと呼ばれるものです。グローバルIPとプライベートIPを切り替える技術のことをNATというのですが、個人の端末を特定するために、このNATに穴を開けて接続を試みる処理を行うのがSTUNサーバです。

3. TURNサーバ

TURNサーバはSTUNサーバでの接続がうまく行かなかった場合に、別の手段でNATを越えて接続を試みるサーバです。一般的にはSTUNで可能な場合はそちらを利用し、TURNサーバでの接続は最終手段という形で使われます。

まずは、便利なプラットフォームを利用しよう

こうして必要なものをあげてみると意外とWebRTCって大変だな、ハードルが高いな…と思うかと思います。但し、それを解決するために、簡単に開発が出来るような、各種ライブラリやサーバを準備してくれているサービスが、幾つか存在します。まずはそういうサービスを利用した開発がお薦めです。

有名なサービスをあげてみます。

PeerJS

http://peerjs.com/
peerjs

PeerJSはWebRTCのJSライブラリで、複雑なWebRTCにおける処理をシンプルに使えるようにフレームワーク化されています。PeerJSではシグナリングサーバも提供されているので、このPeerJSを使えば最低限の簡易的なビデオチャットツールが開発出来ます。

SkyWay (by NTTコミュニケーションズ)

https://nttcom.github.io/skyway/
skyway

日本国内のWebRTCプラットフォームとして有名なSkyWay。PeerJSライブラリをベースにしたプラットフォームで、簡易的なサンプルやスマホ用の開発キットまで用意されています。シグナリングサーバ、及びSTUN/TURNサーバも準備されているため、SkyWayに登録するだけで、本格的なツールが開発出来るかと思います。現在は無償ですが、将来的には有償化するという話もあります。

OpenTok (by tokbox)

https://tokbox.com/
tokbox

世界最大の規模を持つWebRTCプラットフォームで、利用は有償になりますが、非常に安定したサーバと豊富なライブラリを提供しているサービスです。商用利用には一番適したプラットフォームかと考えております。

今回は日本語のドキュメントなどが充実している、国内プラットフォームのSkyWayを使ってツールを作ってみましょう。JSやiOS、Androidなどのライブラリや開発キットの他、各種サーバも準備されており大変おススメです。また、今後有償化されるというお話も聞きますが、まだ無償でこちらのプラットフォームを利用出来ますので、今の内にWebRTCに少しでも触れていきましょう!

Webデザイナー兼、制作ディレクター。オンライン英会話「ワールドトーク」の立ち上げ、及び40社以上のオンライン英会話、100社以上のオンラインマッチングサイトの立ち上げに関与。毎月SEOとオンラインマッチングビジネスのセミナーで講師として登壇中。
Pocket