Flutter vs React Native vs. Swift/Kotlin In 5 Minutes

Your Average Tech Bro
24 Jul 202305:20

Summary

TLDRこの動画では、React Native、Flutter、およびネイティブ開発(SwiftまたはKotlin)を使用したモバイルアプリケーション開発の比較について説明します。最高のパフォーマンスはネイティブ開発にありますが、Flutterは機械コードにコンパイルされ、独自のグラフィックレンダリングエンジンであるSkiaがあり、非常にスムーズな体験を提供します。React Nativeはラッパーとして動作し、最悪のパフォーマンスを発揮します。また、コミュニティサポートの重要性についても議論します。ネイティブまたはReact Nativeはコミュニティサポートが非常に強い一方、Flutterはまだ広く普及していないため、コミュニティサポートがネイティブまたはReact Nativeに比べて劣ります。

Takeaways

  • 📱 比較対象はReact Native、Flutter、ネイティブ(SwiftまたはKotlin)のモバイルアプリケーション開発です。
  • 🚀 ネイティブ開発では最高のパフォーマンスが得られます。Swift(iOS)やKotlin(Android)はスムーズでスタイリッシュな体験を提供します。
  • 💡 Flutterは次点で、マシンコードにコンパイルされ、独自のグラフィックレンダリングエンジン(skia)を持っているため、非常にスムーズな操作が可能。
  • 🔧 React Nativeはネイティブモバイル開発プラットフォームをラップするため、パフォーマンスは最悪になりますが、大企業でも人気のある框架です。
  • 🌐 ネイティブ開発はiOSとAndroidの両方为目标に別々にアプリケーションを構築する必要がありますが、FlutterやReact Nativeではクロスプラットフォーム開発が可能。
  • 🔍 コミュニティサポートは、バグ対応やサードパーティパッケージの利用に非常に重要です。ネイティブ言語またはReact Nativeでの開発では、より強力なサポートが得られます。
  • 📈 FlutterはGoogleの製品を使用する場合(例:Firebase)にはサポートが良く、一等公民として扱われています。
  • 🛠️ 開発に必要なライブラリや機能がある場合、事前にFlutterのサポートがあるかどうか、またはコミュニティライブラリのサポートがあるかどうかを調査することが重要です。
  • 📚 言語やフレームワークは選択肢之一であり、十分な練習を積むことで比較的早く学び、使用することができます。
  • 🔑 技術的な選択基準はパフォーマンスとコミュニティサポートの両方です。使用するスタックはケースバイケースによって異なります。
  • 🗣️ 意見や使用したフレームワークについてコメントを残すことで、より良い開発体験を共有できます。

