React Native vs Flutter どちらを選ぶのか、それが問題だ
久しぶりにスマホ向けアプリを開発することになりましたので、最近はどんはフレームワークが主流なのか調べてみたところ、React Native vs Flutter どちらかを選ぼう、という結論にいたりました。
せっかく全力で比較しましたので、まとめてみようと思います。
どっちが人気があるの
「Git Hub」には、人気のあるアプリにスターという「いいね」のような機能があります。スターはアプリ自体の人気を表すものなので、フレームワークの人気とは言えませんが、人気のあるアプリを作っているのは、どっちなんだろう?という意味で、比較してみました。
React Native 10,700 スター
Flutter 14,700 スター
後から登場したFlutterの方がスターの数は多いようです。
ただ、単純に「スター」が多いほうを使っておけばよいという訳ではないく、開発したいアプリケーションにとってよりよいフレームワークを選定する必要があります。
ということで、この情報は参考程度にしておきます。
と思っていたら、こんなサイトを見つけました。
これまでのスターの獲得数をグラフで比較できるサイトです。
比較してみると、2020年を境に、Flutterの方が伸びているようです。
将来性は、「Flutter」の方がありそうです。
使うプログラミング言語は?
「React Native」は「React」で開発をします。つまり「Javascript」です。私もですが、「Javascript」は経験のあるエンジニアが多いため、新たな言語を習得せずにアプリ開発ができることになります。
一方、「Flutter」は「Dart」で開発をします。「Dart」はGoogle社が開発したもので、「C#」や「Java」に近い構文と言われてはいますが、「Javascript」に比べると習得の難易度は高いとされています。
私としては、「JavaScript」よりも「C#」の方が経験は多いんだけど、どうなんだろう。
最近は、コーディングはあまりしていなかったので、どちらにせよ、思い出しながらになるので、言語は、どちらでもよいかな。
ということで、プログラミング言語は引き分けです。
設計思想の違い
Flutterは、ひとつのコード(一回のコーディング)で複数のプラットフォームに対応できます。いわゆる「ワンコード」と呼ばれる設計思想で、プラットフォームごとにコーディングを変更する必要が無いという特徴があります。
これに対してReact Nativeは「ひとつの技術で複数のプラットフォームに対応できる」ことが原則となっています。これは、言い換えれば「一度学べば、どのプラットフォームでも動くコーディングができる」という意味です。
対応しているOSは?
どちらもクロスプラットフォームですが、対応できるOSが若干ことなります。
・Flutter → iOS, Android, Web, Windows, Mac, Linux
・React Native → iOS, Android, Web(Windows)
今回、作ろうとしているアプリは、 Windows, Mac, Linuxで動かす必要はないので、これはどちらを選んでも変わりないです。
IDEは?
現在、FlutterはAndroid Studio 、IntelliJ、VisualStudioCodeが使用できます。一方、React NativeはほとんどのトップのIDEでサポートされています。
私は、VisualStudioCodeを使うつもりですので、どちらでもOKでした。
結論
結局、ReactNativeで作成することにしました。
色々、比較した結果、あまりどちらかに決めきれるような要素がなかったのですが、
最後は、GoogleとFaceBookのどっちが将来性ありそう?
ということで、Flutterの方を選びました。
最後まで読んでいただいたから、エンジニア的な決断でなくてごめんなさい。
結局、どちらも優れたフレームワークなので、好みで選んで大丈夫という結論にさせてください。