Flutterは流行らない、オワコンと言われる背景と実状とは?
はじめまして、エンジニアスタイル編集部です!
コラムページでは、ITフリーランスに向けてお役立ち情報を発信します。Twitterではホットな案件を紹介してまいりますので、ぜひフォローをお願いいたします!
本記事が、皆様の参考になれば幸いです。
経験がまだ少ない方にもわかりやすく説明するために、初歩的な内容も記載しております。記事も長いので、実務経験豊富な方は、ぜひ目次から関心のある項目を選択してください。Flutterの案件の一例と、案件一覧を以下からご覧いただけますのであわせてご確認ください。
目次
Flutterは流行らない・オワコンと言われている背景とは
「Flutterは流行らない・オワコン」と言われている背景には、Flutterが比較的新しくリリースされたアプリ開発用のフレームワークである点や、ドキュメントやライブラリの普及が成長途中である点が挙げられます。
日本語のマニュアル・情報が少ない
Flutterには2017年12月リリースからしばらくは、日本語のドキュメントが少なく、扱うためには英語ドキュメントを読解する必要がありました。しかし現在ではGitHub上でFlutterの日本語版ドキュメントが公開されており、比較的簡単にFlutterの学習を始められます。
Flutterを使って開発するには、Googleが2011年にリリースしたプログラミング言語Dart(ダート)の文法の理解が必要です。他と比べて新しい言語のため、情報が少ないのも「Flutterは流行らない・オワコン」と言われている背景の1つです。しかし、DartはJavaやJavascriptを扱うエンジニアにとっては、文法が似ており学習しやすい言語です。
ライブラリが少ない
Flutterのライブラリは多くないですが、エンジニアが使いやすいように増えつつあります。UIのパーツや状態管理などの基本的な機能であればFlutterに標準装備されています。
現時点で、Flutterでよく使われるライブラリは以下の通りです。
Flutterライブラリ | 内容 |
Flutter Material | マテリアルデザイン(見やすくて直感的に操作できるデザイン)に沿ったUIパーツが含まれている |
Flutter Cupertino | iOSアプリ用のUIパーツが含まれる |
Flutter Provider | API通信を扱う時のHTTPクライアントライブラリ |
Flutter Animation | アニメーションを作成できる |
Flutter Firebase | 認証・データベース・ストレージなどの機能を実装する |
Flutter Provider | アプリ内の状態を管理する |
Flutter人材がまだ多くない
Flutterは2017年12月に最初の公式リリースが行われたフレームワークです。さらに日本語ドキュメントやライブラリが少ないこともあり、日本国内でFlutterエンジニアがまだ多くないのが現状です。
とはいえ、Flutterを開発したGoogle自身が、Googleのアプリケーション開発にFlutterを利用していることに始まり、世界中で多くの企業や開発者がFlutterを採用しており、今後も利用者数は増加すると予想されます。
Flutterの仕事自体が限定的
Flutterを使いこなせるようになれば、高品質なアプリ構築ができます。例えばFlutter Animationを使ってアニメーションを実装でき、ホットリロードによってアプリ起動中に再起動をしなくても、変更を適用できます。
しかし、Flutterはあくまでアプリ開発に特化したフレームワークであるため、Flutterエンジニアはアプリ開発の仕事に限定されます。また、他のフレームワークに比べて新たにリリースされたので、まだ導入できていない企業も多いのが現状です。
将来的にはより多くの企業がFlutterを採用することが予想され、それに応じてFlutterに関する仕事の数も増加することが期待されます。
Flutterがオワコンではない理由①:開発時のメリットが大きい
Flutterがオワコンではない理由の1つ目は、アプリ開発をする際、従来のアプリ開発用フレームワークと比較してメリットが大きいという点が挙げられます。
Flutterの特徴
Flutterはプラットフォームを選ばない上、アプリ開発をする上で便利な機能が多く搭載されています。
多様なプラットフォームに対応可能
Flutterは、スマートフォン向けプラットフォームをはじめ、WindowsやmacOS、Linuxのようなデスクトッププラットフォーム、さらにはGoogleの第3プラットフォームであるFuchsiaにも対応しています。
Flutterはほぼすべてのスマホ、デスクトップのプラットフォームに対応しているため、クロスプラットフォームアプリ開発に便利です。異なるプラットフォームでも同じように実行できるアプリであれば、一貫したユーザーエクスペリエンスを提供できます。
ウィジェットツリー構造
Flutterには独自の階層構造「ウィジェットツリー構造」があります。
Flutterで作成したテキストや画像、ボタン、フォームなどの要素は、すべてウィジェットとして親と子の関係で繋がっています。例えばテキストと画像が入ったカードを表示する場合は、Cardが親ウィジェットです。Cardの中にColumnウィジェットが配置され、さらにその中にText・Imageウィジェットが配置されます。このように、ウィジェットの親子関係がツリー状に見えるため「ウィジェットツリー構造」と呼ばれます。
ウィジェットツリーを構築することで、Flutter内のUI描画やアニメーション処理などが効率的に行えたり、開発者がアプリケーションの見た目や動作を、アプリ起動中に確認できるホットリロード機能を活用できたりするメリットがあります。
ホットリロード
Flutterには、コード変更をした際に、アプリ実行中でも変更が反映される「ホットリロード」という機能があります。
ホットリロード機能の良いところは、アプリを再起動しなくても変更箇所を確認できるので、効率的に開発できる点です。ホットリロード機能を持つフレームワークは最近では増えており、例えばReactやVue.jsなどもFlutterのような有名フレームワークにもホットリロード機能があります。
宣言型UIプログラミングが用いられている
Flutterは「宣言型UIプログラミング」で構築するフレームワークです。
宣言型UIプログラミングとは、開発者が求める結果を先に記述すると、システムが内部処理の手順を構築してくれる手法です。宣言型UIプログラミングを採用すると、アップグレードが必要な場合でも自動でUI更新が行われるため、開発者が手動で変更する手間が省けます。
スピーディーな開発を実現できる
Flutterを使うと開発を早く行える理由は「充実したUIライブラリ」「クロスプラットフォーム開発に対応」「ホットリロード機能」の3点です。
FlutterのUIライブラリには、モダンで使いやすいボタンやアイコンなどのUIコンポーネントが充実しており、簡単にアプリのUIデザインを作成できます。
また、Flutterはモバイルプラットフォーム(Android・iOS)と、デスクトッププラットフォーム(Windows・mac OSなど)の両方に対応しています。1つのコードを書くだけで複数のプラットフォームで実行できるため、多くのユーザーが利用できるアプリ開発が簡単にできます。
そしてFlutterには、変更を加えたコードをすばやく反映させる「ホットリロード」機能があり、変更と確認の流れをスピーディーに行えます。
iOS / Android向けネイティブアプリの開発両方を実行できる
ネイティブアプリとは、特定のプラットフォームで動作するアプリを指します。ネイティブアプリのほとんどは、KotlinやSwiftのように各プラットフォームに対応したネイティブ言語で開発されており、別々のプラットフォームで動作させるには、それぞれ開発する必要があります。
しかしFlutterであれば、同じコードベースからiOSとAndroidの両方のプラットフォームに対応したネイティブアプリを開発できます。
Flutterの他に、1つのコードで複数対応したネイティブアプリ開発ができるフレームワークでは、React NativeやXamarinが有名です。FlutterはReact NativeやXamarinに比べてホットリロード機能が進化しており、ビルド時間が短く、再起動が不要な点では優れています。
Flutterの公式サイトにアプリ開発に必要なドキュメントが多数ある
Flutterの公式サイトには、アプリ開発に必要なドキュメントが用意されています。
例えばFlutterの開発環境「Flutter SDK」のライブラリやクラス、関数の情報が知りたい場合は、「Flutter APIリファレンス」にインストール方法や一覧の説明が記載されています。
また、Flutterのウィジェット記述例が見たい場合は「Flutterウィジェットカタログ」が便利です。初めてFlutterを扱う方にも分かりやすいよう基本的なウィジェットがまとめられており、画像やアニメーションをアプリに入れる時のウィジェット導入例なども豊富に用意されています。
さらに「Flutterサンプル」では、実際にFlutterを使って開発されたアプリの実例が豊富にあり、アプリの構造や実装方法を理解するのに役立ちます。
保守コストを削減できる・コードレビューの負担が少なくなる
Flutterは視覚的に分かりやすいウィジェットベースのアーキテクチャを採用しています。
各ウィジェットは独立して動作し、再利用可能です。それにより、開発者は同じコードを何度も書く手間が省けるため、コードレビューがしやすいというメリットにつながります。
また、Flutterには静的型付け言語であるDartが使用されます。静的型付け言語は、開発者がコードを作成するときにエラーを早期に発見するのに役立ち、メンテナンスが容易になります。
さらに、Flutterにはコード変更を即座に反映させる「ホットリロード機能」があり、コードの変更が即座に反映されるので、すぐに問題を修正できます。
Flutterがオワコンではない理由②:クロスプラットフォームとして台頭
Flutterがオワコンではない理由の2つ目としては、FlutterはGoogleが開発したフレームワークで、多くのプラットフォームに対応しており、クロスプラットフォームアプリ開発に便利な点が挙げられます。
Googleが開発元の企業である
FlutterはGoogleが開発したアプリ開発用フレームワークです。
GoogleがFlutterを開発した背景には、従来のアプリ開発では異なるプラットフォームに対して異なるコードを書く必要があり、そうすると開発に時間がかかり、開発コストが高くなるという問題がありました。さらに各プラットフォームに合わせたUIデザインを行うのも、効率が悪くなる原因の1つです。
Flutterはこのような問題を解決するために開発され、1つのコードベースで複数のプラットフォームで実行できるアプリが開発できるので、開発スピードが上がります。さらに、Flutterには優れたUIデザインが豊富に用意されており、誰でも「ユーザーが使いやすいアプリ開発」ができます。
もちろん、Googleの自社製品やサービス開発にもFlutterは使用されています。
Flutterは他のクロスプラットフォーム含め1番のトレンドになっている
React NativeやXamarin、Cordova、Titanium Mobileなど、複数のプラットフォームに対応したアプリ開発用フレームワークはありますが、中でもFlutterは世界中で人気が高まっており、トレンドの一つとされています。
その理由は、開発元であるGoogleが積極的にFlutterをサポートしている事が大きいでしょう。さらにスマホアプリの市場は今後も拡大し、クロスプラットフォームのアプリ開発が当たり前になると期待されます。FlutterはiOSやAndroidだけでなく、デスクトップやWebのアプリなど、バラエティ豊かなプラットフォームに対応することができるため、エンジニアにとって選択肢が広がります。
Flutterはコミュニティも活発です。例えばFlutterの新機能やチュートリアルを共有できるFlutterDevや、Flutterの使い方について学べるFlutter Study Groupなど、目的によって様々なコミュニティに入ることで、アプリ開発の幅が広がります。
15万以上のFlutterアプリがリリース済みである
Google for Developersによると、 2021年の時点では既に15万以上のアプリ開発にFlutterが携わっています。有名なアプリには、例えばGoogleのアドセンス広告管理「Google Ads」や支払いアプリ「Google pay」、アリババグループが開発し中国で人気が高い買い物アプリ「Alibaba」やフリマアプリ「Xianyu」などもFlutterで開発されています。
アプリのリリース数や、大手企業が続々とFlutterを使ってアプリ開発を行っている現状をみると、Flutterはオワコンではなくむしろ人気が伸びているフレームワークの1つです。
まとめ
今回は「Flutterがオワコンと言われる背景」について紹介しました。結論をいえば「Flutterは他と比べて新しいフレームワークで、クロスプラットフォームに対応という利点を生かし、今後も成長が見込まれる」です。
FlutterはDart言語を使って開発するため、最初の取り掛かりが難しいと思うエンジニアも多いでしょう。しかし、今では日本語のドキュメントやサンプルが普及しているため、日本人エンジニアもFlutterを使った開発がしやすい環境が整ってきています。
Flutterのドキュメントだけでなく、コミュニティなども積極的に利用し、効率的なアプリ開発をしましょう。
- CATEGORY
- 学習
- TAGS
-
-
-
-
-
-
-
【リモート】デジタルウォレットアプリ_フロントエンドエンジニアの 求人・案件
- 1,000,000 円/月〜
-
その他
-
【フルリモート】技術本部プロジェクトマネージャー(開発PM)の 求人・案件
- 900,000 円/月〜
-
その他
- Python JavaScript TypeScript
-
【リモート】日本最大級のプラットフォーム_UXディレクター(プランナー)の 求人・案件
- 750,000 円/月〜
-
その他
-
【Java3年以上/週5稼働/20~40代活躍中】新人教育・研修事業にてJava講座のメイン講師募集の案件・求人の 求人・案件
- 850,000 円/月〜
-
その他
- Java
-
【新規ソーシャルゲーム】3DCGキャラクターモデリング案件の 求人・案件
- 600,000 円/月〜
-
秋葉原・神田
-
【LP/バナーデザイン】金融業界向けバナー作成案件の 求人・案件
- 450,000 円/月〜
-
その他
-
【Java/React】オンライン学習サービス開発案件の 求人・案件
- 900,000 円/月〜
-
番町・麹町・永田町
- Java
-
【コンサル/英語】製薬メーカー向けSAPマイグレーション案件の 求人・案件
- 1,200,000 円/月〜
-
五反田・大崎・目黒
-
【Webデザイン】ポータルサイトデザイン作成案件の 求人・案件
- 550,000 円/月〜
-
その他
- その他
-
【JavaScript】業務系ローコードシステム開発案件の 求人・案件
- 450,000 円/月〜
-
その他
- JavaScript
-
【DBエンジニア(SQL全般)】販売実績データを受け取り、他システム向けデータへ加工する中間システムの改修の 求人・案件
- 550,000 円/月〜
-
その他
- SQL
-
【DBエンジニア(SQL全般)】「グローバル会計の見える化(BI構築)」設計・開発・稼働支援フェーズの 求人・案件
- 800,000 円/月〜
-
その他
- SQL
-
【AWS】WEBサイト構築の各種受託案件対応(SE)の 求人・案件
- 520,000 円/月〜
-
渋谷
-
【COBOL3年以上/常駐必須/週5稼働/20~40代活躍中】某保険系の代理店関連管理システムにおける開発支援の案件・求人の 求人・案件
- 550,000 円/月〜
-
その他
- COBOL
-
【Go言語3年以上/リモート併用/週5稼働/20~40代活躍中】大規ECサービスのリプレイス フルスタックエンジニアの案件・求人の 求人・案件
- 840,000 円/月〜
-
その他
- Go言語 SQL JavaScript
-
【コンサル】SAP会計コンサル支援案件の 求人・案件
- 950,000 円/月〜
-
その他
-
【PM】Asprova導入案件の 求人・案件
- 1,200,000 円/月〜
-
その他
-
【Java】カーシェアシステム開発案件の 求人・案件
- 600,000 円/月〜
-
五反田・大崎・目黒
- Java