Q & A

  • React Native、Flutter、ネイティブ開発の性能についてどう考えていますか?

    -ネイティブ開発が最も高い性能を提供し、Flutterは次いで、React Nativeが最後に来ます。ネイティブはSwiftまたはKotlinを使用して最高品質の体験を提供します。Flutterはマシンコードにコンパイルされ、高品質なグラフィックレンダリングエンジンであるSkiaを持っています。React NativeはJavaScriptブリッジを使用してコードを翻訳し、ラッパーとして機能します。

  • React Nativeの性能が他のフレームワークに比べて低い理由は何ですか?

    -React Nativeは特定のマシンコードに直接コンパイルされず、AndroidとiOSのネイティブモバイル開発プラットフォームをラップしています。JavaScriptブリッジを使用してJavaScriptをiOSまたはAndroidコードに変換し、これが3つのフレームワークの中で最も低い性能になる原因です。

  • 大企業がReact Nativeを使用している例は何ですか?

    -Discord、Coinbase、Tesla、Mercariなどがあります。Facebookのアプリの一部もReact Nativeで構築されています。

  • FlutterとReact Nativeのcommunity supportを比較するとどうですか?

    -FlutterはReact Nativeやネイティブ言語に比べて、コミュニティサポートが少なめかもしれません。これはFlutterがまだ他の2つのフレームワークほど主流的な人気を持っていないためです。しかし、Googleの製品を使用する場合は、Flutterはファーストクラスのサポートを受けています。

  • FlutterがGoogle製品と良好に連携する理由は何ですか?

    -FlutterはGoogleが所有しているため、ファーストクラスの市民として扱われ、Googleの製品との連携が容易になります。

  • モバイルアプリケーションの開発において、パフォーマンスとコミュニティサポートの重要性についてどう思いますか?

    -パフォーマンスは重要ですが、コミュニティサポートも同じくらい重要です。バグを解決し、サードパーティのパッケージを使用するには、強いコミュニティサポートが必要です。

  • Flutterで開発する際にサードパーティパッケージのサポートが必要な場合、どのようなアプローチをとるべきですか?

    -事前にそのツールがFlutterをサポートしているかどうか、またはコミュニティによるライブラリがあるかどうかを調査する必要があります。

  • あなたが最近開発したToDoリストアプリの名前は何ですか?

    -ToDoingと名付けられています。

  • ToDoingアプリのどのように異なる点は何ですか?

    -ToDoingでは、タスクを完了するためにチェックボックスをオンにするのではなく、写真を撮ることでタスクを完了します。また、友人のタスクをフォローすることもできます。

  • Flutterを使用した開発で直面した問題は何でしたか?

    -PostHogという製品分析ツールを使用したいでしたが、公式のFlutterライブラリが存在しませんでした。コミュニティライブラリは存在しますが、公式ライブラリと同様の機能を提供しないため、特定の機能が制限されることがあります。

  • どの技術を使用してモバイルアプリケーションを構築するか決める際に考慮すべき最も重要な要素は何ですか?

    -言語やフレームワークを学ぶことは重要ですが、より重要なのはアプリケーションのパフォーマンスとコミュニティサポートです。

Outlines

00:00

📱 モバイルアプリ開発:React Native、Flutter、ネイティブの比較

このビデオでは、React Native、Flutter、SwiftやKotlinを使用したネイティブ開発によるモバイルアプリ開発の違いについて解説します。技術的な詳細や言語の好みではなく、開発体験の他の側面、特にパフォーマンスとコミュニティーサポートに焦点を当てています。ネイティブ開発が最高のパフォーマンスを提供する一方で、Flutterは専用のグラフィックエンジンにより優れたパフォーマンスを提供し、React Nativeはパフォーマンスが最も劣るとされています。しかし、パフォーマンスの重要性に疑問を投げかけ、React Nativeが大手企業によって広く使用されている例を提示します。さらに、FlutterとReact NativeはiOSとAndroidの両方のアプリを同時に開発する利点を提供するが、FlutterはコミュニティサポートがReact Nativeやネイティブ言語ほど強くない可能性があると指摘しています。それでも、Google製品の開発ではFlutterが強くサポートされていることを強調し、使用するライブラリやツールのFlutterサポートを事前に調査することの重要性を述べています。

05:01

🚀 最適なモバイル開発フレームワークの選択

開発者がモバイルアプリを構築する際に考慮すべき最も重要な要素は、パフォーマンスとコミュニティサポートです。開発言語やフレームワークは十分な練習があれば誰でも学ぶことができ、選択はプロジェクトの要件や目的によって異なります。コメント欄で好みのフレームワークについての意見を求めることで、視聴者との対話を図っています。このアプローチは、技術的な詳細を超えた開発体験の側面に光を当て、より実践的なアドバイスを提供することを目指しています。

Mindmap

Keywords

💡モバイルアプリケーション

ビデオの主題は、モバイルアプリケーションの開発に関するです。モバイルアプリケーションとは、スマートフォンやタブレットなどのモバイルデバイス上で動作するソフトウェアアプリケーションのことです。ビデオでは、React Native、Flutter、およびネイティブ開発(SwiftまたはKotlinを使用)の3つの異なる方法を比較して、最適な選択肢を決定する方法について説明しています。

💡React Native

React Nativeは、JavaScriptを使用してiOSとAndroidの両方のプラットフォームに対応するモバイルアプリケーションを開発するためのフレームワークです。ビデオでは、React Nativeがネイティブ開発と比較してパフォーマンスにおいて不利であることが指摘されていますが、同時に大企業がこのフレームワークを使用していることも述べられています。

