「WebRTCでサーバーレス通信を実現したいが、方法が分からない……」そんなお悩みをお持ちの方へ。WebRTCでは、実運用においては多くの場合サーバーが必要となりますが、限定的なシーンでは完全にサーバレスを実現する方法があります。
本記事では、WebRTCプラットフォームを運営するSkyWayが、サーバーに依存しないP2P通信の仕組みや、サーバーレスが可能な具体的な条件をわかりやすく解説。SkyWayを活用した効率的なWebRTC活用法もご紹介します。
※本記事においては、『サーバーが不要なこと、介さないこと』を『サーバーレス』と表現しています。
WebRTCの代表的なSDKとして、NTTコミュニケーションズが開発、運営する「SkyWay」があります。 「SkyWay」とは、ビデオ・音声通話をアプリケーションに簡単に実装できる国産SDKです。⇒無料で始めてみる
WebRTCとは?
WebRTC(Web Real-Time Communication)は、ウェブブラウザ間でリアルタイムに音声・映像・データを直接やり取りできる技術です。プラグイン不要で動作し、低遅延のP2P通信が特徴です。通信の確立にはシグナリングサーバーやNAT越えのためのSTUN/TURNサーバーが必要です。Chrome、Firefox、Safariなど主要なブラウザで標準サポートされており、ビデオ通話、画面共有、ライブ配信などに広く利用されています。
以下の記事にてWebRTCを詳しく解説しているので、ご参考ください。
WebRTCでサーバーレスは可能?
WebRTCで完全なサーバーレスは難しいです。P2P通信自体はサーバー不要で可能ですが、通信を開始するために必要な、シグナリングやNAT越えにはサーバーが必要です。
ただし、隣接端末間やローカルネットワーク内などの特定の条件であれば、サーバーレスのWebRTCが実現可能です。
後述で詳しく解説していきます。
WebRTCで必要なサーバーとは
WebRTCは、P2P(Peer To Peer) 通信を前提としており、2つのデバイスが直接データを交換できる仕組みを提供します。したがって、理論上、通信そのものにはサーバーが必要ありません。
ただし、シグナリングサーバー、STUN/TURNサーバーが必要になることがあります。
まず、P2P通信について解説します。
P2Pとは
P2P(Peer To Peer)とは、サーバーを介さずに端末同士が直接通信する仕組みです。WebRTCにおけるP2Pは、音声・映像・データをリアルタイムでやり取りする際に使用されます。特徴として、通信遅延が少なく、サーバーの負荷を軽減できます。ただし、P2P接続には以下の要素が必要です。
- シグナリングサーバー
- STUN/TURNサーバー
以下で詳細に解説します。
シグナリングサーバー
シグナリングサーバーは、WebRTCで通信を開始するための情報交換を行う役割を持つサーバーです。音声や映像などのデータ通信自体はP2Pで行いますが、接続前には以下の情報を交換する必要があります。
- SDP(Session Description Protocol):通信相手のIPアドレス、ポート、メディア形式
- ICE(Interactive Connectivity Establishment):NAT越え用の通信経路情報
シグナリングサーバーは通信確立後は不要ですが、WebRTCの接続準備には多くのシーンで利用される存在です。
STUN/TURNサーバー
STUN/TURNサーバーは、WebRTCでP2P通信を確立する際に必要なサーバーです。
-
STUNサーバー(Session Traversal Utilities for NAT):
NAT内の端末が外部IPアドレスとポート番号を知るために使います。NAT越えが可能な環境ではSTUNのみでP2P通信が確立します。
-
TURNサーバー(Traversal Using Relays around NAT) :
NAT越えやファイアウォールの制限で直接接続できない場合、中継サーバーとして通信をリレーします。P2P接続が不可能な場合のバックアップです。
シグナリングサーバー、STUN/TURNサーバーにより、WebRTC通信が確立されます。
P2P通信やシグナリングサーバー、STUN/TURNサーバーなどのWebRTCの仕組みについては、以下の記事にて詳しく解説しているので、ご参考ください。
完全にサーバーレスを実現するには条件が必要
完全にサーバーレスなWebRTCを実現するには、サーバー以外の何らかの方法でSDPを交換し、端末同士が交換したSDPの情報を疎通可能である必要があります。たとえば、以下の条件で実現可能です。
- 同じローカルネットワークに接続している
かつ
- BluetoothやQRコードでSDPを交換する
このように通信開始時に従来サーバーが行う機能を代行する手段が確立できれば、サーバーレスでのWebRTC通信が実現できます。
SkyWayなら完全にサーバーレスで実装可能
上述で説明した条件であれば、サーバーレスも可能ですが、「なかなかクリアするには厳しい……」「開発したいサービスでは難しい……」という方も多いと思います。
そんな方ににおすすめなのが、「SkyWay」です。
NTTコミュニケーションズが提供するWebRTCプラットフォームの「SkyWay」であれば、サーバーレスでWebRTCを実装できます。
シグナリング、STUN/TURNサーバーの機能がクラウドで提供されるため、開発者はサーバー構築の手間を省くことが可能です。
「SkyWay」とは、ビデオ・音声通話をアプリケーションに簡単に実装できる国産SDKです。
大きな特徴としては、以下が挙げられます。
- スピーディーな開発ができる:
開発資料が豊富かつ日本語でわかりやすい、国内エンジニアがサポートしてくれる - 信頼性・安全性が高い:
NTTコミュニケーションズが開発、運営する国産SDK。サービス歴は10年以上で、累計導入サービス数も21,000件以上 - 無料で開発スタート:
開発検証用として、Freeプランあり。テスト検証期間中は無料で利用可能。商用サービス提供後も基本利用料11万 + 従量課金制で安心。
WebRTCのSDKとして提供されているものは、海外製が多いため、開発ドキュメントも英語か和訳のもので開発しにくい傾向にあります。 「SkyWay」であれば、NTTグループが開発、運営する安心の国産SDKかつ、国内エンジニアがサポートしてくれるため、開発運用工数も大幅に削減でき、開発のしやすさからもおすすめです。
テスト検証用は無料のため、ぜひアカウント登録をしてみください。
まとめ
WebRTCはP2P通信によってサーバー不要でデータ交換が可能ですが、通常、通信開始にはシグナリングやNAT越えのためのサーバーが必要です。ただし、同一ネットワーク内、かつ通信情報の交換を独自に準備することで完全なサーバーレスが実現できます。SkyWayを使えば、サーバーレスのWebRTC通信が手軽に実装可能なため、おすすめです。