Yoshi.dev

技術系の趣味、またはやった仕事やそこから学んだことを忘れないために

ReactNativeの技術採用について考えてみた(殴り書き)

仕事のプロダクトでReactNative採用するかどうか考えてみた

メリット
・自分のチームはWebエンジニアのみだったので、新しくネイティブエンジニアを採用するよりも色んな意味でコスト低そう(人件費、採用労力)
ios,androidアプリを一つのコードベースで作成できる。
・結構コミュニティが大きそう。問題があってもgithubのissueを見ると結構情報がありそうなのでなんとかなりそうな印象がある。
・とりあえず使ってみたけどそこまでネイティブの知識がなくてもアプリが作れた。正確には一時期androidやってたので知識が無いわけではないが、触った感じReactが出来ればすんなり入れると思う。
Facebook系以外でもAirbnb等、採用事例が結構多い。国内でもメルカリなど最近の会社での採用事例を目にすることも多い。ゲーム見たいなめちゃくちゃ動きを求められるようなものじゃない限り対応できそう。AbemaTVとかはどうなんだろ?
Facebookが作ってるので、今後のアップデートにも期待できる(ような気がする)現状、コミットも活発。
・CodePushを使えばストアのリリースを通さずにアプリを更新できる。javascriptや画像などの静的ファイルの変更はコレで対応できる。
・CodePushのおかげでリリースサイクルが通常のネイティブ開発より早められそう。緊急時にも対応しやすい。(お金が結構関わるのでうちのサービスに向いてそう)
・コードの変更がすぐ反映されるため、swiftやkotlinを使ったネイティブ開発よりもスピーディな開発ができそう

デメリット
・バージョンがまだ1じゃない:2週間単位ぐらいでリリースされているっぽい。一つ前のバージョンの最終リリース版を使っておけば変なバグはある程度回避できるっぽい
・ネイティブの最新APIを取り入れるのに少しコストがかかる:既存の機能(カメラを使うとか)は既にある程度有志の方々のライブラリ等でカバーされているらしいが、新たに追加されたネイティブの機能は自分でつなぎこみを行うか、ライブラリの登場を待つ必要がある。
・リリース部分等でネイティブエンジニアとしての知識が求められるところもある。でもググればどうにかなると思う。
Chrome Dev toolでネットワーク通信の監視がデフォルトで出来ないのが気になった。でもissueみたら解決方法載ってたのですぐ解決した。


結論、そこまで大きなデメリットがわからなかった、かつ自分たちのプロダクトはそこまで動きを求められるようなアプリでは無いので、採用しようと決めた。

本音は自分がやりたかったから。

あんま技術選定ってしたこと無いし自信ないなー。とりあえず使いたければ使えばいい!