React Native で WebRTC を利用するには react-native-webrtc という便利なライブラリがあるのだが、libwebrtc の追従が遅い事や細かい問題を多く抱えていること、fork するよりは新規で開発してしまったほうが自社でメンテしやすい事などがあり、あらたに shiguredo/react-native-webrtc-extra として開発することにした。
開発方針
- libwebrtc 最新版に追従
- Swift / Kotlin で開発
- できるだけ WebRTC API (Chrome 方言) に準拠
- ファーストリリース時には react-native-webrtc に可能な限り互換
- DataChannel に関する機能は実装しない
- ライセンスは MIT と Apache License 2.0 のデュアルライセンス
- arm64 のみの対応
なにより libwebrtc への追従が一番重いと考えているが、今の react-native-webrtc では追従が難しいため、新規で作り直している。ついでに言語も Swift と Kotlin で開発している。
react-native-webrtc とできるだけ互換性を保ちたいとは思っているが、開発速度的にどこかでこちらが上回ると見ているのと、libwebrtc を最新版に追従していくこともあり、最初のリリース以外は互換性を捨てていくと考えてもらって構わない。
DataChannel は時雨堂では利用しないため、対応を入れないし、受け入れない。必要あれば fork してほしい。
リリース
ファーストリリースがいつになるかは明言できない、すでに react-native-webrtc を利用しているお客様がいることもあり、そのお客様が利用できるよう早めにリリースできればと考えている。
リリース後は基本的にバグ修正以外の要望は受け入れない方針で開発刷る予定だ。fork 歓迎。
また、 libwebrtc のリリースが 6 週間サイクルのため、それに合わせてアップデートしていく方針。バージョン番号の付け方は要検討したい。
WebRTC SFU Sora 向けの SDK
このライブラリをベースに開発できればよいが、どうなるかはわからない。一応 react-native-webrtc-extra ができれば、後はシグナリング周りだけなので特に問題なく Sora でも利用可能だと思う。
余裕ができてからになるが Sora で利用するサンプルを用意する予定だ。