はじめに
本記事ではGoogle IO 2021で公開された、Flutterの最新情報について、まとめた記事になります。本記事から若干変更されている可能性があることを、ご了承ください。
所々に筆者の感想も記載していますので、ぜひ見てください!
ちなみにGoogle I/O 2021の1つ目のプログラムのKeynoteについては下記記事でまとめていますので、こちらも見てみてください。
Flutterについて
Flutter2の紹介
Flutterは現在Flutter2が安定版としてリリースされており、従来はモバイルプラットフォーム向けとして、iOS,Androidアプリが開発できるものでしたが、Flutter2からはWebがサポートされるようになり、ブラウザ用のアプリも開発できるようになっています。
また、ベータ版としてDesktop向けも開発できるようになっており、Windows,MacOS,Linuxも既存のFlutterソースコードで開発・テストができるようになっていました。
FlutterはDartという言語で書かれ、Null Safetyの仕様のためバグを減らすことが可能になります。また、アプリサイズの縮小化、実行速度の向上を図る事が可能なものとなっています。
Flutterの発展
Flutterコミュニティは急速なスピードで発展を遂げており、現在Google Play上に20万を超えるアプリがリリースされているそうです。
例えばスーパーアプリとして歯医者、支払い、食品配達、金融サービスを提供している、GrabというアプリでFlutterが導入され、GrabMarchant,GrabDriverのアプリエンジニアによると、開発時間が3分の1にまで短縮されているようです。
続いて、BMWが開発している、MyBMWアプリとMINIアプリもFlutterで作られており、総勢300名のFlutterエンジニアがFlutter/Dartで開発をしており、世界最大級の開発チームとなっているとのことです。
さらに最近ではWeChatもFlutterでの構築を進めているとのことで、WeChatのエンジニアによるとフレームレートの向上、メモリ使用量の向上を達成し、開発時間も25%ほど短縮できているため、新規機能開発のスピードがあげられているとコメントしています。
Flutter2.2
Flutterは数ヶ月前にFlutter2を発表してから、改善をし続け、今回新しい安定版となるFlutter2.2をリリースすることを発表しました。Flutter2.2では品質と生産性の向上に重きをおいており、多くの新機能があるわけではありませんが、アプリを構築する時に強固な基盤(プラットフォーム)を提供するそうです。
具体的には、パフォーマンスの改善、テストインフラの強化、型エイリアス機能の拡張、Null Safetyの拡張、デベロッパーツールの拡張です。
インフラの改善
まずインフラ環境の改善ですが、半年で6000以上の問題を改善し、ビルドを安全に保てるようにプロセスを徹底的に見直したようです。またテスト対象のデバイスアーキテクチャを2倍にし、5つのオペレーティングシステム、4つのブラウザベンダーを対象にしたとのことです。また、Googleのエンジニアリングチームでは30以上のチームで、Flutterコードを修正するときには数百万行ものコードをテストしています。
これらの成果として、Google Payの最新バージョンでは起動時のメモリ使用量を削減したほか、全体的なパフォーマンスの向上、データベース初期化にかかる時間、レンダリング速度の向上に繋がったとのことです。Google Payチームが他チームと協力することによって、iOSを対象とする全てのGoogleアプリでは起動時の表示速度が3倍にもなっていると紹介されています。
Dartの改善
続いてDart言語の改善について、Flutter2.2に付随してDart2.1.3では型エイリアスを共通化し、関数と関数以外の両方を含むようにすることで、短くわかり易い名前を長く複雑な方にもつけることが出来るようになったとのこと。
また、Null Safetyについては、Google Playの上位1000のアプリのうち80%がNull Safetyを導入しており、今回のFlutter2.2からはNull Safetyをデフォルト設定にしました。
Flutterの改善
Flutter自体はプラットフォームのサポートを継続的に改善していますが、Flutter Webでは再読み込み時のPWAのキャッシュ動作を最適化し、ドラッグなどのマウスイベントも改善してきたとのことです。事例としてSunnyPlaceというゲームでは従来のモバイルから、Web版が開発され、CanvasKit RendererとBonfireゲームエンジンを利用することでFlutterで開発をしたそうです。Flutterでゲームが作れるとは驚きですね。
またFlutterFlowという新しいプラットフォームを開発が進められています。FlutterFlowとはブラウザだけでアプリを構築できるツールで、所謂ローコードツールと言われる類のものになります。これを利用することで、より早くより少ないコードでアプリが作れるそうです。FlutterFlow自体は、Flutter webで開発がされており、Goolge I/Oの中では事例としてメトロポリタン美術館内のアプリが紹介されていました。機能としては作品の検索機能、作品の情報の確認、お気に入りなど一般的なアプリと遜色ないものでしたが、FlutterFlowを使うことで1時間で開発が出来たとのことです!!衝撃!!
また、Flutter2.2からはDesktop版アプリの開発も従来のベータ版から安定版に変更され、Windows,MacOS,Linuxのソフトウェアを作ることが可能になります。更に今後の新しいプラットフォームとしては、AppleのM1、マイクロソフトXboxのようなゲーム機での開発ができるように進めているようです。
DesktopもFlutter2.2から安定版として設定変更で利用することができ、Windows,macOS,Linux.。今後新しいプラットフォームとしてApple M1とマイクロソフトゲームもできるようになる。
デベロッパーツールの改善
最後にデベロッパーツールとしては、[Memory[タブに2種類の機能が開発され、メモリリークが発生した際のコードを確認できるツールや、メモリタイムラインにカスタムメッセージを挿入することで、アプリでマーカー機能を使うことが出来るようになっているようです。
また、MaterialDesignチームと協力して、ガイドラインに拡充やアダプティブデザインの構築などにもサポートが入っています。アプリのマネタイズとしては広告を利用する際のプラグインとして、「Google Mobile Ads SDK for Flutter」がベータ版として利用できます。アップデート情報としては、「GMA SDK for Flutter」ではNull Safety、iOS GMA SDKの最新バージョンのサポート、アダプティブバナーが利用可能になっています。
※アダプティブバナーは次世代のレスポンシブな広告のことで、各デバイスの広告サイズを最適化することで、広告のパフォーマンスを最大化することが可能です。
決済機能についても更新があり、Flutter用の新しい支払プラグインがリリースされ、1つのコードでAndroidではGoogle Pay、iOSではApple Payを利用することが出来るようにるものがリリースされました。今後決済プロバイダーやプラットフォームを拡充していくとのことです。
また、Apple StoreやGoogle Playでアプリ内で購入できるゲームアイテムや、仮想コインなどに対しては、以前はベータ版としてin-app-purchaseが使えましたが、今回本番用としてリリースすることが発表されました。具体的にはCodeLabなどで確認できるとのことです。
まとめ
今回はGoogle I/Oで発表されたFlutter最新情報についてまとめてみました。Flutterは既に凄い勢いで使われ始めており、従来のクロスプラットフォームと違い、あらゆるデバイスでUI構築をすることを想定されていますので、今後のエンジニア業界もFlutterが出来る人材が求められるかもしれませんので、ぜひこれを機会に学んでみてはいかがでしょうか。