WebRTC Signaling Server Ayame を公開しました

V
shiguredo
Published in
4 min readFeb 12, 2019

詳細は OpenAyame プロジェクト を見てください。

WebRTC Signaling Server Ayame を公開しました。WebRTC SFU を開発し販売している会社がなぜ、シグナリングサーバを公開するの?と思った方もおられるかと思います。そのあたりを書いていきます。

WebRTC シグナリングの仕様は決まっていない

これ開発側からすると、とても都合がいいんです。ただ WebRTC 初めて見ようとする人にとってはとても困ります。

実は AppRTC という WebRTC プロジェクトが公開しているシグナリングサーバがあるのですが、ちょっと高機能すぎてわかってる人にはいいんですが、わからない人にはわかりにくいという問題がありました。

Ayame は AppRTC の仕組みをできるだけ壊さず、制限を付けることでシグナリングの仕組みをシンプルにしたものです。

制限とは 1 対 1 にしか対応しないという仕組みです。P2P では新しく相手と接続するとき毎回 RTCPeerConnection を生成する必要がありますが、それを管理しなくすれば、とてもコードがシンプルになります。

そもそも 3 クライアント以上は WebRTC SFU を使うべきという考えがあるので、制限をして問題ないと判断しました。

シグナリングがわかりにくい

WebRTC はとても難しい技術ですが、それをブラウザがとても簡単なレベルまで落としてくれています。そこまでは技術者がある程度は理解しておかないとビジネスでは利用できません。

そこで、P2P でいくにしろ、SFU を使うにしろ、 WebRTC を学ぶきっかけとして小さなシグナリングサーバがオープンソースで提供されている必要があると考え、今回の公開にいたりました。

TURN との連携がわかりにくい

WebRTC というと、すぐに TURN の話が出てきます。これらはシグナリングサーバと連携する必要があります。ただその利用方法がどうしてもわかりにくいところがあります。

Ayame ではよく使われている TURN サーバである coturn との連携の仕組みも提供する予定です。TURN サーバを指定しないでも使えますし、指定しても使えるようにします。

TURN サーバへの抵抗をへらすのも、Ayame の目的の一つです。

今後

React や Vue のサンプル

どうしても WebRTC のサンプルはべた書きのコードがほとんどです。そのため、Ayame では React や Vue のサンプルコードを提供する予定です。

べた書きの WebRTC コードと同じ振る舞いをするコードを提供します。これで学びやすくなると思います。

iOS や Anroid のサンプル

AppRTC でサンプルは一応あるのですが、動かすまでの距離が少し遠いのが問題です。Ayame では iOS や Android のサンプルも提供していきます。

React Native のサンプル

React Native WebRTC Kit を開発している弊社にすきはありません。もちろん提供していきます。

DataChannel のサンプル

ファイル共有というシンプルなサンプルを提供予定です。DataChannel だけでなく、RTCQuicTransport を利用したサンプルも提供していきます。

Go によるシグナリングサーバ

Node.js もそこそこ性能いいので問題ないとは思いますが、将来的には完全互換の Go によるシグナリングサーバも公開していきます。

お試しサーバ

動作無保証での無料で利用できるシグナリングサービスを提供予定です。

まとめ

Ayame で時雨堂が直接利益を得ることはありません。単に WebRTC に興味持った人が WebRTC を学ぶために Ayame を使ってもらえればと考えています。

機能追加は一切する予定はありません。あったとしても DataChannel を使ったチャットくらいです。

とにかく学びやすい WebRTC シグナリングサーバとサンプルを提供していきます。

--

--