【2024】Flutterとは?今知るべきことや流行らないとする意見を解説 | レバテックフリーランス
【2024】Flutterとは?今知るべきことや流行らないとする意見を解説
Flutterとは、主にGoogle社がオープンソースで開発しているマルチプラットフォームフレームワークです。iOS・Androidのアプリを同時に構築できますが、開発言語であるDartを覚えなければいけません。
そこで、詳しくなる必要があるかを判断できるよう、IT系フリーランス登録者数No.1のレバテックが、今知るべきことを解説します。具体的には、将来性や流行らないとされる理由、入門サイト、Flutterで作られたアプリ・ゲームなどです。
Flutterを学んだり、メインにし続けたりすべを判断できるので、ぜひ参考にしてください。
レバテックフリーランスはITエンジニア専門の
フリーランスエージェントですまずは相談してみる
目次
Flutterとは?機能や特徴から何ができるか解説
Flutterとは、主にGoogleがオープンソースで開発しているマルチプラットフォームフレームワークです。 Flutterでは、複数のOSで実行できるアプリを共通のソースコードで実装できます。主な特徴や機能が6つあるので、それぞれ紹介していきます。
①iOS・Androidのアプリを効率的に開発できる
iOSとAndroidのアプリを一度に開発できる点は、Flutterの最大の特徴です。Flutterには、入力したコードをiOSとAndroidの両方に対応させる変換機能があります。
一度のアプリ開発で各OSに対応できるため、開発コストを大幅に下げるメリットがあります。効率重視でアプリケーション開発をしたい人や企業にとって、Flutterは最適なフレームワークといえるでしょう。
②開発言語はDart
Flutterは、基本的にDart言語を使って開発していきます。Dartは学習しやすく、高速で効率的であるように設計された比較的新しいプログラミング言語です。
Dart言語は、JavaScriptやJava、C#などの言語と似ており、使用経験があるなら比較的学習しやすいでしょう。
Dart言語を身につければ、コードの可読性や保守性が向上する、開発効率が高まるというメリットを感じられます。
③Android Studioを使った開発環境
Flutterでモバイルアプリを開発する場合におすすめのIDEは、Android Studioです。FlutterはGoogle製のフレームワークであるため、iOSよりもAndroidの環境の方が基本的に親和性が高いです。
Android、iOSともに実行やデバッグは行えます(ただし、MacOSの場合)。そのため、iOSであっても、XCodeを立ち上げる必要がないといったメリットが感じられるでしょう。
④Hot Reload・Hot Restart
Flutterで非常に便利な機能は、Hot ReloadとHot Restartです。Hot Reloadは、プログラムの変更をすぐ画面に反映させる機能です。Hot Restartは、変更した部分がバックグラウンドでステートを維持してしまっている場合に使います。
Webアプリのように「変更したら、すぐに確認」という開発スタイルが、モバイルアプリ開発でも使えます。
⑤標準で豊富なUIセットが提供されている
Flutterでは、多くのUIセットを提供しているため、サードパーティー製のUIを探してくる必要はありません。リファレンスは英語ですが、モバイルアプリではよく使うものが多数用意されています。
多くの開発者が同じUIを使って開発をしているため、ノウハウなども共有されやすくなっています。初心者も使いやすい環境であるといえるでしょう。
⑥開発支援ツール|Flutter DevTools
Flutter DevToolsとは、Flutterの開発者向けのデバッグツールセットです。 Flutterフレームワークで作成されたアプリケーションのパフォーマンスや動作を解析します。
Flutter DevToolsでは、以下のようなことができます。
- FlutterアプリのUIレイアウトと状態を調査
- FlutterアプリのUIジャンクパフォーマンスの問題を診断
- FlutterまたはDartコマンドラインアプリのソースレベルのデバッグ
- FlutterまたはDartコマンドラインアプリでメモリの問題をデバッグ
- 実行中のFlutterかDartコマンドラインアプリのログと診断情報を表示
DevToolsはWebブラウザ上で実行されるため、専用のアプリをインストールする必要はありません。
Flutterのメリット・デメリット
Flutterは、アプリ開発を効率化できるメリットがある一方で、歴史が浅いためにデメリットを感じる人もいます。Flutterのメリット・デメリットを具体的に解説していきましょう。
Flutterのメリット
以下は、Flutterのメリットです。
- Hot Reload対応で高速開発できる
- iOS・Androidのアプリを同時に構築できる
- Dart言語はJavaScriptと文法が似ている
- Material Designによるユーザーインタフェース構築
- 小さく始めたい案件や検証用で活躍
各メリットの詳細を解説していきます。
Hot Reload対応で高速開発できる
Flutterは、Hot Reloadに対応しているため高速開発が可能です。Hot Reloadを使えば、コードの一部を変更したあと、動作を確かめてさらに改修するといった作業をなくせます。
変更点をすぐに確認でき、感覚的にも理解しやすい環境で、スムーズに開発が進められるでしょう。
iOS・Androidのアプリを同時に構築できる
Flutterの大きなメリットは、iOS・Androidのアプリを同時に構築できる点です。Flutterでは、基本的に従来のネイティブ開発を必要としないため、一度開発すれば多くのOSで動作します。
また、iOSとAndroidで共通した描画表現ができる点もメリットです。Flutterには、Pixel Perfect(ピクセルパーフェクト)機能があり、デザインを正確に再現できます。
iOS・Androidのアプリを同時に構築できるFlutterを使えば、開発の工数を大きく減らせるでしょう。
Dart言語はJavaScriptと文法が似ている
Flutterで使われるDart言語は、JavaScriptやJavaを知っているなら習得しやすい言語です。Dart言語はJavaScriptの代替言語として開発されたため、文法が似ています。
以下は、Dart言語の特徴です。
- JavaScriptよりも性能が良い
- JavaScriptへの変換が可能
- オブジェクト指向言語である
- セキュリティ性能が高い
- 大規模なアプリ、サービスの開発に適している
Dar言語は、JavaScriptよりもパフォーマンスが優れている性能の良い言語といえます。オブジェクト指向言語なので、複数の開発担当者が関わる大規模プロジェクトでも開発しやすいです。
Material Designによるユーザーインタフェース構築
Flutterは、Material Designによるインタフェースコンポーネントが、標準で付属されています。Material Designに従えば、実装をより高速にし、デザインも綺麗にまとまるでしょう。
Material Designとは、Googleが提唱したデザインの手法や設計です。実装コストや開発速度をあげる一方で、オリジナリティ性に欠けるといったデメリットもあります。
Material Designは開発の手助けとして使用し、オリジナリティのあるデザインを加えていく必要もあるでしょう。
小さく始めたい案件や検証用で活躍
Flutterは、小さく始めたい案件や検証用のプロトタイプのアプリケーション開発に、相性が良いといえるでしょう。通常のアプリケーション開発に比べ、高い生産性を備え、学習コストが低く、実装の検証がやりやすいからです。
個人でのアプリ開発や、小規模の案件など、コストがかけられない場合、Flutterを使ったアプリ開発を検討すべきです。
Flutterのデメリット
以下は、Flutterのデメリットです。
- 歴史が浅くエンジニア確保が難しい
- 機能によってはネイティブ言語での記述が必要
デメリットも考慮したうえで、Flutterを使うべきか検討すると良いでしょう。
歴史が浅くエンジニア確保が難しい
Flutterは歴史が浅いため、エンジニアが確保しづらい点がデメリットになる場合もあります。Flutterは2018年にリリースされ、他言語に比べて、実際に開発経験があるエンジニアが少ない可能性があるからです。
Flutterでのアプリ開発を依頼したいクライアントにとっては、デメリットになるでしょう。Flutterを習得しようと考えているエンジニアにとっては、ライバルが少ないといった点がメリットになるかもしれません。
機能によってはネイティブ言語での記述が必要
カメラや位置情報の取得など、機能によっては、iOSやAndroidごとにネイティブ言語での記述が必要です。また、Flutterが用意していない機能を実装するには各種OSのネイティブAPIと連携する必要があります。
ネイティブ言語を利用すれば、OS独自の機能も利用できるといった考え方もあります。Flutterを使えば、幅広い開発ができるでしょう。
アプリ開発のエンジニアでFlutterを使うべき人
モバイルフレームワークは複数あるため、それぞれの特徴を理解したうえで、Flutterを使うか検討すべきです。モバイルフレームワークの種類・特徴、Flutterを使うべきエンジニアについて解説します。
アプリ開発にどのモバイルフレームワークを使うか悩んでいる人は、ぜひ参考にしてください。
Flutterを含めたモバイルフレームワークの種類・特徴
以下は、Flutterを含めた主なモバイルフレームワークの種類・特徴です。
モバイルフレームワーク | 概要 | 特徴 |
---|---|---|
Flutter | Googleがオープンソースで開発を 行っているマルチプラットフォーム |
iOS・Androidのアプリを効率的に開発できる/開発言語はDart/ Android Studioを使った開発環境/Hot Reload・Hot Restart/ 標準で豊富なUIセットが提供されている/開発支援ツールFlutter DevToolsを装備 |
Apache Cordova | Apacheソフトウェア財団のモバイル アプリケーション開発フレームワーク |
Webアプリ開発者が対象/スマホ専用の文化を あまり知らなくても良い/Webアプリがそのままスマホアプリになる |
React Native | Facebookが開発したクロスプラットフォームの アプリ開発用フレームワーク |
状態管理やコンポーネントベースのアーキテクチャを採用/ UIの更新が非常に効率的 |
Xamarin | Microsoftが提供しているフレームワーク | クロスプラットフォームアプリ開発環境/ ネイティブアプリの開発が得意/コードの共有化できる |
上記以外のモバイルフレームワークは、上記の拡張版や同様の技術基盤といえるでしょう。開発するアプリやコスト、開発速度、使いやすさなどを考慮したうえで、モバイルフレームワークを選択してください。
Flutterを使うべきエンジニア
以下にあてはまる人は、Flutterがなじみやすく、メリットが感じられるでしょう。
- モバイルアプリ開発をこれから本格的に始めたいWebアプリ開発者
- Androidアプリ開発者だが、iOSの開発も始めたい開発者
- React Nativeがなじめないと思っている開発者
- Apache Cordovaを卒業したいアプリ開発者
Flutterを使うエンジニアには、高度な専門性や最新の情報を負い続ける能力が必要となります。興味が薄い場合は、挫折する可能性もあるため、特徴や仕組みをきちんと理解すべきです。
Flutterで作られたアプリ・ゲームの例
Flutterは、小さな規模で早くスタートさせたい案件やプロトタイプ開発で活躍します。たとえば以下のアプリ開発なら、Flutterで円滑に開発を進められるでしょう。
- 地図アプリ
- 業務アプリ
- 画像編集アプリ
- マッチングアプリ
実際に、Flutterで作られたアプリ・ゲームについて紹介します。
Flutterで作られたアプリ
以下は、Flutterで作られたアプリの例です。
アプリ | 概要 |
---|---|
Google Ads | Googleの広告を管理するアプリ |
閑魚(シェンユー) | 中国のAlibaba Groupが提供/中国で人気の個人間のフリマアプリ |
My BMW App | ドイツのBMWが提供/車のコンディション管理(タイヤ気圧、充電状態、ドアのロック状況など) やカーナビ機能、車外カメラ・車内カメラの映像確認などが扱えるアプリ。 |
Philips | オランダのPhilipsが提供/スマート照明の操作ができるアプリ/スマート照明システムで、 映像・音楽・ゲームとの連動、外出先からの照明の操作ができる。 |
Kubota Diagnostics | クボタが提供/クボタ車両のトラックローダーの故障診断ができるアプリ |
じゃらん | じゃらんが提供/宿・ホテル予約アプリ |
Flutterで作られたアプリを実際に使ってみて、使用者側から操作性やデザインをみるのも良いでしょう。
Flutterで作られたゲーム
Flutterを使用して、ゲーム開発も行われています。ゲーム開発においては、クロスプラットフォーム性や高性能なUI作成など、Flutterの特性が活かされているでしょう。
以下は、Flutterで作られたゲームの例です。
ゲーム | 概要 |
---|---|
Flappy Bird | 画面に登場する鳥をタップして障害物である土管をくぐっていく非常に シンプルなゲーム/「Flame Engine」などの外部パッケージなしで作れる |
ギフト獲得ゲーム | ユーザーがサンタクロースとなり、30秒間でできるだけ多くの ギフトを集めるゲーム/「Flame Engine」を利用して作成 |
テトリス | 伝説的なテトリスゲームも、Flutterを活用して構築可能 |
チェス | 古典的なチェスゲームも、Flutterを用いて開発可能 |
ロールプレイングゲーム | Bonfireというフレームワーク(無料)で作成可能/ 簡単にカスタマイズ可能で、2Dゲームを作成できる。 |
Flutterを使ったゲームの作り方は、YouTubeなどの動画サイトで公開されているものもあります。動画を参考に、Flutterを使ったゲーム作成にチャレンジしてみても良いでしょう。
Flutterは流行らないといわれる4つの理由
Flutterは、流行らないと言う人もいます。主な理由は、以下の4つです。
- Dart言語の知名度が低い
- アップデートが頻繫でアプリへの影響が懸念される
- React Nativeと比較される
- 高いスキルを持ったFlutterエンジニアが少ない
それぞれ、詳しく解説します。Flutterを習得すべきか悩んでいる人は、参考にしてください。
Dart言語の知名度が低い
流行らないとされる理由の一つは、Flutterでのアプリ開発時に必要なDart言語の習得です。Dart言語は、JavaScriptやJava、Pythonなどと比べると、知名度が低い言語といえるでしょう。
Dart言語の習得をネックに感じて、Flutterを使用しないエンジニアもいます。現時点ではDartの需要や汎用性が低いため、他のプログラミング言語の学習が優先されているといった面もあるでしょう。
アップデートが頻繫でアプリへの影響が懸念される
Flutterは成長段階で頻繁にアップデートされるため、アプリへの影響が懸念されるケースもあります。アップデートは、最新機能の追加や改善だけでなく、既存のアプリに互換性の問題やバグなどが生じるリスクもあるからです。
頻繁にアップデートが行われると、そのたびに変更点の確認や修正、アプリケーションのテストなどが必要になります。
React Nativeと比較される
クロスプラットフォームのアプリ開発では、Flutterの競合としてReact Nativeが存在します。以下は、FlutterとReact Nativeの比較表です。
比較項目 | Flutter | React Native |
---|---|---|
プログラミング言語 | Dart言語 | JavaScript(TypeScript) |
言語の種類 | コンパイル言語(静的型付け) | スクリプト言語(動的型付け) |
ウィジェット | 豊富なウィジェットとアニメーション | OSのUIコンポーネントに依存する |
公式ドキュメント | 質が高く、初心者でも比較的スムーズにアプリ開発可能 | 豊富なドキュメント |
活用事例 | Alibaba/Google Ads | Facebook/Instagram/Uber Eats/Pinterest |
デプロイ | 対応したパッケージがある | サードパーティ製のライブラリに依存する |
リリース | 2018年 | 2015年 |
React Nativeは、JavaScriptで扱いやすいため、Flutter流行の障壁となっている可能性があります。
高いスキルを持ったFlutterエンジニアが少ない
Flutterが流行らないといわれる理由には、Flutterエンジニアが少ないといった背景が考えられます。Flutterは比較的新しいため、高いスキルを持ったFlutterエンジニアも限られているでしょう。
普及に時間がかかり、流行らずに終わるといった考えもあります。しかし、将来性が期待されている面もあるため、Flutterの動向には注視する必要があるでしょう。
将来性はある?Flutterの需要
Flutterは将来性があるといえるでしょう。クロスデバイスやマルチデバイスがすすむ環境で、Flutterの汎用性の高さは注目されているからです。
開発元のグーグルは2022年にFlutter3を発表し、更なる活用に向けて注力しているといえます。Google自体が成長企業であるため、Flutterが他のフレームワークより有利になるといった可能性もあるでしょう。
Flutterの入門・ステップアップ方法
Flutter入門者向けに、勉強やスキル習得の方法を解説します。Flutterを使いたいものの勉強やステップアップ方法がわからないという人は、ぜひ参考にしてください。フロントエンド開発経験がある人、ない人に分けて紹介します。
フロントエンド開発経験が“ある”人
フロントエンドでアプリ開発の経験がある人は、Flutterの公式サイトから学ぶ方法があります。公式サイトには、セットアップから学習、設計方法、アプリケーション開発まで情報が記載されています。
Flutter for Android developers
Flutter for iOS developers
Flutter for React Native developers
Flutter for web developers
Flutter for Xamarin.Forms developers
上記の各種ページと、後述のDartを学べば、Flutterでの開発は一通り行えるでしょう。公式サイトは英語で記載されているため、苦手な人は、以下の書籍で学ぶのもおすすめです。
- はじめてのFlutter(工学社)
- Flutter モバイルアプリ開発バイブル(マイナビ出版)
- 基礎から学ぶFlutter(シ-アンドア-ル研究所)
フロントエンド開発経験が“ない”人
主にプログラミング言語をある程度触ってきた人や、今までバックエンド開発をやっていた人向けのステップアップ方法です。
- Codelabをする
- Widget使って画面を構築する
- Dartを学ぶ
- StatefulWidgetでアプリケーション構築をする
- 状態管理をする
それぞれ詳しく解説します。
Codelabをする
まずは、Googleが用意したCodelabを見ながら、実際に自分で動かしてみるのがいいでしょう。いきなりFlutterを使って、本格的な開発を行うのは難しい場合があるからです。
おすすめのCodelabとして、Write your first Flutter app, part 1があげられます。Flutterのプロジェクト作成方法から簡単なFlutterの基本構造が学べます。パッケージの導入方法やFlutterでの開発を始めるうえで必要な情報が、一度に学べるでしょう。
Widget使って画面を構築する
Flutterの基本構造が分かってきたのであれば、実際に画面部分のみを構築してみるのがいいでしょう。
Flutterには、Material Designにそったコンポーネントが多数用意されています。大量にあるため選ぶのが難しい場合は、既存アプリのレイアウトを真似して作ってみましょう。
FlutterのYoutubeチャンネルでは、Widget of the Weekというシリーズの動画が公開されています。コンポーネントの種類や動きなどを、知りたい人は活用すべきです。
Dartを学ぶ
Flutterは基本的にDart言語を使って開発していくので、Dart言語の学習は必須です。Dart言語にも公式サイト「Dart programming language | Dart」があり、学習したり情報を得たりできます。
Dart言語を始めて学ぶ場合は、Language tour | Dartを見ていくと良いでしょう。Dartの基礎や特徴が一通り学べるようになっています。特に非同期処理の部分は、ネットワーク通信やデータベースの読み込みなどで使うのでよく読むべきです。
Dartは、ブラウザで動作できる言語です。細かな動作を確認したい場合は、Try Dartからコードを入力して実際に動作を確認してみましょう。
StatefulWidgetでアプリケーション構築をする
ユーザーインタフェースの構築方法、Dart言語を学習したら、Flutterを使ってのアプリケーション構築を行います。実際に動くユーザーインタフェースを作るのに1番入門しやすい方法は、StatefulWidgetを使った実装方法でしょう。
以下は、StatelessWidgetとStatefulWidgetの違いです。
StatelessWidget | StatefulWidget |
---|---|
状態(State)を持たない静的Widgetであり、 フィールドは全てfinalで保持される。 |
状態を持つ動的Widgetであり、ある瞬間(状態)における画面を構成するWidgetオブジェクトと、 次にbuild()が呼び出されるまで半永続的に情報を保持するStateオブジェクトに分類される。 |
詳しくは、公式サイトのAdding interactivityを参照してみてください。
状態管理をする
アプリの規模によって、アプリの状態管理を行う必要が出てきます。アプリの規模や機能がある程度大きくなると、StatefulWidgetだけの値管理は難しいからです。
破綻しないように設計する方法やサンプル付きの解説は、Flutterの公式サイトState managementに掲載されています。アプリの状態管理は、開発規模やメンバー、状況をみながら考えていく必要があるでしょう。
Optionsには、様々な状態管理の方法が紹介されています。また、Riverpodという手法は注目度が高いため、試してみると良いでしょう。
Flutterに関するよくある質問
Flutterに関する、よくある質問に答えます。Flutterとは何か、Flutterで開発されているアプリなどについてまとめています。学習方法についても参考にしてください。
Q. Flutterとは、どのようなフレームワークですか?
Flutterは、主にGoogle社がオープンソースで開発を行っている、マルチプラットフォームフレームワークです。 マルチプラットフォームフレームワークとは、複数のOSで実行できるアプリケーションを、共通のソースコードで実装する環境です。
Q. Flutterでは、どのようなアプリが開発されていますか?
Googleの広告を管理するGoogle Adsや中国で人気のフリマアプリ閑魚などは、Flutterで開発されています。ゲームアプリの開発にも使用され、テトリスやチェス、ロールプレイングゲームなども作成できます。
Q. アプリ開発のエンジニアがFlutterを学習する方法は?
フロントエンドでアプリ開発の経験がある場合は、Flutterの公式サイトから学ぶ方法があります。公式サイトには、セットアップ方法から学習方法、設計方法、アプリケーション開発まで情報が記載されています。
※本記事は2023年12月時点の情報を基に執筆しております。
最後に
簡単4ステップ!スキルや経験年数をポチポチ選ぶだけで、あなたのフリーランスとしての単価相場を算出します!
※相場算出に個人情報の取得はおこないません。
役に立った/参考になったと思ったら、シェアをお願いします。