💡Flutter

Flutterは、Googleが開発したモバイルアプリケーション開発フレームワークで、Dartプログラミング言語を使用します。Flutterは、機械コードへとコンパイルされ、独自のグラフィックレンダリングエンジン(skia)を持ち、スムーズで高品質なユーザー体験を提供することが特徴です。

💡ネイティブ開発

ネイティブ開発とは、iOS向けにはSwift、Android向けにはKotlinを使用して、それぞれのプラットフォームに最適化されたアプリケーションを開発する方法です。ビデオでは、ネイティブ開発がパフォーマンスにおいて最良であることが示されていますが、同時に開発のオーバーヘッドが大きいことも指摘されています。

💡パフォーマンス

パフォーマンスとは、アプリケーションがデバイス上でどの程度スムーズに動作するかを指す重要な概念です。ビデオでは、パフォーマンスがどのフレームワークを選ぶ際の重要な要素であると強調されています。

💡コミュニティサポート

コミュニティサポートとは、開発者が困難や問題に直面した際に、コミュニティからサポートを受けられることを指します。ビデオでは、コミュニティサポートが開発体験において重要な要素であると述べられており、React Nativeやネイティブ開発はより強力なコミュニティサポートを受けていることが示されています。

💡TypeScript

TypeScriptは、JavaScriptのスーパーセットである静的タイプ付けプログラミング言語です。ビデオでは、TypeScriptについて特に熱く語られたいとされていないことから、プログラミング言語やフレームワークに対する好みや選択に重点を置かれることはないことが示されています。

💡開発経験

開発経験とは、プログラミング言語やフレームワークを使用してアプリケーションを開発する経験を指します。ビデオのナは、十分な開発経験を積むことで、どのフレームワークや言語を扱うかにかかわらず、開発を成功させることができると述べています。

💡跨プラットフォーム

跨プラットフォームとは、iOSとAndroidの両方のデバイスで動作するアプリケーションを開発することを指します。ビデオでは、FlutterやReact Nativeが跨プラットフォーム開発を可能とする点が強調されています。

💡第三者パッケージ

第三者パッケージとは、他人が開発したライブラリやツールのことです。ビデオでは、開発者が第三者パッケージを使用することで、機能性を拡張したり、開発効率を向上させたりすることができますが、そのサポートが不十分である場合もあることが指摘されています。

💡Post Hog

Post Hogは、製品分析ツールの一種で、イベントを追跡したり、機能フラグやA/Bテストを行うことができます。ビデオでは、Post HogがFlutterの公式ライブラリをサポートしていないことと、代わりにコミュニティライブラリを使用した経験が述べられています。

Highlights

在视频中讨论了使用React Native、Flutter和原生开发(Swift或Kotlin)构建移动应用程序的对比。

选择框架时,作者认为逻辑性和实现细节并不是最重要的,因为任何新语言或框架都可以通过足够的练习来掌握。

性能是评估开发生态系统时的一个重要因素,原生开发(Swift或Kotlin)在技术上提供最佳性能。

Flutter紧随其后,因为它编译成机器代码,并拥有专用的图形渲染引擎Skia,确保运行流畅。

React Native在这三个框架中性能最差,因为它不编译成特定机器可读代码,而是作为原生移动开发平台的封装。

尽管React Native性能不是最佳,但许多大公司如Discord、Coinbase、Tesla等都在使用它构建应用程序。

对于小型开发团队来说,学习Flutter或React Native可能更有利,因为它们可以同时为iOS和Android构建应用程序。

在考虑使用哪个平台构建移动应用程序时,社区支持是一个重要因素。

作者经验表明,使用原生语言(Swift或Kotlin)或React Native时,社区支持最强。

Flutter的社区支持可能不如React Native或原生语言,因为它还没有获得主流的普及。

如果计划使用Google产品,如Firebase,Flutter几乎总是得到支持,因为Flutter是由Google拥有的。

在选择技术栈时,应该事先研究某些工具是否支持Flutter或是否有社区库支持。

