比較の目的
- 社で
はやいプロダクト開発
という目標というかテーマができそう- 作るのが早い
- 動作・パフォーマンスが速い
- 作るのが早いと言う点で、クロスプラットフォームを検討してみたい
- 社ではネイティブの開発は結構がっつりやっているが、クロスプラットフォームはやっていない
- iOS/Androidのネイティブのエンジニアはそれぞれいる
- react, vueを触るwebフロントエンドのエンジニアもいる
- 社ではネイティブの開発は結構がっつりやっているが、クロスプラットフォームはやっていない
私のスペック
- iOSネイティブ開発やっている
- Android開発はほとんどやったことない
- react, typescriptのwebフロント開発やっている
とても参考になった記事
- https://qiita.com/Cat_sushi/items/5644443516ebb79b9ab3
- http://nnsnico.hatenablog.jp/entry/2018/03/29/170701
雑な感想
作るのが早い
- どんな経験値の人がやるのかによって変わりそうな気はした
Flutter
- ネイティブアプリ経験者ならflutterの方が初速は出そう
- モバイルSDKの再発明と捉えると、両OSでライフサイクルが違っているところとかをいい感じに吸収して実装コスト下げれそう
- モバイル開発の延長っぽい気がしていて、モバイル開発の知見が多少必要そう・活きるイメージ
- react, vueやってた人が始めようと思うと学習コストは高そう?
- でも宣言的UIの考え方はネイティブアプリには無い&reactと近く、むしろreact, vueやった人の方が学習が早い?
- ネイティブ開発者の中で閉じてスピードアップを考えるならFlutterの方が良さそう
ReactNative
- webフロントエンドの手法をインポートしているので、ネイティブ開発者には学習コスト高そう。短期的にはスピード落ちそう
- 社内のwebフロントエンドエンジニアにアプリ開発に参加してもらえるようになるので、フロントエンジニアが多いなら一気にアプリ開発者の人数を増やせそう
- 細かいところで各OSの専門知識は必要になる
- react書ける人だけでは難しそうで、各ネイティブの専門知識わかる人は必要になりそう
- フロントエンド開発者まで巻き込んでスピードアップを考えるならReactNativeは良さそう
- fluxなどのアーキテクチャについて多くの知見が既に存在していて、その辺を持ち込めるのは強い
- Flutterより大規模開発の知見が厚いイメージ
当然だが、要件次第ではある
- ネイティブな機能をゴリゴリ使うアプリだとネイティブで書いた方がたぶん早い
- でもそういう案件って実はあんまり無く、クロスプラットフォームで行ける案件は多いイメージ
- webアプリ版も作りたいとなるとFlutterWebよりReactNativeWebの方が強そうなイメージはある
- ReactNativeなら、別途react.jsで作り直すにしても再利用できるコードが多そう
動作が速い
- 普通に考えるとネイティブアプリが最速なので、どこまで許容できるのか的な視点
- とはいえ、よほど複雑な画面とかで無い限りあんまり問題にはならず、ほとんどの場合は許容できる範囲な気がする
まとめ
想像ばかりなのであまり身がない記事ですが...
- ネイティブ開発者にとってはFlutter良さそう
- webフロント開発者にとってはReactNative良さそう
- どちらも宣言的UIだし、そういう時代だなぁ
- 雑に社でも相談してみよう