「Flutterって何?」
Flutterについて知っている方は、まだ多くないのではないでしょうか。
なぜなら、Flutterはリリースされて数年しか経っていないからです。
Flutterとは、モバイルアプリケーション用のフレームワークです。
AndroidやiOSのアプリケーションをDartと呼ばれるプログラミング言語を使って開発することができます。
プラットフォームに合わせたネイティブ言語を使わずにモバイルアプリケーションが作れるのは、非常に画期的なことです。
そこで今回の記事では、Flutterについて下記の内容をお伝えします。
- 特徴
- メリット・デメリット
- 開発事例
- FlutterとReact Nativeの比較
- 開発言語Dartについて
- 学習方法
Flutterについて詳しく知りたい方やモバイルアプリ開発に興味がある方は、ぜひ最後までご覧ください。
気になる内容をタップ
Flutterとは
Flutter(フラッター)とは、2018年にGoogleからリリースされた、モバイルアプリケーションフレームワークです。
モバイルアプリ、すなわちAndroidやiOSのアプリケーションを同じソースで開発することができます。
一般的にモバイルアプリを開発する場合には、AndroidとiOSのプログラミング言語を分けることが必要です。
しかし、Flutterを使うことで、同じソースコードでどちらにも使いまわすことができます。
Flutterで開発できるもの
Flutterで開発できるものは下記の2種類です。
- スマホアプリケーション
- Webアプリケーション
それぞれについて順に説明していきます。
スマホアプリケーション
Flutterでは、スマホアプリケーションの開発ができます。
Flutterはモバイルに特化したフレームワークです。
そのため、モバイルアプリ開発を容易に進めるための機能が用意されています。
Webアプリケーション
Flutter for Webを使用すれば、Webアプリケーションの開発が可能になります。
Webアプリケーションはブラウザ上で動くため、OSを問わず「Windows」「Mac」「Linux」などで動作することが可能です。
とはいえ、Web開発が得意なプログラミング言語やフレームワークは他にも多数あり、現時点ではあえてFlutterを選んでWeb開発をするメリットはあまりありません。
ただし、モバイルアプリとWebアプリとの両方を1つのプログラミング言語で管理したい場合には、有効といえるでしょう。
Flutterの特徴
Flutterの特徴は下記のとおりです。
- プログラミング言語はDartを使う
- クロスサイトプラットフォームに対応
- マテリアルデザインのUIが作れる
- 将来性が高い
- 年収が比較的高め
- 副業に向いている
それぞれの特徴について、順に解説していきます。
プログラミング言語はDartを使う
Flutterは、Dart(ダート)というプログラミング言語のためのフレームワークです。
他のプログラミング言語では、Flutterを使用できません。
クロスサイトプラットフォームに対応
Flutterは、クロスサイトプラットフォームに対応しています。
Android、iOS、Windows、MacOS、Linuxなど様々なOSに対応しているため、プラットフォーム別に開発する必要がありません。
また、プラットフォームごとに複数のプログラミング言語を覚える必要がないため、それぞれのネイティブ言語に特化したエンジニアをかかえる必要がなくなります。
結果的に、開発コストを大幅に削減することが可能になるでしょう。
マテリアルデザインのUIが作れる
Flutterは、マテリアルデザインのUIを作ることができます。
マテリアルデザインとは、2014年にGoogleがガイドラインを定めたデザインです。
美しくて直観的にわかるデザインを目標にしています。
マテリアルデザインを採用すれば、ユーザーが操作の流れを直観的に理解しやすいアプリケーションを作ることが可能です。
また、Flutterを使えば、プラットフォームの違いで表示がくずれることもありません。
将来性が高い
Flutterの将来性は高いといえます。
なぜなら、マルチデバイスに対応させることは、今後のアプリケーション開発において重要になるためです。
現時点ではFlutterで開発されたアプリはそれほど多くはありませんが、マルチデバイス対応という汎用性の高さはエンジニアにとって魅力が大きいでしょう。
また、Google社の後ろ盾があることも、将来性の高さにつながります。
2021年3月にFlutter2、2022年5月にFlutter3がリリースされたことから、Google社もFlutterに注力しているといえるでしょう。
Flutterの将来性について詳しく知りたい方は、こちらの記事もご覧ください。
年収が比較的高め
Flutterエンジニアの平均年収は500万円~600万円程度で、比較的高いといえます。
現時点では、Flutterエンジニアの人数がかなり少ないため市場価値は高く、フリーランスエンジニアであれば、平均年収は800万円~900万円と非常に高いです。
Flutterエンジニアについて詳しく知りたい方は、こちらの記事もご覧ください。
副業に向いている
Flutterは副業にも向いています。
なぜなら、Flutterはモバイルアプリ開発に強いフレームワークだからです。
昨今、膨大な数のスマホアプリケーションが開発されています。
しかし、今後は開発が不要になるかというとそうではありません。
今後も変わらず、スマホアプリの需要は増えていくでしょう。
そのため、スマホアプリ開発は副業案件の数も多くなります。
Flutterの副業について詳しく知りたい方は、こちらの記事もご覧ください。
Flutterのメリット
Flutterのメリットは下記のとおりです。
- AndroidとiOSのアプリを同時に開発できる
- ホットリロード機能が使える
- 画面レイアウトを容易に構築できる
それでは、メリットについて順に解説していきます。
AndroidとiOSのアプリを同時に開発できる
AndroidアプリはKotlinかJava、iOSアプリはSwiftというように、OSの違いでプログラミング言語を変えるのが一般的です。
しかし、Flutterを使えばプログラミング言語はDartを使うだけでAndroidとiOSの両方のアプリを作ることができます。
今まで2つのアプリケーションを作らなければいけなかったのが、1つのソースコードで作れるため、開発スピードが上がります。
ホットリロード機能が使える
Flutterはホットリロード(Hot Reload)に対応しています。
ホットリロードは、アプリケーションを止めなくても修正したソースを反映する機能です。
この機能は、改修のタイミングだけでなく、開発中にも役に立ちます。
なぜなら、プログラムを実行中にソースコードを変更して、そのまま動作確認もできるからです。
ホットリロードの機能があることは、アプリケーションの開発スピードアップにもつながります。
画面レイアウトを容易に構築できる
Flutterを使うと、画面レイアウトの構築が容易になります。
なぜなら、Flutterはウィジェット(Widget)を組み合わせて配置していくことで、画面のレイアウトをスムーズに構築することが可能になるからです。
一方、ネイティブ言語を使用すると、XMLファイルなどで画面レイアウトとソースコードの紐づけをする必要があり、手間が多くなり、第三者が処理を理解するのも大変です。
ウィジェットをベースにレイアウトを作れるFlutterは、可読性も高くなります。
Flutterのデメリット
Flutterのデメリットは下記のとおりです。
- OSごとの独自機能は個別に対応が必要
- 歴史が浅くエンジニアが少ない
それでは、デメリットについて順に解説していきます。
OSごとの独自機能は個別に対応が必要
Flutterは1つのソースコードでAndroidとiOSのアプリ開発が可能とはいえ、OSの独自機能まではカバーしきれません。
なぜなら、フレームワークとして準備されていない機能もあるためです。
OSのアップデートにいち早く対応できるのは、ネイティブ言語のほうが有利でしょう。
しかし、すべてのソースコードをネイティブコードにしなくても、必要な部分だけ対応して呼び出すことは可能です。
そのため、基本的にはAndroidとiOSは同じソースコードで作ることができます。
Dartだけ習得していても、実現できない機能が出てくる可能性もあるという点はデメリットといえるでしょう。
歴史が浅くエンジニアが少ない
Flutterは2018年リリースのため歴史が浅く、まだまだ扱えるエンジニアが少ないです。
そのため、不明点があった場合にサポートしてくれる人がいない可能性があります。
しかし、Flutterエンジニアが少ないということは、ライバルが少ないと考えることもできます。
ライバルが少なければ、市場価値が高くなり重宝されるでしょう。
また、歴史が浅いことにより、インターネット上に情報が掲載されていないことも考えられます。
その点については、Google公式のドキュメントが比較的充実していること、サンプルコードも増えてきていることから、現在は解決しつつあります。
Flutterを使用した開発事例
Flutterを使用して開発されたものには、「Alibaba」「Google Ads」などがあります。
開発事例については、「IT'S ALL Widgets!」というサイトに紹介されています。
気になる方は、下記のリンクからご覧ください。
An open list of apps built with Flutter
FlutterとReact Nativeの比較
AndroidとiOSのアプリを同時に開発可能なフレームワークには、Flutterの他にReact Nativeというものがあります。
React Nativeは、2015年にFacebook社よりリリースされたフレームワークです。
ここでは、FlutterとReact Nativeについて下記の点に注目して比較します。
- 設計思想の比較
- 使用言語の比較
- UIの比較
- 対応可能なOSの比較
- パフォーマンスの比較
それでは、詳しく説明していきます。
なお、Reactエンジニアについて詳しく知りたい方は、こちらの記事をご覧ください。
設計思想の比較
FlutterとReact Nativeは、そもそも設計思想に大きな違いがあります。
Write once, Run anywhere
1回書けば、すべてのプラットフォームで動く
Flutterは「ワンコード」といって、1種類のコードだけで複数のプラットフォームでの動作に対応できることを目指しています。
Learn once, Write anywhere
一度学べば、どのプラットフォームでもReactを使うことができる
React Nativeは、Reactのスキルを習得すれば、どのプラットフォームにも対応できるようになるという設計思想です。
使用言語の比較
Flutterで使用するプログラミング言語は「Dart」というコンパイル言語です。
一方、React Nativeで使用するプログラミング言語は「JavaScript(TypeScript)」で、スクリプト言語となります。
JavaScriptの将来性について詳しく知りたい方は、こちらの記事をご確認ください。
UIの比較
FlutterとReact Nativeは、UIにも違いがあります。
Flutterは、マテリアルデザインを採用しており、描画用には独自のエンジンである「skia」を使用。
そのため、Android、iOSなどといったプラットフォームに依存せず、同じUIでアプリを作ることができます。
React Nativeは、プラットフォームごとの標準のUI(ネイティブUI)を使用することが原則です。
そのため、機能は同じでもUIを分けて作る必要があります。
さらに、OSのバージョンによっても変更が必要な場合もあるでしょう。
とはいえ、ネイティブUIを採用すれば、各OSに最適なUIでアプリを作成することが可能です。
アプリケーション開発において何を優先させるかによって、どちらがメリットになるかは変わるでしょう。
対応可能なOSの比較
それぞれのフレームワークにおける対応可能なOSは下記のとおりです。
- Android
- iOS
- Windows
- MacOS
- Linux
- Android
- iOS
- Windows
このように、Flutterの方が対応可能OSの種類は多いです。
パフォーマンスの比較
パフォーマンスは、どちらも高めではありますが、FlutterよりReact Nativeの方が高速になります。
なぜなら、React Nativeはネイティブな環境下で動作するためです。
一方、Flutterは描画エンジンのskiaを介しての動作となるため、メモリ消費が多くなったり、React Nativeに比べて動作に時間がかかったりします。
Flutterのためのプログラミング言語Dartとは
Dartは、Flutterと同じくGoogleからリリースされたプログラミング言語です。
ここではDartについて下記の点についてご紹介します。
- Dartの特徴
- Dartのメリット
- Dartのデメリット
それでは、順に解説していきます。
Dartの特徴
Dartは、JavaScriptを元にして作られたスクリプト言語です。
Dartには下記のような特徴があります。
- オブジェクト指向言語
- 様々な開発に使える
- JavaScrpitに変換できる
それでは、それぞれの特徴について順に解説していきます。
オブジェクト指向言語
DartはJavaScriptをベースにしていますが、オブジェクト指向を採用しています。
Dartのオブジェクトは、すべてクラスのインスタンスです。
オブジェクト指向なので、1つ1つの処理をオブジェクト(かたまり)として管理することができて、中規模や大規模の開発でも、役割分担がしやすくなります。
また、コードの可読性が高いため、エラーの発見もしやすく、メンテナンス性も高いです。
様々な開発に使える
Dartでは、スマホアプリケーションだけでなく、フロントエンド開発、バックエンド開発も可能です。
特に、DartのフレームワークであるFlutterはUIが得意なので、フロントエンド開発でも効率的にデザインを作成することができます。
CSSを使わずに画面デザインを作れるのは便利です。
また、Dartを使ってバックエンド開発もできます。
ただし、バックエンド開発については、前例が少ないのが現状です。
JavaScriptに変換できる
DartとJavaScrpitは互換性があります。
それは、DartがJavaScriptをベースに作られた言語だからです。
DartからJavaScpirtだけでなく、JavaScriptからDartへの変換も可能になります。
Dartのメリット
Dartには下記のようなメリットがあります。
- 学習コストが低い
- 大規模開発に向いている
- 動的型付け・静的型付けに対応している
それぞれのメリットについて、順に解説していきます。
学習コストが低い
Dartは文法がわかりやすく、学習コストが低くなります。
なぜなら、JavaScpirtをベースにしているため、多くのエンジニアに馴染みのある文法だからです。
JavaScpirtを習得しているエンジニアであれば、ハードルは低くなります。
もしJavaScpirtを習得していない場合でも、もともとJavaScpirt自体が習得しやすい言語なので、Dartの習得もそこまで大変ではないでしょう。
大規模開発に向いている
Dartはオブジェクト指向を採用しているため、大規模開発に向いています。
オブジェクト指向で作られたプログラムは、それぞれを区分けして作られているので、カスタマイズやメンテナンスがしやすいです。
また、大人数で作業する場合でも、各オブジェクトの認識を合わせることで、作業がしやすくなります。
さらに、オブジェクトごとに分けられるということは、一部を取り出して別のシステムに再利用することも可能ということです。
そのため、開発自体を効率的におこなうことができます。
動的型付け・静的型付けに対応している
Dartは、動的型付け・静的型付けの両方に対応しています。
目的に応じて、動的と静的を使い分けることができるので、柔軟なプログラムを書くことが可能です。
変数を宣言するときに「dynamic」と付けるだけで動的になるため、切り替えも簡単にできます。
Dartのデメリット
Dartには下記のデメリットがあります。
- 日本語の情報が少ない
それでは、デメリットについて解説していきます。
日本語の情報が少ない
Dartのリリースは2018年であるため、他の言語と比べるとまだまだ発展途上にあります。
そのため、パッケージなどが少ないこともあり、自身で作り込む必要がある場合も出てくるでしょう。
自分で作る処理が増えるほど、インターネットなどで不明点の調査が必要になることもあります。
しかし、現時点では日本語の情報が多くはありません。
Dart開発で不明点がある場合には、英語の記事を読む必要もあるでしょう。
Flutterの学習方法
Flutterはフレームワークなので、Flutterと同時に開発言語であるDartの学習もしましょう。
Flutterの学習方法は下記のとおりです。
- 書籍で学習する
- Webサイトで学習する
- セミナーやスクールで学習する
それでは、それぞれの学習方法について順に解説していきます。
書籍で学習する
Flutterの学習におすすめの書籍は下記のとおりです。
- 基礎から学ぶFlutter(著者:石井幸次、出版社:シーアンドアール研究所)
- 迷わないFlutter開発: はじめてのアプリ開発をサポート(著者:千葉直樹、出版社:Independently published)
- 現場で使える Flutter開発入門(著者:澤良弘,上村隆弘,村岡直人,多田幸一、出版社:マイナビ出版)
- マルチプラットフォーム対応 最新フレームワーク Flutter 3入門(著者:掌田津耶乃、出版社:秀和システム)
「基礎から学ぶFlutter」は、Dartの基礎もわかりやすく学ぶことができます。
他の言語でもプログラムの経験がある人は、「現場で使える Flutter開発入門」で、実践に近い知識を学ぶと良いでしょう。
Webサイトで学習する
FlutterをWebサイトで学びたい方は、下記のサイトがおすすめです。
「Flutter公式チュートリアル」は膨大な量があるため「Get started」の部分を一通り見てみると良いでしょう。
「flutter-study.dev」は、実践的な内容がかかれた記事になります。
基礎がある程度理解できている人におすすめです。
セミナーやスクールで学習する
独学で学ぶと挫折してしまいそうな人は、スクールやセミナーを利用するのがおすすめです。
ただし、Flutterは比較的新しいフレームワークなので講座を開催しているスクールはあまり多くはありません。
Android・iOSアプリ開発が学べる講座から探すと、Flutterを対象としたものを見つけることができます。
Flutterとは?特徴・メリット・デメリット・開発事例・学習方法を解説まとめ
この記事では、Flutterについて解説しました。
Flutterとは、モバイルアプリケーション開発が得意なフレームワークです。
Dartと呼ばれるプログラミング言語を使って開発します。
1つのソースコードで、複数のプラットフォームに対応したアプリケーションを作ることが可能です。
Googleが開発しているため将来性が高いこと、JavaScriptをベースにしているため学習コストが低いこともあり、興味がある方はぜひ習得することをおすすめします。