公開してから React や Vue のサンプルを追加して、さらにルーム機能を追加しました。そして Node.js (TypeScript) から Go に開発言語を変更して、本日 19.02 をリリースしました。
最低限の機能は実装してありますし、サンプルもありますので WebRTC を P2P で動かすという目的は達成できました。2019 年 2 月頭に OpenAyame というプロジェクトを開始して、 2 月中にリリースができたのは本当に嬉しいです。
OpenAyame プロジェクトについて
OpenAyame プロジェクトは Ayame という WebRTC Signaling Server を OSS で公開し、継続してメンテナンスをしていくというプロジェクトです。Ayame は WebRTC を学びたい人、使ってみたい人、P2P を利用してみたい人向けにベンダーロックしないシグナリングサーバを公開し、より多くの人に WebRTC を広めていきたいという考えから始まっています。
機能を追加するのではなく、 WebRTC に関連した技術のみを学べ、利用できるシグナリングサーバを公開していきます。
Ayame について
Ayame は OpenAyame プロジェクトとして公開している WebRTC Signaling Server です。開発言語は Go で書かれています。
いくつかの制限を加えることによってコードをとてもシンプルに保っています。
Ayame はとても 1000 ルームくらいは余裕で処理できると思います。認証も簡単に追加できますので、是非 fork して使ってみてください。
また、Ayame の特徴として Vue や React のサンプルを提供しています。これは ES6 で書かれたのと同じ動きをするようになっています。これらサンプルを直接使うのではなく、 Vue や React で WebRTC を使うときの参考にしてもらえればと思います。今後は iOS や Android のサンプルも用意していく予定です。
Ayame はとてもシンプルに書かれてはいるため、驚かれるかもしれません。ただ WebRTC は 1 対 1 に限るのであればもともとシンプルに実現できる技術です。
Ayame の今後について
まず、一段落ということで 19.02 をリリースしました。今後はまずは TURN サーバ対応をしていく予定です。TURN サーバには coturn を利用します。また TURN サーバとの連携には Redis を利用していきます。
そのためシグナリングサーバ 1 台から、少し複雑になってしまうためあくまで TURN サーバはオプションとして、設定すれば使えるという形を撮ろうと考えています。
また、シグナリングサーバ自体の冗長化も Redis を利用して行えるように考えています。スケールアップは Go のマルチコア対応を利用し、スケールアウトは Redis を利用してできるようにしていきます。
Ayame はすでに、本番でも利用可能な WebRTC Signaling Server ですが、今後はより「繋がる」「運用しやすい」を目指して行きます。
共同開発者について
Ayame は kdxu が開発を担当してくれました。彼女の素晴らしい吸収力と開発力により 1 ヶ月かからずリリースまで盛ってこれました。本当に感謝していますし、凄いす。
まとめ
Ayame はベンダーロックが多いシグナリングサーバの世界でなんとかベンダーロックを行わないものを提供したいと考え公開しました。
WebRTC SFU というプロダクトを作っている会社としては、利益的なメリットは一切ありません。これは WebRTC プロジェクトへの貢献の一つと考えています。
今後も継続的なアップデート、さらにメンテナンスを行っていきますので、ぜひ使ってみてください。