Safari 11 で WebRTC に対応した今、スマートフォン向けのネイティブアプリでの WebRTC はどうなるのかという相談をお客様から受けることが多い。
結論
2017 年の 11 月、現時点ではスマートフォン向けの WebRTC アプリを作るべきで、スマートフォンのブラウザに期待してはいけない。
Safari はまだ課題は多く、Android の Chrome は思った以上に WebRTC が動作しない。
理由
単刀直入に言えば、iOS の Safari や Android の Chrome で動かないという声がお客様から頂いているから。
- Safari はコーデックが H.264 で固定されてしまう
- Safari はとりあえず対応したであり、不安要素は多くある
- Android の Chrome では端末依存で VP8 や H.264 が動かない場合がある
- Android の Chrome では端末依存で getUserMedia が動かない場合がある
- Android の Chrome では WebRTC が不安定
現状このような状況なので、スマートフォンで WebRTC を利用した何かを作る場合はネイティブアプリを開発することを見積もりに入れたほうが良い。
React Native
WebRTC を中心としたアプリ、つまり会議やセミナー、面談といったシンプルなものであれば、 React Native の利用を推奨している。
ただ、 React Native が手放しで良いかと言われると、厳しい。ライブラリで利用している libwebrtc が古かったり、React Native のライセンス問題はまだ片付いていない。
iOS / Android
がっつり色々やっていきたいのであれば、正直それぞれで頑張る必要がある。
時雨堂でも iOS と Android の SDK は用意している。Android は今年の夏にリリースし、一通りの機能を実現できる。
https://github.com/shiguredo/sora-android-sdk
また iOS は現在開発中で 2017 年 11 月中にはリリース予定の 2.0 では、カメラとライブラリが密結合していたのを分離することで、SNOW といったカメラ映像を加工したものを配信することができるようになる。
https://github.com/shiguredo/sora-ios-sdk
双方向な配信でターゲットからスマートフォンを外すことはできないだろう。WebRTC を利用した場合にはまずブラウザではなくスマートフォンアプリを開発する事を検討してほしい。
蛇足
もちろんブラウザだけで完結することが望ましいとは思っている。そのためスマートフォンのブラウザ端末、特に Android の Chrome での WebRTC 動作はもう少し情報を集めて公開していく必要があると考えている。
第1回 WebRTC SFU Sora セミナー
WebRTC の現状や Sora の機能の紹介やデモ、気軽にふわっとした感じでセミナーをやりますので興味がある方、お気軽にご参加下さい。