作者最近开发的应用程序“To Doing”是基于Flutter构建的,它是一个独特的待办事项列表应用程序。

在使用Flutter构建To Doing时,作者遇到了集成PostHog(产品分析工具)的挑战,因为官方没有支持Flutter的库。

作者强调在选择构建应用程序的技术栈时,性能和社区支持是两个最重要的考虑因素。

最终,作者认为选择哪种技术并不重要,重要的是通过实践学习任何语言或框架。

作者鼓励观众在评论区分享他们构建移动应用程序时喜欢的框架。

Transcripts

play00:00

in this video I'm going to be going over

play00:01

building a mobile application in react

play00:03

native versus flutter versus natively

play00:06

with swift or kotlin I'm not going to be

play00:07

giving some passionate like monologue

play00:10

about which framework has the most

play00:11

logical it has the best implementation

play00:13

these really nitty-gritty technical

play00:15

details because quite frankly I don't

play00:17

think that they matter that much because

play00:18

in my opinion you can learn any new

play00:20

language you can learn any new framework

play00:21

eventually with enough practice you may

play00:23

not like it a lot but you can use it to

play00:25

build any type of application so in my

play00:27

opinion that is an implementation detail

play00:28

that's not that important so don't think

play00:30

I'm gonna go talking about how much I

play00:32

love typescript and how I think it's the

play00:33

greatest language in the world I don't

play00:35

care about that we're going to be

play00:35

talking about the other parts of the

play00:37

developer experience outside of the

play00:38

syntax and outside of the framework so

play00:40

the very first thing that I want to talk

play00:41

about in terms of this whole app

play00:43

development ecosystem is performance and

play00:45

by performance I mean how well does the

play00:46

app run on a device technically speaking

play00:49

you're gonna get the best performance

play00:50

with Native developments so Swift for

play00:52

iOS or kotlin for Android can't beat it

play00:54

they are going to provide the smoothest

play00:56

most buttery experience you can imagine

play00:58

but next up after that is is going to

play01:00

flutter and the reason for that is

play01:02

because flutter is actually compiled

play01:04

into machine code and flutter has a

play01:06

dedicated graphic rendering engine

play01:07

called skia that makes sure everything

play01:09

runs super smooth super buttery and the

play01:12

least performant of these three

play01:13

Frameworks is going to be reaction

play01:15

native and the reason for that is

play01:16

because react native doesn't compile

play01:18

into very specific and machine readable

play01:20

code and instead it's more of a wrapper

play01:22

around the native mobile development

play01:23

platforms of Android and iOS react

play01:26

native uses this JavaScript bridge to

play01:28

translate JavaScript into what would be

play01:30

iOS or Android code down below under the

play01:33

hood and because react native acts as a

play01:36

wrapper it'll lead to the worst

play01:37

performance out of the three but you

play01:39

have to ask yourself how important is

play01:41

performance really does it really matter

play01:43

that much because if you look at some of

play01:44

the apps that are built using react

play01:46

native you can see a lot of really big

play01:48

name companies that are using react

play01:50

native to build their apps stuff like

play01:52

Discord coinbase Tesla mercari even

play01:54

parts of the Facebook app use react

play01:56

native to build their apps and I've

play01:58

personally never thought that they were

play01:59

super slow honestly as a small developer

play02:02

team you're probably better off learning

play02:03

flutter or react native to build your

play02:05

mobile applications because they let you

play02:07

build applications for both IOS and

play02:09

Android at the same time whereas if you

play02:11

wanted to write everything natively you

play02:12

have to then build a separate app using

play02:14

kotlin for Android and then a separate

play02:15

app for Swift using iOS and while you

play02:18

may get the best performance is that

play02:20

engineering overhead really worth it and

play02:22

that's really only something that you

play02:23

can answer because everything is

play02:24

different on a case-by-case basis the

play02:26

second thing I want to talk about when

play02:27

considering what platform to use to

play02:29

build your mobile applications is

play02:30

community support because look you're

play02:32

going to run into some bugs you're going

play02:33

to want to use some third-party packages

play02:35

and those two things only comes with

