本日 React Native 向け WebRTC ライブラリをリリースしました。
もともと React Native 向けの WebRTC ライブラリはあって、自社でもそちらを使っていたのですが、どうも仕事でやってる方は一人しかおられないようで、そちらに依存するのは難しいということと、実際に libwebrtc を追従しやすくしていく事を考えると、cocoapod や jcenter などを使って別途管理するという仕組みがどうしてもほしいと考えていました。
先程のリリースの記事で、CTO の SUZUKI Tetsuya も書いていますが、どうしても納得できる仕組みが fork や Pull-Request では解決できなさそうという思いもあり、新規で作り上げることにしました。
技術的な話は先程の記事を御覧ください。ここからはなぜ React Native なのかという話を書いていこうと思います。
話は単純で React Native に自分がとても興味を持ったからです。自分はモバイルはわかりませんし、さらに React もほぼ書けません。フロントエンドすらわかりません。
React Native はよくある iOS や Android のコードを一つにできる、しんどくなるパターンが目に見えるフレームワークです。
実際問題 iOS と Android コードベースは別の方が良いのは間違いありません。ただ、WebRTC を利用する仕組みの場合は「単機能」なアプリを作るパターンが多いです。その場合プロトタイプを高速に作れるかもしれない React Native がとても輝いて見えました。
iOS と Android を別に作れるリソースがあれば、最初からそうすべきです。ただ、あまりリソースがないところでウェブと同時にリリースしたい場合は React Native は選択肢の1つとしてはありだと考えています。
最終的には React Native を捨ててもいいと思います。ただ、とっかかりとして動くものをとりあえず作るのであれば、悪くない選択肢と考えています。
そのため、なんとか React Native の WebRTC がほしかったというのが理由です。
まずは iOS 対応でリリースしました。今後はあせらず Android 対応をしていこうと思います。既存の SDK が対応している機能についてはお客様の要望ベースで対応していければと考えています。
もちろん libwebrtc や React Native のバージョンにはできるだけ追従していくつもりです。
また、足りない機能はガンガンフォークして好きに追加して使ってもらえればと思います。
WebRTC を利用したアプリを作る時、プロトタイピングのコストを少しでも減らせればと思います。
そうそうあの Discord のモバイルクライアントは React Native です。
React Native + WebRTC のアプリと言えばこれになります。ただ、めちゃくちゃ手を入れてることがわかってしまいましたが … 。
今回リリースした React Native WebRTC Kit はドキュメントが充実しているのも売りです。
ぜひ見てみてください、React Native で WebRTC アプリが作りたくなると思います。