
FlutterはGoogleが2017年にバージョン1.0以前のアルファ版を公開し、2018年12月に正式版へ到達したクロスプラットフォームUIツールキットです。プログラミング言語Dartで書いたコードから、iOS・Android・Web・Windows・macOS・Linux向けのアプリを単一のコードベースで生成できます。他のフレームワークがOS標準のUI部品を呼び出すのに対し、Flutterは自前の描画エンジン(旧Skia、近年はImpeller)でピクセル単位までUIを描き切る点が最大の特徴で、デザイン一貫性とアニメーション表現で支持を集めています。
この記事の目次
- 自前描画と宣言的UI
- Sky から Flutter への系譜
- 現場での使われ方
- React Native・ネイティブとの違い
- まとめ
自前描画と宣言的UI

Flutterの中核はWidgetと呼ばれる構成要素で、画面上のあらゆる要素(ボタン、テキスト、レイアウト、アニメーションまで)がすべてWidgetとして表現されます。Reactと似た宣言的アプローチを取り、状態が変わると関連するWidgetツリーが再構築され、差分だけがレンダラへ送られて画面に反映されます。状態管理はProvider、Riverpod、Blocなど複数の選択肢があり、プロジェクト規模に応じて選ぶ文化が育っています。
技術的に独特なのは描画スタックです。長らくChromeにも採用されてきた2DグラフィクスライブラリSkiaを介して、OSのUI部品を一切使わず全ピクセルをFlutter自身が描いていました。2023年以降は、よりMetal/Vulkanネイティブで起動時のシェーダージャンクを抑える独自エンジンImpellerへ段階的に置き換えが進み、iOSではすでに既定エンジンになっています。これにより、同じデザインがどのOSでも寸分違わず再現される一方、各OSの「らしさ」は自前で作り込む必要があります。
Sky から Flutter への系譜

プロジェクトの源流は2015年のDart Developer Summitで披露された「Sky」という実験的フレームワークで、Dartコードから60fpsでAndroid画面を描く可能性を示したのが始まりでした。翌2016年に名称をFlutterに改め、2017年5月のGoogle I/Oでアルファ版を一般公開、2018年12月に1.0.0としてリリースされました。当初はiOSとAndroidが対象でしたが、その後Web対応(2021年)、デスクトップ対応(Windows安定版は2022年)と広がっています。
採用事例も増え、Google Pay、BMWのコネクテッドカーアプリ、Alibaba系のXianyu、Toyotaの車載インフォテインメント、国内ではタイミーやマネーフォワード MEなど、業種を問わずプロダクションで稼働するアプリが揃ってきました。Stack Overflow Developer Surveyではモバイル系フレームワークの利用率で常に上位に入り、Reactネイティブ陣営と並ぶ二大勢力の片方として定着しています。
現場での使われ方

現場での典型的な選定理由は「iOS版とAndroid版を一度に出したい」「デザイン会社が用意したFigmaカンプを忠実に再現したい」の二点に集約されます。OS標準UIに引きずられず、ブランドカラーや独自のモーション設計をそのまま実装できる点が、デザイン重視のECや金融系で評価されています。また、CIに乗せやすいツールチェーン(flutter buildコマンド一発でipa/apk/Webバンドルが揃う)も小規模チームと相性が良いところです。
一方で苦手な領域も明確で、地図SDKやSDK連携が分厚いネイティブ機能(CarPlay、Wear OS、Apple Watch)はプラットフォームチャネル経由でネイティブコードを書く必要があり、純粋なFlutterだけでは閉じません。また、アプリのバイナリサイズが空のプロジェクトでも数MBから始まる点、Apple Silicon世代でビルドを安定させる初期セットアップなど、「Webから入った開発者」が戸惑いがちな課題もあります。
React Native・ネイティブとの違い

比較されやすいReact Nativeは、OS標準のUIコンポーネントをJSから呼び出す方式のため、iOSらしさ・Androidらしさが自動的に出ます。対するFlutterは「らしさは自分で作る」前提のため、両OS差を出したい場合には設計コストが増えます。ただし、見た目が一切ブレないことや、複雑なアニメーションが書きやすいこと、ビルド成果物にDartランタイムが同梱されることでJSブリッジ起因のパフォーマンス問題が起きにくい点はFlutter優位とされます。
ネイティブ(Swift/Kotlin)と比べると、当然ながら最新OSのAPIへの追随速度では一歩遅れがあります。iOS 18のControl Center連携やAndroidのForeground Service種別など、OS固有のAPIをすぐ叩きたい場合はネイティブモジュールを書く必要が出てきます。チームのスキルセットや、対象アプリの「OS固有度合い」を測った上で、全画面再現性で勝負したいならFlutter、OSネイティブ感を重視するならReact Native/Swift/Kotlin、と棲み分けが進んでいます。
まとめ
FlutterはDartと自前描画エンジンという独自路線で、デザインの一貫性と表現力を武器に世界中で採用が広がっています。OS標準UIに合わせるか、ブランド世界観を優先するかという設計思想の選択が、React Nativeやネイティブとの分かれ道です。プロダクトの「らしさ」を誰が定義するかを決めると、選ぶフレームワークも自然に見えてきます。
※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

コメント