Flutter for Windowsが正式版に、「Flutter 2.10」リリース。単一コードでiOS/Android/Web/Windowsアプリが可能に
GoogleはDart言語のフレームワークであるFlutterの最新バージョン「Flutter 2.10」のリリースを発表しました。
Announcing Flutter for Windows
— Flutter (@FlutterDev) February 3, 2022
Our latest release includes stable support for Windows as an app target. Now, you can build high-quality Windows apps that also run on mobile and web.
Read the blog https://t.co/2vsUtt7XAf
FlutterはもともとiOSとAndroidのネイティブアプリケーションを単一のソースコードで開発するためのUIフレームワークとして2018年に登場しました。
2019年には単一ソースコードでWebアプリケーションもサポートする「Flutter for Web」を発表。
2021年にリリースされたFlutter 2.0で「Flutter for Web」が正式版となり、さらにWindows 、Mac、Linuxのデスクトップアプリケーションまでサポートすることが発表されました。
Flutterは単一のソースコードでiOSから組み込みアプリケーションまで生成できるマルチプラットフォーム対応のフレームワークとなる方針が明確化されたのです。

そして今回リリースされたFlutter 2.10で「Flutter for Windows」が正式版となり、本番環境に対応するWindowsアプリケーションの生成が可能になりました。
今後Flutterの開発が進む中でMacやLinux対応にも正式版が登場することでしょう。
Flutter for Windowsが正式版に
Flutter for Windowsのアーキテクチャは下記の図のようになっていいます。

最下層にはWindowsネイティブな組み込みレイヤ(Windows Embedder)がOSとのインターフェイスの役割を果たします。
その上の中間層に、Dartランタイムエンジン、GPUアクセラレーションエンジンのSkia、テキストレンダリングなどのレイヤがあります。
その上でDartで実装されたフレームワークとしてのFlutterが走り、ユーザーインターフェイスを構築するウィジェットやルック&フィールが設定されます。
Flutter for Windowsではここで2つの選択肢があります。1つはマルチプラットフォーム全体で一貫したルック&フィールを設定できる「Material Design」、もう1つはWindowsのルック&フィールに合う「Fluent Design」です。
どちらもFlutter for Windowsとしてパッケージを取り込んで設定できるようになっています。ちなみにFluet Designのパッケージにはマイクロソフトからアイコンの提供などの協力があったとのこと。

Flutter for Windowsは、以下のコマンドでアプリケーションを簡単にインストーラブルなmsix形式で出力でき、そのままMicrosoft Storeで扱えるようにもなっています。

性能改善やバグフィクスも
Flutter 2.10では、Flutter for Windowsが正式版になった以外にも、多数の性能改善やバグフィクスなどが行われています。
iOS/Metal利用時にグラフィックの描画時に再描画が必要なところだけを描画することで、時間がかかっていたケースでのGPU利用率と描画時間を大幅に改善。
透明性のあるレイヤの描画についてもより効率的になっています。
Androidではデフォルトで最新のAndroid 12に対応。
Web対応では、テキスト選択時に下記のようなエッジスクローリングを実装しています。

あわせて読みたい
単一ソースコードでメニーコアやGPUやFPGAに対応したクロスアーキテクチャー対応のソフトウェア開発を可能に。インテルの「oneAPI ツールキット 2022」[PR]
≪前の記事
2021年第4四半期、クラウドインフラ市場はAWSがシェア33%でトップ、マイクロソフトが21%で猛追、Google、アリババが続く。Synergy Researchとcanalysの調査結果