Flutter for Windowsが正式版に、「Flutter 2.10」リリース。単一コードでiOS/Android/Web/Windowsアプリが可能に
今回は「Flutter for Windowsが正式版に、「Flutter 2.10」リリース。単一コードでiOS/Android/Web/Windowsアプリが可能に」についてご紹介します。
関連ワード (描画、搭載、最下層等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
GoogleはDart言語のフレームワークであるFlutterの最新バージョン「Flutter 2.10」のリリースを発表しました。
Announcing Flutter for Windows
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 (@FlutterDev) February 3, 2022
FlutterはもともとiOSとAndroidのネイティブアプリケーションを単一のソースコードで開発するためのUIフレームワークとして2018年に登場しました。
2019年には単一ソースコードでWebアプリケーションもサポートする「Flutter for Web」を発表。
2021年にリリースされたFlutter 2.0で「Flutter for Web」が正式版となり、さらにWindows 、Mac、Linuxのデスクトップアプリケーションまでサポートすることが発表されました。
- Dart言語のフレームワーク「Flutter 2」公開。単一コードでiOS/Android/Web/Win/Mac/Linuxのネイティブアプリ実現。WebAssemblyによるレンダリングエンジン搭載
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対応では、テキスト選択時に下記のようなエッジスクローリングを実装しています。