ReactNativeアプリ開発 経緯/感想

Shinsuke Nishikawa
ebisu-blog
Published in
Jul 28, 2021

ReactNativeアプリを開発し、ストアにリリースして今日でちょうど1年なので、その経緯や感想を述べたいと思います。

まず、ReactNativeでアプリを開発することになったのは、Swit/Kotlinでネイティブ実装するほど余裕がなかったというのが大きな理由です。コストとスケジュールですね。1ソースでiOS/Androidを開発する必要がありました。もちろんReactNative以外も選択肢にはあったのですが、1度経験があった、Javascriptで開発できる、Expoがある、というのが決め手でした。

そしてReactNative#Expoで開発をしていたわけですが、1ヶ月ほど経過して2つの大きな問題が起こります。

当時のExpoのバージョンでは次のことができないことがわかりました。

  • Firebase Analyticsが使えない
  • Backgroundで位置情報が取得できない

完全に調査漏れでかなりショックを受けました。その後狼狽える暇もなく、いろいろ試行錯誤し、その結果、私達はExpoを捨てるという選択をしました。いい意味でも悪い意味でも、ここがこのプロジェクトのターニングポイントだったと思っています。

この時点で1ヶ月ほどロスをしてしまい、なんとかそれを取り戻す必要がありました。最初の1ヶ月はUIを構築していたのですが、まだバックエンドの機能は未着手でした。

そこで取り入れたのが、mBaaSです。もともとGCP/Firebaseを使う想定はしていましたが、mBaaSではありませんでした。ReactNative + Firebase (mBaaS)に舵を切ることで大幅なスケジュールの遅れを取り戻す作戦をとったわけです。

バックエンドの最初の構想は、Google App EngineかCloud Functionsを経由してデータベースにアクセスするごく一般的なWeb APIの構成でした。mBaaSとして実装することに何も問題は起きませんでしたが、Firestoreのコレクションやサブコレクションのリレーションの設計は何度もやり直すことになりました。特に1:Nのキー参照モデルを利用するかどうかは非常に悩みました。

Expoが無いとはいえ、開発は順調に進み、いまは安定稼働をしています。リリース後、あるTwitterユーザのトゥイートをきかっけに、1日でユーザが2万人増えた時期もありましたが、Firebaseはいとも簡単にさばいてくれました。Firebaseはほんとうに素晴らしい!プロトタイプ開発やスタートアップで重宝したいと思います。

さて、ReactNativeはバージョンアップが大変だとは聞いていましたが(前回もそうでしたが。。)、本当にそうです。いまもこの問題は抱えています。何か不具合が発生したときの調査も原因を突き止めるのに時間がかかったり、OSのアップデート等で突然ビルドができなくなることも頻繁にあり、課題はたくさんあります。

とはいえ、Javascriptが得意であれば、ReactNativeは選択肢のひとつになると思います。運用面においては目を瞑れば、開発効率はかなりよく、プロトタイプ開発ではより効果がでます。

--

--

Shinsuke Nishikawa
ebisu-blog

いつもたのしく I write my daily feelings, thoughts, roadbike,work, hobbies, and programming.