play02:37

really strong community support and I

play02:39

will say at least anecdotally this is

play02:41

not something that I'm like getting

play02:42

numbers for and like pulling all the

play02:44

GitHub repo data but I have found

play02:46

building apps using all three of these

play02:47

platforms is the fact that you will

play02:49

always get the best community support

play02:50

building with Native languages either

play02:52

Swift or kotlin or react native I have

play02:55

found in my experience for flutter if

play02:57

not have as much Community Support as

play02:59

react native or the native languages as

play03:01

well and I think it's just because

play03:02

flutter hasn't really gained as much

play03:05

mainstream popularity as the other two

play03:07

Frameworks don't get me wrong it's

play03:08

definitely growing in popularity a lot

play03:10

but I have found that when I run into

play03:11

some issue and I looked up like stack

play03:13

Overflow or GitHub issues sometimes I

play03:15

don't really find anyone else that's run

play03:17

into it because it's just not as popular

play03:18

or if I'm trying to use a third-party

play03:20

provider oftentimes I find like a lot of

play03:22

these third-party plugins or

play03:23

applications that I want to integrate

play03:25

into my application they always have a

play03:26

native support and react native support

play03:28

but it's often Hit or Miss whether or

play03:30

not flutter is supported but the only

play03:32

exception to that rule of flutter not

play03:34

always having developer support for

play03:36

third-party packages is if you are going

play03:38

to be developing using Google products

play03:40

whenever you're using some type of

play03:41

google-based software product like

play03:43

Firebase for example flutter is almost

play03:44

always supported because flutter is

play03:46

owned by Google so it's treated as a

play03:48

first-class citizen so that's something

play03:50

you want to keep in mind if you have

play03:51

certain libraries or certain

play03:52

functionalities you have in mind that

play03:53

you want to use in your application you

play03:55

might want to do a little bit of

play03:56

research beforehand to see do they have

play03:58

flutter support or not an example that I

play04:00

personally run into when building my

play04:02

most recent app which is an app called

play04:03

to doing which is a to-do list app where

play04:05

instead of checking off the task you

play04:07

actually take a picture to complete that

play04:08

task instead and you can also follow

play04:10

your friends to see what tasks that

play04:11

they're completing as well which by the

play04:13

way if you want to download it I'll

play04:14

include a link to it down below in the

play04:16

description but the issue that I ran

play04:17

into when building to Dewey which is

play04:18

built on top of flutter is I wanted to

play04:20

use this tool called post hoc it is a

play04:23

products Analytics tool which lets me

play04:24

track events do feature Flags a B test

play04:27

post hog does not have an official

play04:29

flutter library that they themselves

play04:31

support and create it they have a

play04:32

community library which is good enough

play04:34

to a certain extent but it's just not

play04:36

officially supported by the post hog

play04:38

team and as a result there are certain

play04:39

features that the community library does

play04:41

not have that the official libraries do

play04:43

so once again do a little bit of

play04:44

pre-research into certain tools that

play04:46

you're looking for to make sure that

play04:47

they support flutter or that there is

play04:48

some type of Community Library support

play04:50

as well alright so that is in my opinion

play04:52

the two most important things that you

play04:53

want to consider when figuring out what

play04:55

technology you want to use to build your

play04:56

mobile applications in the end I really

play04:58

don't think it matters that much because

play04:59

I'm my opinion you can learn any

play05:01

language or any framework relatively

play05:03

quickly as long as you get enough

play05:04

practice under your belt and what's

play05:05

really more important when figuring out

play05:07

what stack that you want to use to build

play05:09

your application is the performance

play05:10

aspect of it as well as the community

play05:12

support as well let me know in the

play05:13

comments down below which framer you

play05:15

like to use when building out your

play05:16

mobile applications once again thanks

play05:18

for watching today's video and I'll see

play05:19

you in the next one

Rate This

5.0 / 5 (0 votes)

Related Tags
React NativeFlutterネイティブ開発スイスイフットKotlinパフォーマンスコミュニティサポートクロスプラットフォームGoogle製品Firebase
Do you need a summary in English?