React Native開発を1年ぐらいやって得たことの感想


※個人の感想なので、内容薄め
※もっとちゃんと書いたTips記事を上げます

React Nativeとは?

  • Facebookが出している、iOS/Androidで共通のJavascriptによるコードベースを用いてネイティブアプリを作成するためのフレームワーク

React Nativeのつらいところ

  • ビルドが遅い
    • 通常のネイティブアプリ開発に比べて、余分なライブラリなどをビルドする必要があり、どうしてもビルド時間が延びる
    • try&errorが思った以上にリズム良くできないことがある
      • React Native0.61で、Fast Refreshが導入されたので、多少改善
  • バージョンが上がる速度が速い
    • まだv1に達していない上、バージョンが上がっていく速度が速い(だいたい半年に1度新しいバージョンがリリースされる)
    • ちゃんと付いていく、という覚悟が必要
    • 実際にアップグレードをやってみると、ちゃんとビルド周りの知識がある人があればそこまでハマらない認識
    • もちろん地道な作業は必要
    • React Native upgrade helperというのがあるので、それをベースに書き換えていくのが一番の近道(それでも面倒くさいが)
  • 最新のiOS/Androidがリリースされても、すぐに追従できない
    • ただこれは普通のネイティブアプリでも発生しうる

React Nativeの嬉しいところ

  • Javascript(Typescript)による開発
    • ネイティブアプリ開発で利用する言語が悪いという話ではなく、Javascriptのエコシステムの知識がそのまま使える、というのが一番大きい
    • Jest/Enzymeによる単体テスト、Redux/MobXなどのライブラリ、Prettierなどのコードフォーマッター、eslintを使ったコード規約の強制
    • チームに初学者がいる場合も、Javascript(Typescript)とReactが出来れば画面を作れる
  • Reactが使える
    • 好みの問題ですが、やっぱりReactは良いと思います

React Nativeをやるのに必要なネイティブの知識

  • Java/Objective-Cが読める知識が必要
    • ガッツリ書ける必要はほぼないと思う
  • iOS/Androidのビルド周りの知識は、そこそこ深いところまで知っておいたほうが良い
    • React Nativeではまるところがあるとすれば、とにかくビルド周り
    • パブリックなライブラリであればGithubでほぼほぼ誰かが問題を解決していることは多いが、それでもなぜその問題が解決してるのか理解できないと、新たな問題を生み出す可能性がある