Chapter 02

Chapter1: Getting Started

heyhey1028
heyhey1028
2023.02.17に更新

Flutter とは?

flutter とは Google 社が 開発しているオープンソースのアプリケーション開発用フレームワークです。Dart というプログラミング言語を中心に構成されたフレームワークで iOS、Android, Web、Linux, Windows など様々なプラットフォームのアプリケーションを1つのコードベースで作成する事が出来るクロスプラットフォーム(厳密にはマルチプラットフォーム)のフレームワークです。

クロスプラットフォーム・フレームワーク

従来は iOS 用のアプリは Obejective-C や Swift、Android 用アプリは Kotlin、Web は Javascript、などサービスが提供されるプラットフォームに応じて言語を使い分ける必要がありました。その為、同じアプリを iOS、Android でリリースしたい場合、それぞれを別のエンジニアが違うコードとして開発していました。しかしそれでは人的コストも時間もかかり、同じ機能を追加するのにもそれぞれのエンジニアが足並みを揃えなければならないなど多くの課題を抱えていました。
その為、Flutter を始めとするクロスプラットフォームフレームワークは1つのコードベースで iOS、Android などの複数のプラットフォームのアプリを生成する事でこれらの課題を解決する為に様々な企業が開発してきました。

Flutter の他にも下記の様なクロスプラットフォーム・フレームワークが存在します。

  • React Native: Facebook が開発した JavaScript のフレームワーク React でアプリを開発することができるフレームワーク。2015 年リリース。
  • Xamarin (ザマリン): Microsoft が開発。C#でアプリを開発することができるフレームワーク。2011 年リリース。
  • Ionic (アイオニック): Javascript のフレームワーク Angular を使用してアプリを開発することができるフレームワーク。2013 年リリース。
  • Unity: 様々なプラットフォームでのゲーム開発に特化したフレームワーク。C#や Javascript を使う。2005 年リリース。

これらのフレームワークに対し、Flutter は 2017 年リリースと最も後発にも関わらずリリースからグングンと人気を高め、現在ではクロスプラットフォームの筆頭と言っても過言ではない存在となっています。

Flutter の特徴とそのメリット

ウィジェットを用いた宣言的な UI

Flutter は、アプリの UI を構築するために独自のウィジェットシステムを採用しています。これにより、高いパフォーマンスを実現しながら、カスタマイズ性の高い UI を構築することができます。

シングルコードベース

Flutter は、1 つのコードベースで、iOS や Android などのモバイルアプリ、ウェブアプリ、デスクトップアプリを開発することができます。

Hot Reload

Flutter は、アプリ開発中にすぐに変更を反映することができる Hot Reload 機能を持っています。これにより、開発スピードを高めることができます。

豊富なパッケージ

Flutter は、様々な用途に対応するための多数のパッケージを提供しています。例えば、Firebase や Google Maps などの外部サービスとの連携、アニメーションなどの表現力の高い UI の構築などができます。

モバイルアプリ以外にも使用できる

Flutter は、他のモバイルアプリ向けクロスプラットフォームだけでなく、ウェブアプリやデスクトップアプリなどにも使用することができます。

どの様な企業が採用しているのか?

指標

Flutter の勢いを表す数値として、Google は以下のような数値を公表しています。

- Flutter を使ったアプリ数:50 万以上
- Flutter/Dart 用のパッケージ数:2 万 5000 以上
- Flutter エンジニアの数:200 万人以上

※ 2022 年 11 月時点

グローバル企業での採用例

世界では以下の様な企業が Flutter を採用しアプリをリリースしています。

開発元である Google だけでなく、TikTok を開発している Byte Dance など勢いを増す巨大テック企業でも Flutter を採用したアプリがリリースされています。

国内企業での採用例

国内に目を向けても DeNA や Cyber Agent など日本の IT 業界を代表するメガベンチャー企業での採用が近年加速しています。ここに名前が挙がっていなくても社内で研修を組んで今まさに Flutter アプリを開発中の有名企業も数多く存在します。

モバイルアプリ以外での採用事例

またクロスプラットフォームとしての強みを表す様な事例が自動車メーカーである Toyota や BMW での Flutter の採用です。Toyota では Flutter で Linux アプリケーションの開発が可能な点に目を付け、車載ディスプレイのアプリケーションに Flutter を採用しました。

https://www.youtube.com/watch?v=HO0FHF2qELA

この様にテック業界を代表する Google が開発しているだけでなく、世界や日本の IT 業界を牽引するメガベンチャーが採用している事からも Flutter の可能性と将来性を感じて頂けると思います。

参考元:https://youtu.be/gBfHYHvojvk?t=1701

Flutter のデメリット

1 ソースで様々なプラットフォームのアプリケーションを作れてしまう Flutter、良い事づくめそうですが、勿論デメリットも存在します。

1. 描画パフォーマンスがネイティブに比べて(多少)劣る

Flutter では swift を使った iOS や Kotlin を使った Android などのネイティブアプリに比べ、操作時のヌルヌル感が劣る事があります。これは Flutter がネイティブアプリとは違う描画システム(skia)を採用している為です。

よく iOS アプリを操作する際に感じられるヌルヌルとした手触り感は Flutter ではまだまだ再現し切れていません。

しかしよほど凝ったデザインのアプリでない限り、ネイティブ同様の操作感は必要なく、大きな障害と言えるかはアプリによります。またこの分野については日々改善が行われており、近々描画システムの刷新も計画されている為、よりネイティブに近づく事が予想されます。

2. ネイティブアプリの機能を直接使う事が出来ない

昨今のスマートフォンは様々な新機能を搭載してリリースされますが、それらの機能はまず swift や kotlin などネイティブのコードから操作される事を前提としている為、Flutter から直接呼び出すことは出来ません。

その為の迂回策として Flutter にはMethodChannelというネイティブのコードを実行する手段が存在しますが、あくまでもネイティブコードを実行するだけなので、自身で呼び出すネイティブコードを実装する必要があります。

しかしこちらも活発な Flutter エンジニアのコミュニティにより積極的にパッケージが開発されており、大きな壁にぶつかる事は多くありません。新機能などもリリースからしばらくすると熱心な Flutter エンジニアによりパッケージが開発されている事が多いです。

とはいえ

以上のようにいくつかデメリットはあるものの、これらが大きな問題になるのは高いデザイン性と特殊な機能を必要とするアプリの場合で、大半のアプリーケションではボトルネックとなる事は多くありません。

まとめ

以上 Flutter の概要とその採用事例などを見ていきました。公平を期すためにデメリットも挙げましたが、それでも Flutter が持つ魅力は大きく、世界の巨大テック企業が採用している事からも、Flutter は今後ますます注目される技術と言えるでしょう。

さてそれでは次章から Flutter を使う準備を進めていきましょう。