バージョン2.10をリリースしたUIフレームワークのFlutterは、安定版のWindowsサポートを加えることで、サポート対象のプラットフォーム数を拡張した。さらに新リリースでは、パフォーマンスが向上し、Material 3への移行が始まっている。
Windowsサポートが導入されたことで、iOS、Android、Web、そしてWindowsで動作するクロスプラットフォームアプリの開発が、Flutterで可能になった。さらにmacOSとLinux用のFlutterも現在、ベータ版で提供されている。
Flutter for Windowsは、FlutterのレンダリングシステムであるSkiaグラフィックエンジンやウィジェットなど、他のプラットフォーム用と同じコア機能セットを提供する。また、Windows用のFlutterアプリでは、C言語レベルの相互運用性を提供するDartFFIレイヤを使うことにより、任意のWin32、COM、およびWindows Runtime APに加えて、一部のC++プラットフォームプラグインの使用も可能になっている。
Windowsとの連携は、しかしながら、それだけに留まらない。camera
やfile_picker
、shared_preference
といったFlutterプラグインの多くが、Windows上でネイティブに動作するように拡張されているのだ。さらに何百というDartパッケージが、webview
やbattery
、serial_port
などのWindows APIに、CレベルのFFIを使用せずに直接アクセスできるようになっている。
最も重要なのは、flutter_uiやflutter_acrylicといったパッケージによって、Windows版FlutterがMicrosoft Fluentデザインをサポートしていることだ。これにより、ネイティブな外観を持ったWindowsアプリの開発が可能になる。
アーキテクチャの観点から、Flutter for Windowsには3つの主要なレイヤがある。ジェスチャのサポートやアニメーション、描画、ウィジェットなどを提供する、高レベルのDartフレームワーク。C++で記述され、DartランタイムとSkiaグラフィックエンジンを含む中間層のFlutterエンジン。そして、Windowsメッセージの転送とディスパッチを担当する低レベルのC++レイヤである。
Windowsの安定版サポートはFlutter 2.10の最も重要な新機能だが、取り上げるべきものは他にもある。新リリースには特に、実行時やビルド時のパフォーマンス向上が数多く含まれている。iOSではダーティ領域の部分再描画(partial repaint)がサポートされたことで、一部のベンチマークではGPU使用率が90パーセントから10パーセントに低減された。同じく、イメージの不透明度の処理も大幅に高速化されている。タイプフロー分析の実装も刷新されており、ビルド時間が約10パーセント削減された。
前述のように、Flutterの新リリースではMaterial 3への移行も開始されている。この変更は、自動生成されるカラーパレットを高度に活用することでUIのカスタマイズを可能にし、よりパーソナルなUIを提供することを目的とするものだ。
さらにFlutter 2.10には、ここでは要約できないほど多くの内容が含まれているので、オリジナルの発表内容を確認して、その全容を把握することをお勧めする。