Google のクロスプラットフォーム開発ツールキットの 2020 年最初のアップデートでは、Flutter がバージョン 1.17 に、関連する Dart 言語が 2.8 にアップグレードされました。
クロスプラットフォームのライブラリやフレームワークは無数に存在しますが、Flutterにはいくつかの特徴があります。まず、GUIアプリケーションに特化しており、主にAndroidとiOSに対応していますが、Webアプリケーションのサポートも開発中であり、デスクトップアプリケーションは早期プレビュー段階です。FlutterのコードはネイティブmacOSアプリケーション(このプロジェクトはアルファ版)にコンパイルできます。また、「早期テクニカルプレビュー」段階のWindowsとLinuxにもコンパイルできます。
次に、FlutterはGoogleにとって戦略的なプロジェクトであり、Androidだけでなく、近々登場する新OS「Fuchsia」にも登場します。GoogleがFuchsiaにどのような役割を期待しているかはまだ明らかではありませんが、FuchsiaがAndroidの後継OSとなる場合に備えて、Flutterをリスクヘッジの便利な手段と考えることができます。Googleが開発者をAndroidやiOS、あるいはWebではなくFlutterにターゲットを絞るよう説得できれば、Fuchsiaのような新しいプラットフォームへの移行は容易になるでしょう。
Flutterのプログラミング言語はDartです。これはC言語スタイルの言語で、ガベージコレクション機能により開発を容易にし、ネイティブコードまたはJavaScriptへのコンパイルが可能です。Flutterと同様に、DartもGoogleのプロジェクトであり、現在両者はある程度絡み合っており、これが本日の同時発表の理由となっています。
Dart 2.8は大規模なアップデートではありません。チームはnullセーフティと呼ばれる重要な機能に取り組んでおり、これはnull参照の「10億ドルのミス」に対処することを目的としていますが、作業はまだ完了していません。Dart 2.8には、「nullセーフティ機能の最初のバージョンの基礎となる、一連の小さな互換性のない変更」が含まれています。これらはエッジケースとライブラリの変更であり、ほとんどのコードは引き続き同じように動作するはずです。さらに、Dart 2.8では依存関係管理が改善され、古い依存関係を見つけるための新しいツール(pub outdated)と、pub getを使用したパッケージの並列フェッチによりパフォーマンスが向上しています。
Flutter 1.17はさらに興味深い。チームは、いくつかの顕著なパフォーマンス向上を主張している。
- デフォルトの場合のナビゲーションの速度が20~37%向上
- iOS のアニメーションの CPU/GPU 使用率が最大 40% 削減されます
- アプリケーションサイズは通常18.5%程度削減されます
- 大きな画像をスクロールする際のメモリ使用量を70%削減
- AppleのMetalグラフィックAPIをデフォルトで使用し、iOSでのレンダリング時間を約50%改善
次に、GoogleはMaterialウィジェット(Googleのデザインテーマ)をアップデートしました。レスポンシブアプリケーション向けの新しいNavigationRailと、アップデートされたDatePickerが追加されました。また、Materialモーションを実装した新しいアニメーションパッケージ(厳密にはFlutter 1.17の一部ではありません)も追加されました。
テキストテーマもアップデートされ、Google Fontsのサポートと併せて、マテリアルデザインガイドラインに準拠しながら、幅広いフォントとテキストスタイルを簡単に利用できるようになります。フォントは動的に取得することも、アプリケーションパッケージに埋め込むこともできるため、Google Fontsサービスが利用できなくなった場合でも安心です。アクセシビリティ機能も改善され、国際化に関する修正も行われています。
新しい Dart DevTools のネットワーク トラフィック インスペクター
Dart DevTools は改訂中であり、最新のプレリリースを選択すると、発生する可能性のある複雑な状態をデバッグしたり、バックエンド サービスから送受信されたデータが予想と異なる理由を説明したりするのに役立つネットワーク トラフィック検査ツールなどの新機能を使用できます。
Flutter 1.17 にはいくつかの重大な変更があり、新しいプロジェクトには AndroidX ライブラリが必要になりましたが、AndroidX を使用していない既存のアプリケーションは引き続きコンパイルできます (必要に応じてハッキーな回避策が必要です)。
Flutter は開発者に好評のようで、StackOverflow の開発者調査では 75.4 パーセントが「最も愛されている」スコアを獲得しています。一方、Redmonk は Flutter のおかげで Dart への関心が高まったと述べています。
「DartベースのFlutterが1.0になって以来、この言語は最新のランキングで24位まで急上昇しました」と、アナリストのスティーブン・オグレイディ氏は述べています。これはDartが有力な候補になることを意味するものではありませんが、Googleがこのプラットフォームの構築に一定の成功を収めていることを示しています。
ティム・スニース氏やクリス・セルズ氏といった元マイクロソフト社員が、FlutterとDartの開発に携わるGoogleのプロダクトマネージャーに就任したのは、決して偶然ではありません。Googleは、GUIフレームワークに関してマイクロソフトの度重なる方針転換に不満を抱いている開発者に、代替案を提供することを何よりも望んでいるのです。
Flutterはまだ完全に成熟したとは言えませんが、Googleが今後もこの取り組みを継続していく限り、将来性は期待できます。「Flutterは、業界が何十年も抱えてきた課題、つまり単一のソースコードベースから複数のプラットフォームにまたがる優れたアプリをいかに構築するかという課題を解決する可能性を秘めています。私たちは、この問いへの答えを見つけるための確かな道を歩んでいると考えています」と、セルズ氏はプレビュー版のプレスリリースで述べています。
ただし、オープンソースではあるものの、Google製品であるため、このプラットフォームはGoogleサービスの利用を促す可能性があります。この点と、Androidとウェブアプリケーションの両方におけるユーザーエクスペリエンスを向上させたいという思いが、GoogleがDart/Flutterプラットフォームに投資する原動力となっていると考えられます。®