svg-animation
ブログ一覧

React Nativeで「ViCOLLA」を開発して得た4つの知見

DoQuest社、HappyLifeCreators社と共同で開発したアプリ「ViCOLLA」が、2019年6月17日にリリースされました。勉強計画をたてることができるアプリです。

弊社は、プログラムデザイン、DB設計、API開発、アプリ開発を担当しました。技術構成は次のとおりです。

  • React Native(TypeScript、非expo)、Native-Base
  • PHP Laravel

React Nativeでのアプリ開発は何度か経験していましたが、今回のように複雑なUIを作ったのははじめてでした。得られた知見を、4つにまとめます。

APIは、データではなくUIから設計する

beta版のリリース時点では、APIが遅く、無駄も多い状態でした。

そこで基本に立ち返り、次の見直しをしました。

  • レスポンスを圧縮し、キャッシュする
  • インデックスをすべて見直す
  • すべてのSQLの実行計画を確認する

これだけでも、かなり速くなりました。SQLの発行回数も確認すると、1回で取得できるものを何度も発行している箇所が多く、そこはプルリクエストで直しました。

最後にAPIを設計し直しました。当初予定していたAPIは30弱でしたが、細分化した結果、その1.5倍に増えました。

無駄をなくすには、データだけを見ていてはいけません。そのAPIを使うUIをすべて把握してはじめて、よいAPI設計ができると実感しました。

Reduxは、理解に時間がかかるが、なくては困った

Reduxは理解するまでにかなり時間がかかりました。いまも完全に理解できているかは自信がありません。それでも、この仕組みがなければ大変なことになっていたと思います。Reducerを経由してアプリの状態を管理できるのは、とても助かりました。

難しいのはスコープの決め方です。今回は画面単位でReducerを作りましたが、ドメイン単位のほうがよかったかもしれません。

TypeScriptは、型がすべて

型の恩恵は大きく、素晴らしいの一言です。

UIコンポーネントは、使う前に実現できるかを確かめる

React Nativeなら、基本的にどんなUIでも実現できそうです。

ただ、Native-BaseのようなUIコンポーネントを使う場合は、必要なUIを実現できるかを、あらかじめ確かめておくのが無難です。Native-Base自体は素晴らしいUIを提供してくれますが、要件を満たせるかどうかは別の問題です。満たせないと、結果的にForkして使うことになり、アップデートが難しくなります。

ブログ一覧