ReactNativeで簡単なアプリを作ってExpoとReactNativeCLIの比較をしてみた
作ったもの
食材毎に大さじとか小さじをグラムに変換するアプリ
既に似たような物が出ているけど、家族からの要望で作ることにした。
折角なので、前から気になっていたReactNativeで作ってみる事にした。
ちなみにReactjsは使ったことはありますが、ReactNativeは初めて触りました。
課題を作る
ただ作るだけでは一瞬で作れそうで面白くないので、知見を深めるために課題を作った。
- Expo とReactNative CLI両方を試す。
- 広告を乗せる(Admob)
- Typescriptで書く
作った感想
ネイティブモジュールを使わないのであれば、Expoが断然、楽です。今回作ったアプリもネイティブモジュールを使わないアプリなので、Expoでまず作ってみましたが環境構築から実装完了まで2日ぐらいで出来ました。React.jsと殆どのかわらない感じなので、迷うことなく作る事が出来ました。また、リリースビルドもiOS側でXcodeを使わずにビルド出来てしまうので、マジに楽で感動します。 一方、次にReactNative cliを利用した方では結局、3日近くかかりました。アプリのソースコードはExpoアプリからコピペで移したのにです。なので、もしコーディングから始めていたら実質一週間ぐらいはかかった事になると思います。
react native cliでは何にそんなにハマったのか、まず環境構築でハマる。react-native initで吐き出されたテンプレートプロジェクトをそのまま実行しても動かない。。。issueを漁りversion固有の問題だと分かり何とか動来ましたが、最初にコードを追ってバグを探していたので時間がかかりました。無駄に時間を浪費するだけなのでReactNativeで上手くいかないと思ったら、まずはGithubのissueをチェックした方がいいです。その他には、admobのプラグインもすんなり動作せず、これもgithub issueを漁り解決しました。Expoで作っている時はあまり感じなかったのですが、ReactNativeってやっぱりまだまだ不安定な要素があるのだなと痛感しました。おかげでAndroidとiOSのビルド周りに詳しくなりましたが、、、。
対して、ExpoではExpo kitで提供しているAPIであれば、ほぼ問題なく動作する安心です。Expoで作っている時にはCliで作っていた時の様な解読するのが困難なエラーが出て困った事は起こらなかったです。
また、デバッグに関してもExpoの方が素早く軽快にデバッグできました。まず、Expoではnativeのビルドが無くJSをExpoアプリへバンドルするだけなのでビルドが圧倒的に早いです。CLIで作る場合はネイティブも含めビルドされるので、結構時間がかかる。また、ホットリロードも上手く行かなくなる事があり一回アプリを落として再ビルドというパターンもCLIで作っている時は良くありました。
結論
という事で在り来たりな結論ですが、expoのAPIにはカメラやセンサー類、プッシュ通知も提供しているので、APIを眺めて要件に足りているのであればExpoで作らない理由はないと思います。