Flutter

Flutter（フラッター）は、Googleによって開発されたフリーかつオープンソースのUIのSDKである。単一のコードベースから、Android、iOS、Linux、macOS、Windows、Google Fuchsia向けのクロスプラットフォームアプリケーションを開発するために利用される。
2018年12月4日、ロンドンで開催されたFlutter Live '18にて、初の正式版となるFlutter 1.0のリリースが発表された。
2021年3月3日、Googleはオンライン開催されたFlutter Engageイベント中にFlutter 2をリリースした。このメジャーアップデートでは、新しいCanvasKitレンダラーとウェブ向けのウィジェットを使用したウェブベースのアプリケーションの公式サポート、Windows、macOS、Linux向けのアーリーアクセスのデスクトップアプリケーションのサポート、Add-to-App APIの改善などが行われた。
歴史.
Flutterの最初のバージョンは「Sky」と呼ばれており、Android上で動作した。2015年のDart開発者サミットでは、毎秒120フレームで安定してレンダリングができることを示した。
2018年12月4日に発表されたFlutter 1.0では、iOSスタイルのウィジェットキットであるCupertino Themeの大幅な強化(「Pixel-Perfect iOS App」)、Googleが提供するmBaaSサービスであるFirebaseのサポート、Dart 2.1のサポート、バイナリサイズの最適化など、リリースプレビュー時に実装された機能の不具合修正などが行われた。
2019年2月リリース予定の次期プレビュー版へ向け、既存アプリケーションの一部でFlutterを動作させる「Add to App」、Flutter上でAndroidやiOSのGUIコントロールを動作させる「Platform Views」、WindowsやmacOS、Linuxなどのデスクトッププラットフォーム向け実装「Flutter Desktop Embedding」、JavaScriptへのコンパイルによるWebプラットフォーム向け実装「Hummingbird」などの開発を進めるとしている。
2021年3月3日、GoogleはFlutter 2をオンラインのFlutter Engageイベントで発表した。このメジャーアップデートにより、新しいCanvasKitレンダラー、ウェブ固有のウィジェットを使用したウェブベースのアプリケーションの開発、Windows、macOS、Linuxに対応したデスクトップアプリケーション開発の早期アクセス、改善されたAdd-to-App APIがサポートされるようになった。このリリースでは健全なが実装された。これにより多数の破壊的変更と多数の外部パッケージでの問題が発生したが、Flutterチームは変更に対処する手順も説明している。
2021年9月8日、Dart SDKのバージョン2.14とFlutterのバージョン2.5がリリースされた。アップデートには、Androidのフルスクリーンモードと、Material Youと呼ばれるGoogleの最新バージョンのマテリアルデザインが含まれている。Dartには2つの新しいアップデートがあった。1つは最新のlint条件が標準化され、デフォルト条件としてプリセット化されたこと、もう1つはDartのApple Silicon対応がstableになったことである。
フレームワークアーキテクチャ.
Flutterの主なコンポーネントは以下の通りである。
Dartプラットフォーム.
FlutterアプリはDart言語で書かれており、言語のより高度な機能を多数活用している。
Flutterエンジン.
Flutterのエンジンは主にC++で書かれており、GoogleのSkiaを使用した低レベルのレンダリングをサポートしている。AndroidやiOS固有のSDKとも連携ができるようになっている。
基本ライブラリ.
基本ライブラリはDartで書かれており、エンジンと通信を行うためのAPIなど、Flutterを利用してアプリケーションを構築するために必要な基本的なクラスと関数を提供している。
ウィジェット.
FlutterのUI設計は、様々なウィジェットによって構成されている。FlutterのウィジェットはUIの不変な部分を表し、テキスト・図形・アニメーションなどを含む全てのグラフィックはウィジェットを使用して描画を行う。多くの単純なウィジェットを組み合わせることで、複雑なウィジェットを作成することができる。
特定のデザイン体系向けのウィジェット.
Flutterフレームワークには、特定デザイン言語に準拠する2つのウィジェットが含まれている。マテリアルデザインウィジェットは、同名のGoogleのデザイン言語を実装している。クパチーノウィジェットは、AppleのiOSのデザインを模倣している。