エンジNear

システムエンジニアの日々のログ

React Native vs Flutter どちらを選ぶのか、それが問題だ

久しぶりにスマホ向けアプリを開発することになりましたので、最近はどんはフレームワークが主流なのか調べてみたところ、React Native vs Flutter どちらかを選ぼう、という結論にいたりました。

 

せっかく全力で比較しましたので、まとめてみようと思います。

どっちが人気があるの

「Git Hub」には、人気のあるアプリにスターという「いいね」のような機能があります。スターはアプリ自体の人気を表すものなので、フレームワークの人気とは言えませんが、人気のあるアプリを作っているのは、どっちなんだろう?という意味で、比較してみました。

React Native 10,700 スター

Flutter     14,700 スター

後から登場したFlutterの方がスターの数は多いようです。
ただ、単純に「スター」が多いほうを使っておけばよいという訳ではないく、開発したいアプリケーションにとってよりよいフレームワークを選定する必要があります。

ということで、この情報は参考程度にしておきます。

と思っていたら、こんなサイトを見つけました。
これまでのスターの獲得数をグラフで比較できるサイトです。

star trend

比較してみると、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 StudioIntelliJ、VisualStudioCodeが使用できます。一方、React NativeはほとんどのトップのIDEでサポートされています。

私は、VisualStudioCodeを使うつもりですので、どちらでもOKでした。

結論

結局、ReactNativeで作成することにしました。

色々、比較した結果、あまりどちらかに決めきれるような要素がなかったのですが、
最後は、GoogleFaceBookのどっちが将来性ありそう?

ということで、Flutterの方を選びました。

最後まで読んでいただいたから、エンジニア的な決断でなくてごめんなさい。

結局、どちらも優れたフレームワークなので、好みで選んで大丈夫という結論にさせてください。