ビデオ会議システム的な物を自分でこしらえてみる ~紹介編~
WebRTCを使った開発をして共有したくなってしまったので共有してみようと思います。
何本かに分けて投稿していこうと思っています。
今回は紹介編として具体的な実装の話はしません。
いかに楽してWebRTCを使った会議システム的な物を作るかをお話ししていこうと思うので、それに使う要素の話を今回は主にしていきます。
#1. なんで自分で作るんだよ
最近某ウィルスの影響でリモートワークとか、先方との会議はテレカンでとかいう機会が増えて、今までZoomとかTeamsとかのリモート会議ができるようなツールを使ってこなかった人も触る機会が増えたと思います。
TeamsとかZoomって機能沢山あるしみんな使ってるしで便利?なんだと思うんですが、個人的にはテレカンってなんか、マイクとかの不具合とかであんま好きじゃないんですよね...
なので個人的にはDiscordとかのボイスチャットツールの方が好きだったりします。
そこで周りには自分の好きなツールばかりを布教して回っているのですが、そのためにはZoom・Teamsの事を知る必要がある(ネガキャンしてやるぜ)と思って調べてみた次第です。
#2. WebRTCについて調べてみた
そこで、ちょいちょい見かけたのがWebRTCというワード。
初めてみるタームだったのでwikiで調べてみると、
ウェブブラウザやモバイルアプリケーションにシンプルなAPI経由でリアルタイム通信(英語: real-time communication; RTC)を提供する自由かつオープンソースのプロジェクトである。
ウェブページ内で直接ピア・ツー・ピア通信を行うことによって、プラグインのインストールやネイティブアプリをダウンロードを行わなくても、ウェブブラウザ間のボイスチャット、ビデオチャット、ファイル共有などを実装できるようになる。
WebRTCは、アップル、Google、マイクロソフト、Mozilla、Operaがサポートしており、World Wide Web Consortium(W3C)およびInternet Engineering Task Force(IETF)で標準化が進行中である。
WebRTCの目的は、「ブラウザ、モバイルプラットフォーム、IoTデバイス向けのリッチで高品質なRTPアプリケーションを、開発できるようにし、共通のプロトコルセットで通信できるようにすること」である。
リファレンス実装がBSDライセンスのフリーソフトウェアとして公開されている。また、マルチメディアフレームワークのGStreamerをベースに実装されたOpenWebRTCという別のフリー実装も存在する。
こんなことが書いてありました。
要約すると
- オープンソースである
- リアルタイムな通信を実現する
- P2Pで通信する
みたいな感じでしょうか。
ウェブ上でリアルタイムなコミュニケーションを実装するために使える感じですね。
#3. Skywayを使ってみよう
リアルタイムな通信を実現してくれると言っても、そうそう簡単には行きません。
P2Pの通信をするためにシグナルリンクサーバを用意する必要がありますし、NAT越えをしなくてはいけなかったりと色々と実際にWeb上でシステムを作ろうと手を動かしてみると手間が掛かるということがわかります。
そこでその問題を解決してくれるのがSkywayという、SDKです。
Peerの管理やルームチャットの実装に便利なAPIまでなんでもござれの神様のような存在なのですが、最も嬉しいのは、上述したシグナルリンクサーバやNAT越えに至るまで全部Skyway側で管理してくれちゃうんです。
#4. 最後に
想像以上に前段が長くなってしまったので実装編は次回に回します。
次回は「Skywayを使って個人チャットをサッと実装してみる」みたいなフワッととした感じで記事を書きたいと思います。
できれば年内に...