Flutterは、2018 年に Google社がリリースしたアプリケーション開発用フレームワークです。 2020年には Google社が Google Play を Flutter へ変更したこともあり、世界から注目されたこともあります。
また昨今、iOS/Android のアプリ開発を低コストでスピーディに進めることができるクロスプラットフォーム開発の需要が高まる中、Flutter はどのようなメリットやデメリットがあるかを実際の実例をふまえながら挙げていきます。自社アプリの開発で Flutter の採用を検討する際のヒントになれば幸いです。
1. Flutter とは?
Flutter はモバイルアプリ開発のためのオープンソースのフレームワークです。
Dart (ダート)という開発言語を使用して、単一コードで iOS / Android のアプリを構築できます。一般的なネイティブアプリ開発では iOS / Android それぞれに合わせた開発言語やプラットフォームが必要ですが、Flutter は 1 度の開発工程であらゆる OS に対応できるため、開発期間やコストを削減できます。
1-1. Dart言語について
Flutter 開発は Dart 言語を利用してアプリを構築します。Dart 言語は、 JavaScript の代わりになる言語として 2011 年に Google によって開発されました。競合言語である Microsoft によって開発された TypeScript が、Google 社内のソフトウェア開発における 6 番目の標準言語に採用されたこともあり、 Dart言語の普及は進みづらかったのですが、Flutter 開発の人気に相まって Dart言語も再び注目されています。
1-2. React Native との違い
React Native も Flutter と同じようにクロスプラットフォーム開発が可能であるため、よく比較されます。
まず、React Native と Flutter では開発に使用する言語が異なります。Flutterは Dart言語を使用し、 React Nativeは JavaScript を使用します。
また、UI にも違いがあります。React Native はネイティブ UI を採用していますが、Flutter は独自 UI を採用しています。
※ 独自 UIとは
クロスプラットフォーム独自のシステムで画面表示 (レンダリング) を行うことで、 OS に依存しない UIの描写を行うことができます。
※ネイティブ UIとは
クロスプラットフォーム固有のプログラミング言語 (iOS では Swift/Objective-C、Android では Java/Kotlin) を使って UI 操作の記述が必要になります。ネイティブ UI を採用することによって、Android ユーザーと iOS ユーザー各々に対して使いやすい UIを提供することができます。
2. Flutter によるアプリ開発のメリット
自社アプリで Flutter 開発を選択することで得られるメリットは主に 2 つです。
2-1. 開発スピードの向上および初期コストの削減
以下の理由により、Flutter 開発ではエンジニアの人数や作業量を減らすことができるため、初期開発にかかる時間と費用を大きく削減することができます。
- クロスプラットフォームにより、一つのコードベースで iOS Android 二つのアプリ開発が可能
- Hot Reload機能(ホットリード)を提供しているため、開発中にアプリを素早く再読み込みすることが可能
※Hot Reload機能とは
ソースコードを書いた時点でリアルタイムに変更がアプリに反映される機能です。これにより、開発中のアプリを再起動することなく、数秒で更新して確認することができます。
2-2. Flutter 専用のノーコードサービス「FlutterFlow」もある
FlutterFlow は、Bubble(バブル)や Adalo(アダロ)のような、Flutter 専用のノーコード・ローコード開発ツールです。
GUI ベースであり、エンジニアのような知識がなくてもドラッグアンドドロップ操作などで開発ができるため、従来の開発より 10 倍のスピードでアプリ構築ができると銘打っています。 また、Flutter を基礎としているので、FlutterFlow で作ったアプリにコードを追加してカスタムすることも可能です。
FlutterFlow を利用してアプリの MVP (Minimum Viable Product) 開発をする場合、素早くプロトタイプを作成し、その後ユーザーの反応などから必要な機能を追加して、アイディアの検証を行いながら開発を進めることができます。
※MVP (Minimum Viable Product) 開発とは
最小限の機能だけでアプリを開発すること。手早く作ったアプリを運用しながらユーザーのニーズを把握したり、フィードバックを受けながら改修や追加開発を行っていく手法です。
3. Flutter のデメリットとできないこと
とはいえ、Flutter 開発はメリットばかりではありません。デメリットや、Flutter ではできないこと・難しいことも少なくありません。
3-1. 機能の拡充・プロダクトの作りこみには向かない
最大のデメリットは、プラットフォームの API を直接呼び出すことができず、OS 独自の機能は iOS/Android それぞれで開発する必要があることです。
例えば、カメラや位置情報取得機能、デバイスのセンサー機能を利用したい場合や、 OS 固有の API を利用したい場合は、Flutter だけでは「作りきること」が難しいです。そのような場合、ネイティブコードの記述を追加する必要があり、結果的にソースコードの複雑性が増す可能性があります。
ちなみに FlutterFlow を採用した場合でも、細かく作りこみたい場合はプログラミング作業が不可避であるため、エンジニアの手を借りる必要があります。
また、Flutter で開発したアプリをネイティブアプリと比較した場合、動作速度が劣る傾向にあることもデメリットとして挙げられます。
3-2. バグ改修のコストが通常以上にかかる
機能の初期開発以上にデメリットが大きいのはバグの発生時です。
Flutter で開発したネイティブアプリに難しい不具合が起きた場合、解決するためには Flutter のエキスパートと iOS または Android のエキスパートの両方が必要になります。
理論上は一つの言語のエンジニアだけでアプリを運用できるものの、実際は複数言語のエンジニアが必要になるケースが多いといえます。
3-3. iOS/Android における OS アップデートで新しく生まれた技術や API をすぐに実装しづらい
それぞれの OS の機能がアップデートされた後に Flutter で対応するため、最新機能を素早く取り込んで開発を進めることも難しいです。
Flutter は総じて開発の初速・シンプルなアプリの保守運用に強みを持っており、自社に取り入れたい場合は、ネイティブ開発とどちらが適しているかを吟味することをおすすめいたします。
3-4 開発環境が十分に整っていない
Flutter 開発経験者のエンジニアが少ないことや、日本語のドキュメントが少ないこともデメリットとして挙げられます。
Flutter に特化したシニアエンジニアが少ない
Flutter は 2018 年に開発されたため、比較的新しいフレームワークです。Dart 言語は、JavaScript に似ている部分もあり習得しやすいとはいえ、実際に開発経験があるエンジニアは多くはありません。
また、Flutter 開発の実績がある企業も日本国内では少ない傾向にあるので、即戦力のエンジニア確保は容易ではありません。ただしエンジニア採用・定着の難しさは Flutter に限らないので、Flutter 開発チームの立ち上げ・運用が特に大変というわけではありません。
日本語ドキュメントが少ない
Flutter は、Google 社によって開発されたということもあり、英語で書かれている情報やドキュメントは多く存在しますが、日本語の資料が少ない傾向があります。
そのため、英語が苦手な人にとってはドキュメントを読むことに時間がかかってしまいます。ですが Flutter はオープンソースであるため、英語に苦手意識がないエンジニアであれば、英語圏の開発者コミュニティからドキュメントを探して解決することも可能です。
4. Flutter の事例
Flutter 開発を取り入れた企業をいくつかご紹介します。Flutter開発を採用した理由や、採用した結果どう好転したのか、という点もまとめていきます。
BMW公式アプリ My BMW App
離れた場所からアプリを利用して、BMW車両位置の特定、エアコン調節やドアのロックなどを操作することが可能です。BMW車を所有していなくても、デモモードでアプリを体験することができます。
Flutter開発を採用した理由ですが、 2018 年に iOS/Android 間に製品の機能とデザインの相違が大きくなりすぎたため、クロスプラットフォームソリューションの Flutter が採用されたとのことです。
Flutter へ移行した結果、開発開始から 1 年も経たないうちに 5 大陸 47 か国にむけてリリースすることができました。さらに、OS ごとの煩雑なコード管理から解放されたことにより、当初の問題であった iOS/Android 間の製品の相違も解消されました。
出典:Scaling customer-centric product development at BMW Group with Flutter
Philips Hue
照明ライトで有名なオランダの会社です。アプリと照明ライトをリンクさせて、時間設定のオンオフだけでなく明るさやカラー、ライトの動きをカスタムできます。
また照明をテレビ、音楽、ゲーム、音声コントロール (Siri や Alexa など) と同期させて操作することも可能です。Github に Flutter 開発のライブラリやコードが公開されておりますので、気になる方は参考にしてみてください。
出典:Philips Hue
Green 転職アプリ
株式会社アトラエが運営する転職アプリです。気になる企業があった場合、求職者は企業へアプローチすることで事前にカジュアル面談ができます。
Flutter 開発に至った背景としては、開発メンバーのリソース不足があり、開発の効率化を図るためにクロスプラットフォーム技術の Flutter が採用されたとのことです。
実際、Flutter の実務経験者が社内にいなくても、学習中のエンジニア (他の業務も掛け持ち) を筆頭にわずか 4 カ月間でアプリをリリースすることができたそうです。
出典:求人メディア Green の Android アプリを Flutter で開発した裏話
Kubota Remote Support
農作業に必要なトラクターなどを製造することで有名な株式会社クボタの建設機械の故障診断アプリです。3D モデル・AR の拡張現実を使用して、世界各地のクボタ製機械の点検や、故障個所を現場と機械の専門家間でアプリを通して画像や動画を共有することが可能です。
Flutter で開発したアプリをカスタムしており、AR 機能の部分には Unity という別の開発言語が使われております。
出典:ローカルニーズを的確に捉えたAR機能搭載の故障診断アプリで顧客エンゲージメントを向上(株式会社クボタ)
iRobot Home
お掃除ロボットの掃除開始時刻や、自宅のマップに沿って掃除場所の指定がアプリで指示できます。また、 Google アシスタント、 Alexa に対応しており音声指示も可能です。
Flutter 開発を採用した理由としては、クロスプラットフォームであることや、開発チームが Firebase クラウドプラットフォームに精通していたため、使いやすいと判断したそうです。Flutter を採用してリリースした結果、170 か国へリリースすることができたうえ、月間アクティブユーザー数が 4 倍になりました。また、アプリの保守も容易になったため、節約した時間を 3D シミュレーター環境を含む新機能の展開に集中することができました。
出典:iRobot
5. Flutter 開発かフルネイティブかで迷ったら?
内製する場合も外注する場合も、Flutter を検討しているということは、「初期費用を抑えてスピーディに自社アプリを構築→運用してみたい」という状況ではないかと思います。
アプリ業界全体の流れとして、かつての「ネイティブアプリ=時間と費用がかかる」という課題を解決すべく、Flutter/React Native を採用する企業や、ノーコード/ローコードで初期費用を抑えて 1~3 ヵ月でネイティブアプリを作れるサービスが増えています。
ノーコード/ローコード開発であれば iOS/Android 両 OS での自社アプリ開発が初期費用 1,000 万円以下で収まるケースが多いため、「まずコストを抑えて自社アプリを試したい」「比較的シンプルなアプリになる想定なので、保守運用のリソースも削減したい」という状況では、Flutter での内製かパッケージ利用かの実質二択といえます。
制作会社の視点では、「内製する覚悟があるなら内製で、外注ならローコード」がおすすめ
各業界・ジャンルでトップシェアを占めるアプリは、基本的に内製です。かつては制作会社と組んでいたものの、数億円かけて内製に切り替えてアプリをリプレイスしたという事例もあります。
ですので、本気で自社アプリを業界・カテゴリのトップに成長させたいのであれば、内製してアジャイル開発に近い形でスピーディに開発・改修を重ねていくのがベストです。
エンジニアの採用・定着は難易度が高く、iOS/Android および Flutter のアプリエンジニアは特に母数が少ないので厳しくなります。またアプリは App Store/Google Play にレビューが残るので、立ち上げ時点で不具合が多かったり UI/UX の型を外していたりするとリカバリーに時間とコストがかかるというリスクもあります。
ただ、自社の意欲的なエンジニアに Flutter(あるいは React Native)を学習してもらってミニマムで立ち上げ、自社にアプリの開発と運用の知見を貯めることは将来的にプラスになります。
関連記事
もし、リスクを抑えるために社外ベンダーに依頼して自社アプリを安価・スピーディに構築したい場合は、運用開始後から柔軟にカスタムできるローコードプラットフォームをおすすめします。
Flutter 開発を検討される企業であれば、いざ自社アプリを運用し始めるとやりたいことが無数に出てくるはずです。カスタマイズ性の低いノーコードプラットフォーム、個社ごとのカスタム開発に乗り気でない運営企業の場合は検証することすらできなくなるため、「拡張性」「スケーラビリティ」を意識してベンダーやサービスを選定してください。
当社「Pasta」は、「フルスクラッチは高すぎるし、ノーコードや SaaS 企業では運用開始後に個社ごとに作りこんでいけない」という課題を解決するために提供しているローコードプラットフォームです。母体が制作会社なので半受託的に作りこめますし、複雑な機能やシステム連携等がない一般的なアプリであれば、初期費用は大幅に抑えられます。
仕様や連携するシステム等によって初期費用・月額費用は大きく変動しますし、あまり明言はできないため、もしアプリを企画・検討中の場合はお見積もりだけでもお気軽にご相談ください!
- 「自社アプリを考えているが、初期投資を抑えてまずは試してみたい」
- 「LINE からの PUSH 配信で顧客と継続的に接点は作れているが、費用対効果が見合わなくなってきた」
- 「安すぎるシステムだと動作速度や拡張性などが不安」
といったお悩みを抱えている企業様に向けて、ノーコードでアプリを開発するサービス「PASTA」を展開しています。