ReactNativeをどんな時に選ぶべきか自分なりに整理します。
環境構築は以下がわかりやすいと思います。
環境構築:Expo XDEでReact Native入門 https://qiita.com/ykubot/items/963df6499af5ffc3a0b2
ReactNativeはどんな時に有用?
- ベンチャーなど開発リソースが少ない時
- iOS/Android開発に対して多少の知見がある人が社内にいる時
- Reactなどフロントエンドの技術者が多い時(今回触れない)
メインでは上3点かと思います。
それぞれの理由として
ベンチャーなど開発リソースが少ない時
RNはWEBフロントに近い内容でアプリの開発が行えます。
そのため、アプリ開発の知見が多少ともあれば開発が行えます。
(なくても動きはしますが、多少ないと厳しいことが多いです。詳細は後続)
開発リソースが潤沢にある場合はOSごとのパフォーマンス向上ライブラリが利用できるため、ネイティブで書いたほうが良いかと思います。
RNにもパフォーマンスを向上させるためのライブラリはいくつかありますが、iOS/Android両方に対応していることが少なく
個別最適化が多少なりとも必要になってきます。
(ex iOS:react-native-wkwebview など)
iOS/Android開発に対して多少の知見がある人が社内にいる時
Expoを使うことによって、ハードルをさらに下げることは可能ですが、主に以下のような理由でネイティブの知識が必要かと思います。
- Push通知開発
- Android/iOSのパーミッションの設定
- ネイティブAPIを使うモジュールの組み込み
上2つに関してはExpoのドキュメントを読み漁ればある程度対応はできますが、問題は最後のネイティブAPIを使うモジュールの組み込みです。
当初の計画としては、ネイティブAPIを使う予定が全くなかったため、Expoでの実装をしていました。
しかし、データ解析のためのgoogle-analytics-bridgeや広告測定のadjustはExpoに対応していないことが発覚し、類似の機能を提供しているサービスも見当たらなかったため、RN5.6で一部作り直すことにしました。
まとめ
ベンチャーなどの小規模開発で、多少ネイティブの知識がある場合はRNを使うのおすすめだよ!
それ以外はネイティブで作ることも再度検討してみてはいかがでしょうか?
間違っているところ、ご指摘などありましたらコメントお願いします!