参考記事
Flutter/Dartとは? 将来性や勉強法、開発事例を分かりやすく解説
スマートフォンの普及率が90%を超え、誰もがスマホアプリを使う時代。多くの企業がスマホアプリ開発に参入し、スマホアプリを効率的に開発するツールやライブラリも多く登場しています。
その一つが、Googleが2018年に発表したFlutter。スマホアプリ開発者であれば、1度は聞いたことがあるのではないでしょうか?
今回はFlutter/Dartの特徴やメリット・デメリットなど、おさえておきたいポイントを徹底解説。「Flutter/Dartに興味はあるけどよく分からない」という人は必見です!
Flutter/Dartとは?
「Flutter(フラッター)」とは、2018年にGoogleがリリースしたスマホアプリ用のフレームワークです。Flutterを使った開発には、同じくGoogleが2011年に発表した「Dart(ダート)」というプログラミング言語が使用されます。
それでは、Flutter/Dartにはどんな特徴があるのか、それぞれ人気はどれくらいあるのか……など基本的なポイントを見ていきましょう。
Flutterってどんなフレームワークなの?
スマホアプリを開発する際はiOS用、Android用……といったようにOSに合わせて開発するのが一般的です。その理由は、それぞれのOSによって開発言語や開発環境、UIなどが違うからです。両方のOSでリリースをしたほうが広くユーザーにアプローチできますが、2倍の開発コストが掛かってしまう点が課題でした。
そして、この課題を解決するのがFlutterです。
FlutterはiOS・Android両方に対応するようにコードを変換する「クロスプラットフォーム」が備わっているため、Dartを使ってコーディングをすれば両方のOSのアプリを開発できます。
こうした特徴から、効率性重視の開発現場や開発コストをかけられないベンチャー企業など、開発サイドで注目を集めているのです。
Dartってどんな言語? 習得難易度はどれくらい?
Dartとは、2011年にGoogleがJavaScriptの代替言語としてリリースしたオープンソースのプログラミング言語です。
DartはもともとWebアプリケーション向けのプログラミング言語として開発されており、「Google Ads」や「Google Express」などのGoogle社内チームでの使用がほとんど。Dartがリリースされた当初の普及率は低いものでした。
DartはJavaScriptの欠点を補うために開発された代替言語ということもあり、文法がよく似ているため、JavaScriptを習得している人であれば、それほど苦労せずにDartも使いこなせるでしょう。
またDartは、JavaScript以外にも、C言語やC#、Javaなどにも少しずつ似ていると言われることが多く、他言語からの移行が比較的簡単なプログラミング言語です。
Flutter/Dartってどれくらい人気なの?
2021年、Googleは「Play Store内にある200,000のアプリケーションでFlutterが使われている」と発表しました。この数字は2020年の年末に集計したデータよりも50,000多く、2019年12月時点と比較すると440%増。Flutterの需要が急速に伸びていることが分かります。
またSlashDataは「Mobile Developer Population Forecast 2021」で「開発者の45%がFlutterを使っている」と発表しました。これらのデータから、Flutterは今もっともポピュラーなフレームワークの一つであることが分かります。
2018年、codementorの「最も学ぶ価値のないプログラミング言語」で1位という不名誉を取得したDartですが、Flutterの人気に伴いDart人気も急上昇。2021年に発表されたStack Overflowの「最も愛されているプログラミング言語」では7位を獲得しました。
約2年で知名度・人気共に飛躍的に上昇しており、Flutter需要も高まっていることから、Dartの人気も今後しばらく続くことが予想されています。
Flutterって何ができるの?
先ほどFlutterはスマホアプリ開発におけるフレームワークだと説明しましたが、もともとDartはWebアプリケーション向けの言語として発表されていることからも分かるように、Flutter/Dartを使えばスマホアプリと同じコードでWebアプリも開発することができます。
またFlutterはセキュリティー性が優れているため、個人利用の小規模開発はもちろん、商業用の大規模開発も可能です。
Flutterで開発可能なアプリ例
・地図アプリ
・業務アプリ
・キャッシュレス決済アプリ
・画像編集アプリ
・ライブ配信アプリ
・ショッピングアプリ など
FlutterとReact Nativeってどう違うの?
クロスプラットフォームの代表格と言えば、Facebook社が開発を手がけるフレームワーク「React Native」です。
Flutterの設計思想は「Write once, Run anywhere(1度書けば、どこでも動く)」であるのに対し、React Nativeは「Learn once, Write anywhere(1度学べばどこでも書ける)」が原則です。また使用言語や対応OSなどにも違いがあり、それぞれデメリットもあります。
Googleトレンドで比較をすると、2019年にFlutterがReact Nativeを追い抜いてからFlutter優位の状態が続いており、現在の人気はFlutterに軍配があがっていると言えそうです。
Flutterに将来性はある?
結論から言うと、Flutterの将来性は充分にあると言えます。その理由は、現在Google Payをはじめ、さまざまなGoogleサービスでFlutterの導入が進んでいるから。
Googleサービスとの相性がいいFlutterを使えば、今後さらにアプリケーション開発が効率的になり、Flutterの需要は増えていくことが予想されます。
ただし、Flutterはまだ新しいフレームワークということもあり、国内に技術者が少ないのが現状です。それに伴って国内のFlutter案件はまだそれほど多くなく、需要は高いとは言えません。
しかし既にアメリカや中国、インドなどIT大国と呼ばれる国ではFlutterの需要が爆発的に伸びており、この流れはいずれ日本にもくるでしょう。
Flutter/Dartのメリット・デメリット
海外を中心に需要が急速に増加しており、日本でも近年主流だったReact Nativeより注目度が高まっているFlutter/Dart。
特にクライアントよりも技術者側のメリットが多く、オープンソースなので導入コストがかからないこともあり、「Flutter/Dartを自社でも使ってみたい」と感じる技術者は多いかもしれませんね。
とはいえ、Flutter/Dartにも得意分野と苦手分野はあります。Flutter/Dartのメリット・デメリットをご紹介しますので、参考にしてみてください。
Flutter/Dartのメリット1:開発期間・コストを削減できる
これまで述べている通り、Flutterを使えば一つのコードでiOSやAndroid、Webアプリを開発することができます。これまではそれぞれのOSに合わせて開発が必要だったのに対し、Flutter/Dartを使えば開発コードの量や作業工数、開発期間や開発コストを削減できる点は開発者にとって大きなメリットです。
Flutte/Dartのメリット2:仕様変更に強い
Flutterにはコードを変更した時に即時にUIに反映する「ホットリロード」と呼ばれる機能があります。
ホットリロードにより、仕様変更の際の工数も格段に少なくなりますし、通常であればiOS・Androidのそれぞれでレイアウトチェックなどが必要ですが、Flutterなら自動的にOSに適したレイアウトになるため、開発効率がさらに高まります。
Flutter/Dartのメリット3:保守コストを抑えられる
FlutterにはUIが美しく表示される「マテリアルデザイン」という特徴があります。マテリアルデザインによって、端末ごとにサイズが違うAndroidでも適切なレイアウトが表示されたり、iPadやiPhoneXなど新しいiOS端末が発売した際もデザインを組み替えたりする必要がなくなり、保守コストの削減にもつながっています。
Flutter/Dartのデメリット1:端末固有機能との連携が苦手
Flutterは、カメラやGPSなどのような一般的にスマートフォンに搭載されている機能との連携はできますが、AndroidもしくはiOS特有の機能と連携をする場合は「一つのコードでAndroid、iOSアプリを開発できる」というFlutter最大のメリットを享受できないため、あまり向きません。
またFlutterはAndroid、iOSごとにカスタマイズが必要な複雑なアプリ開発にも向かないと言われています。
Flutter/Dartのデメリット2:日本語の情報が少ない
Flutter/Dartはまだ日本での知名度が低いこともあり、日本語で書かれた文献やWeb上の情報などが著しく少ないという特徴があります。
Flutter/Dartを学習する際や開発中にトラブルが発生した際に参考にできる情報が少ない点は、企業やエンジニアがFlutter/Dart導入に対するハードルを感じる一因でしょう。
逆にFlutter/Dartに関する英語のドキュメントは豊富にあるので、英語スキルのある人であればあまりハードルを感じないはずです。
Flutter/Dartの活用事例
ホットリロード機能によりスピーディーな開発ができ、独自UIによりデザイン性の高いサービスも得意なFlutter/Dart。プロトタイプ開発にも向いていると言われています。
それでは、具体的にどのようなサービスにFlutter/Dartが使用されているのでしょうか? 国内でFlutter/Dartが導入された活用事例として、代表的なものを見ていきましょう。
・Stailer(10X株式会社)
スーパーマーケット、ドラッグストアなどの小売チェーンがECを立ち上げるためのプラットフォーム『Stailer』。10Xではサーバーサイドも含めた開発言語を「Dart」一本に絞ることで、エンジニア全員がフロントもサーバーも対応できる体制をつくりました。
(参考記事)Flutter採用で“フルDart”体制へ。スタートアップ10Xが「全社で言語統一」を選ぶ理由
・じゃらんnet(株式会社リクルート)
2020年にリリースから10年を迎えた国内最大級の宿・ホテル予約サイト「じゃらんnet」。プロジェクトの大規模化によるビルド時間の増加やコードの古さを解消するため、現在Flutterへの移行を進めています。
(参考記事)Flutter移行の苦労と、乗り越えた先に得られたもの
・REQU(株式会社サイバーエージェント)
サイバーエージェントではFlutterやKotlin Multiplatformのようなクロスプラットフォームフレームワークの導入が進んでおり、同社が運営する『Ameba』内の、個人の知識や特技などのスキルを販売するプラットフォーム『REQU(リキュー)』にはFlutterが導入されています。
Flutter導入により、同社が抱えていた「iOSとAndroidのアプリ間で発生する機能差」や「iOSとAndroidのエンジニアリングを共通化したい」という課題の解決に寄与しています。
(参考記事)Flutter導入から見るクロスプラットフォーム開発のリアル
・ポルト(株式会社スタディプラス)
学生や社会人向けの学習サービスを展開する株式会社スタディプラスでは、参考書を月額980円で読める電子参考書サービス『ポルト』でFlutterを導入しています。
同サービスのAndroid、iOSアプリのコードはほとんどDartで書かれており、バックエンド部分はFluttar/Dartと相性の良いFirebaseを使って開発されています。
(参考記事)FlutterとFirebaseで新しいサービスをリリースしました
・トヨタコネクティッド株式会社
「最先端のIT×ものづくりのDNA」というキーワードを掲げ、トヨタの子会社として車載システムなどの開発をおこなうトヨタコネクティッドでは、組み込み系開発にも対応できるFlutter/Dartを導入。
JavaScriptに似たDartを導入することでWeb系エンジニアなどこれまで組み込み系開発以外の分野で活躍していた開発者にも門戸を開いています。
(参考記事)Flutter/Dartで取り組むフロントエンド開発。グローバルトップシェアのシステムのUIを開発するというシゴト
Flutter/Dartを始めるには
Flutter/Dartは新しい技術に見えて、実はエンジニアにとって馴染みのある技術です。特にDartは、JavaScriptやC言語などと似ているため、既にこれらのプログラミング言語を習得している人にとっては馴染みやすい言語だと言われています。
「今から新しい言語を勉強する時間がない」と敬遠していた人も、この機会にぜひ触れてみてはいかがでしょうか?
Flutterの環境構築の仕方や学習のコツ、Flutter/Dartが向いている人などをご紹介します。
Flutterの開発環境はどうやって構築するの?
「まずはFlutterの環境構築から始めたい」という人は、公式HPにある手順にしたがってFlutterをインストールしましょう。基本的に英語のドキュメントなので、英語が苦手な方はハードルが高いと感じてしまうかもしれませんが、翻訳機などを使えば充分理解できる内容となっているため安心してください。
簡単な手順としては、以下のような流れとなります。
【1】Flutter SDKのダウンロード
【2】環境変数の設定
【3】Android studioのダウンロード・Androidエミュレータのセットアップ
【4】Xcodeのダウンロード・iOSシミュレータのセットアップ
Flutter/Dartを学習する時のコツって?
Flutter初心者が学習を始める時はまず、Flutterの公式HPで紹介されているドキュメントやDartの公式HPで紹介されているドキュメントを見ながら学ぶのがおすすめです。
公式HPで紹介されているドキュメントは一通り目を通すのが理想ですが、以下のページは特に重要ポイントなので目を通しておきましょう。ドキュメントを読むだけは理解が難しい場合は、実際にコードを書きつつ学んでいくのがおすすめです。
Flutter公式がDartを実行できる「DartPad」を提供しているのぜひ活用してみてくださいね。
・A tour of the Dart language
・Write your first Flutter app,part1
・A tour of the Flutter Widget Framework
・Building beautiful UIs with Flutter
・Cookbook
・Widgets Catalog
ある程度知識が溜まったら、実際に簡単なアプリを作ってみましょう。自分が作りたいアプリに使えそうなライブラリを調べているうちにさらに学習が進んでいくはずです。
参考記事
【入門】Flutterの効果的な勉強法とメリットとは? YOUTRUSTアプリをFlutterで立ち上げたエンジニアに聞いた
Flutterはどんな人におすすめ?
これまでに述べている通り、FlutterはAndroidやiOS、Linuxなど複数OSに対応したアプリを開発できるクロスプラットフォームです。
現在Androidエンジニア(もしくはiOSエンジニア)で、今後iOSアプリ開発(もしくはAndroidアプリ)も開発したいと考えているエンジニアには、Flutterはぜひおすすめしたい技術の一つです。
またFlutter/Dartは新しい技術だと思われがちですが、実は他言語と似ている部分が多くあり、エンジニアにとって馴染みのある技術です。下記のエンジニアは学習コストをかけることなくFlutterやDartを身に付けられるため、以下のような人にはおすすめです。
・これからモバイルアプリ開発を始めたいWebアプリ開発者
・フロントエンドの知識も身につけたいサーバーサイドエンジニア
・JavaScriptやJavaの知識があるエンジニア
Flutter/Dartは開発者にとっての救世主
Flutter/Dartは「開発コストを抑えられる」「仕様変更が得意」など、クライアントやサービスの利用者よりも、開発者にとってメリットが大きい技術です。まだ日本では知名度が低い技術ではありますが、Flutter/Dartを習得しておけばエンジニアにとって利点があるのは間違いありません。
既に何かしらの領域でエンジニアとして活躍する人にとっては比較的学習コストをかけずに学習できる技術でもあるため、「今から新しい技術を学ぶのはハードルが高い」という人もぜひチャレンジしてみてはいかがでしょうか。
参考記事
・「Flutter未経験」でも採用された理由は? スタートアップ10Xへの転職事例に見る、技術スタックよりも大切なこと
・10X×SYN CTO対談! Flutterを採用する2社CTOが語る、開発言語・体制の選択基準【ECDWレポ】
文/赤池沙希
RELATED関連記事
RANKING人気記事ランキング
米国優位が揺らぐ?ひろゆき「CPUの進化でGPU神話って崩壊しません?」【AI研究者・今井翔太が回答】
AWS認定資格10種類を一覧で解説! 難易度や費用、おすすめの学習方法も
表面的なテクニックより「基礎基本の重要性」に気付かされた一冊【Node.js 日本ユーザーグループ代表・古川陽介】
NEW!
もう「仕事中のとっさの会話」で困りたくないエンジニアへ。コミュニケーションの瞬発力を鍛える三箇条【澤円解説】
社会で成功するゲーマーに、ひろゆきが聞く「現実世界を攻略できないゲーマーに足りないものって何すか?」
JOB BOARD編集部オススメ求人特集
タグ