今開発してる「行きたいとこリスト」はfirebase + ライブラリ無しのjavascriptで作ってるが、これからページ数増えたり、iosとかandroidアプリ化とかも考えるとこのままだと可読性的にも開発効率的にも厳しい。
検討した内容をメモしておく。
前提
とりあえずはwebのフロントエンドフレームワークを導入して、これからコード量増えても管理しやすくしたい。
IOSとかAndroidアプリも作りたいのでそっちも検討する。
バックエンドは開発速度とスケールしやすさを考えてFirebase。
候補
全部のパフォーマンスを重視するなら
- web : React (Next.js)か、Vue(Nuxt.js)
- IOS : Swift
- Android : Kotlin
みたいになるけど、全部別で書いてデバッグして修正してなんて個人でやってられない。
同一のコードで複数環境に書き出せるクロスプラットフォームのフレームワークを検討する。
- React Native
- Flutter
このどちらかが良さそう。
React Native と Flutter 比較
React Nativeのメリット
- webをReactで書けばある程度コードの再利用が可能
- 有名なアプリに採用されてる(instagram, Pinterest, Discordなど)
Flutterのメリット
- React NativeよりもIOS,Androidのパフォーマンスに優れる。
- React NativeはIOS,Androidだけなのに対してWeb,Windows,MacOSも対応していく予定。
- webが安定したらネイティブもwebも含めてコード一回書けば良くなる。
- トレンド的にはReact Nativeより盛り上がってる
- 独自レンダリングなのでUIを統一できる
こんな感じかな。
将来性を考えてIOSとAndroidはFlutterで開発して、Flutter webが実用に耐えられるようになれば単一コードにして行きたい。
React と Vue 比較
まだFlutter webは実用まで行かなそうなのでwebのフロントエンドフレームワークを検討する。
候補はReactかVue
Reactのメリット
- 世界的なトレンドで上
- React Nativeに移行しやすい
Vueのメリット
- 国内ではVueの方が人気
- 学習コストが低い
こんな感じ。
学習コストも気にしないし、国内より世界でのトレンドを重視したいのでReactを使うことにする。
React Native使いたくなった時も移行しやすいし。
結論
webフレームワークはReactを導入。ネイティブアプリはFlutterで開発。
Flutter webがいい感じになったらFlutterに統一
React Nativeがいい感じになったらReactに統一
って感じで両方にチップを置いてスキルを高めておくことにする。