TAMINIF’s blog

大阪在住のWebエンジニア。iOSアプリもやってます。勉強会にも参加してます。最近はマネージャー色強め

WebRTCを使ってニコ○コ生放送みたいなiOSアプリを作る

はじめに

タイトルは釣りです。多分もう古くて今動画配信といえばInstagramとかTikTokとかライブフリマとかだと思うんですけど
おっさんなので許してください。

概要

WebRTCという技術を知って、今なら無料のサービスだけでこういうの作れるよなとずっと考えていて
去年11月にあのサービスもWebRTC技術を使うことを発表したこともあって、先にやってみました。

スクリーンショット

roomListImage
ルーム作成・ルーム選択画面
配信視聴
配信画面と視聴画面

Github

github.com

アプリの説明

同アプリ内で配信と視聴ができるだけのアプリです。

配信者

配信者はルーム名を入力し、ルームを作成します。
ルームを作成したところから配信が始まり、ルームを退室するまで配信を続けます。
配信にはWebRTCを使用しており、SkyWay SFUを使うことで1対多の配信を可能にしています。

視聴者

視聴者はルームを選び、入室したルームで配信者によるライブ配信を視聴できます。
配信者がルームを退室するまで視聴が可能で、配信者がルームを退室すると視聴者もアラート表示後に退室します。

良いところ

配信にWebRTCを使用しているため、ほぼ遅延なしで配信が可能です。
また、SkyWayとFirebaseを使用して作成していますが、無料の範囲で動かすことができます。

Firestoreを使ってみて

前回のSkyWaySFUSampleを作った時に初めてSkyWayのSFUを試してみましたが、今回はFirestoreを試しに使ってみました。
Realtime Databaseとの使い方の違いに戸惑ったけども、使ってみると型を保持したり一つのコレクションに多くの値を持てたりとRealtime DatabaseよりDBっぽく使えるので、正式サービス化を待っていろんなシーンで使っていきたいです。
コレクションとドキュメントをどう使い分けていくかはまだわからないので、使い方ケースみたいなものがあれば見てみたい。

改善点

配信と視聴しかできないのですが、Firestoreのデータの中には現在何人が視聴しているかを格納しているので、それを表示させることや
WebRTCで配信しているのでWebにも対応可能なのでその対応をすることなど、やれることはいっぱいあるが
一旦出すところまでやったので、そのうち気が向いたらやりたい。

まとめ

このネタでWebRTCの勉強会やiOSアプリの勉強会に参加していきたい。
なお、このアプリを作成中にYoutubeさんがWebRTCでボタンクリックだけで配信できる機能をリリースしました。
この機能はWebRTCだけじゃないけど、GoogleさんもWebRTCを使ってサービスを広げるみたいです。