【Flutter】Flutter2.0で何が変わるのか？

## Flutter2.0のリリース発表
2021年3月3日水曜日に[Flutter2.0が発表](https://developers.googleblog.com/2021/03/announcing-flutter-2.html)されました。
![](https://1.bp.blogspot.com/-lBhWOnN3axc/YD1r-U3ejoI/AAAAAAAAJ3s/e6zalR-ZVwskxYPipLJBaZMYhuIF8YIygCLcBGAsYHQ/s0/image%2B2.png)

## 5つのOSへの対応、WEBブラウザへの正式対応
**待望のFlutterのメジャーアップグレード**
今回のアップグレードにより、**Web**、**モバイル**、**デスクトップ**アパリケーションを正式にサポートいたしました。

Flutter2.0では、基本の部分において、同じソースコードを使用して、**ネイティブアプリ(iOS、Android)、Windows、macOS、Linuxの5つのOS**にリリースできます。
※また、Chrome、Firefox、Safari、Edgeなどのブラウザを対象としたWebも含まれます。

Flutterは、車、テレビ、スマートホーム関連のモジュールに組み込むこともできます。

Playストアだけでもすでに150,000を超えるFlutterアプリがあり、Alibaba、Tencent、Baidu、WeChat、Grab、Yandex Go、Nubank、Sonos、Fastic、Betterment、realtor.com などの人気アプリを含む世界中の顧客がFlutterを使用しています。

## Flutterの効率化
Googleの1,000人を超えるエンジニアがDartとFlutterを使用してアプリを構築しています。
Stadia、Google One、Google Nest Hubなど、これらの製品のFlutterで構築されています。
Google Payは、数か月前に主力のモバイルアプリとしてFlutterに切り替えましたが、すでに生産性と品質が大幅に向上しています。チームはソースコードを統合することで、プラットフォーム間の機能の違いを取り除き、**50万行を超えるコードを排除**しました。

Google Payは、はるかに効率的であり、技術的負債が大幅に削減され、iOSとAndroidの両方でセキュリティレビューや実験などの統合リリースプロセスが行われると報告しています。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">GooglePayがFlutter採用してこの辺りの実例は覚えておくと役立ちそう。<br>・170万行→110万行に<br>・技術的負債が90%減<br>・エンジニアの生産性が20%向上</p>&mdash; coka @Flutterライフ (@coka__01) <a href="https://twitter.com/coka__01/status/1368076317711724546?ref_src=twsrc%5Etfw">March 6, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

### Flutter WEB
今回の初期リリースは、特に3つのアプリケーションにフォーカスしています。

- PWA
- SPA
- 既存のFlutterモバイルアプリのWebへの拡張


### TOYOTAのFlutter採用
世界で最も売れている自動車メーカーであるトヨタは、Flutterを搭載したシステムを構築することにより、市場で最高のデジタル体験を車両にもたらす計画を発表しました。
![TOYOTA_flutter](https://1.bp.blogspot.com/-FTKgXnOlr7Y/YD1xOL35MxI/AAAAAAAAJ4c/4Vbjh0oojPEpFOotBcq_Wr-5F6XS3dQSACLcBGAsYHQ/s0/image%2B8.png)

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">🚙 The future of <a href="https://twitter.com/Toyota?ref_src=twsrc%5Etfw">@Toyota</a>&#39;s infotainment systems will be powered by Flutter.<a href="https://twitter.com/ToyotaConnected?ref_src=twsrc%5Etfw">@ToyotaConnected</a> is building Flutter right into the heart of their vehicles. Catch <a href="https://twitter.com/danielthall?ref_src=twsrc%5Etfw">@danielthall</a> at <a href="https://twitter.com/hashtag/FlutterEngage?src=hash&amp;ref_src=twsrc%5Etfw">#FlutterEngage</a> as he talks more about their plans with us!<br><br>On now 👉 <a href="https://t.co/T9025C5NCV">https://t.co/T9025C5NCV</a> <a href="https://t.co/pSn299QF9P">pic.twitter.com/pSn299QF9P</a></p>&mdash; Flutter (@FlutterDev) <a href="https://twitter.com/FlutterDev/status/1367174378387988480?ref_src=twsrc%5Etfw">March 3, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

## 個人的に便利になりそうなこと
### コマンドラインからのIPAファイルの生成
`flutter build ipa`のコマンドにより、Xcodeを開かずに、IPAファイルを生成することが可能になりました。
https://github.com/flutter/flutter/pull/67781

### テキストの自動補完ライブラリの追加
AutocompleteCoreというライブラリの追加により、テキストボックス等への入力時に候補を表示したりする機能が提供されました。
![AutocompleteCore](https://miro.medium.com/max/510/0*3GGvtXibNB3-X8jA)

### Flutter Fix
Flutterのメンテナンス速度は驚くほど速く、かなりの更新が発生します。
そのため、非推奨となってしまうコードも多いです。

ですがそのような問題に対しても、以下のコマンドで自動的に非推奨の箇所を明示してくれるようです。

```
$ dart fix --dry-run
```

また、自動で修正をさせたい場合は以下のコマンドで実行できます。

```
$ dart fix --apply
```

### DevTools 「Enable Invert Oversized Images」
表示されているよりも高い解像度の画像を簡単に確認できる機能です。これにより、アプリの過剰なサイズとメモリ使用量を追跡できます。この機能を有効にすると、フラッターインスペクターで特大画像が反転して表示されます。
![Enable Invert Oversized Images](https://miro.medium.com/max/1400/0*gqIT_20hrbHlG8d_)

### DartのNullSafetyサポート
Flutter2と同時にDartの2.12が発表され、待望のNull Safetyがリリースされました。



## 参考記事
- [Flutter 2.0 release notes(Flutter公式)](https://flutter.dev/docs/development/tools/sdk/release-notes/release-notes-2.0.0)
- [What’s New in Flutter 2](https://medium.com/flutter/whats-new-in-flutter-2-0-fe8e95ecc65)
- [Announcing Flutter 2(Google公式)](https://developers.googleblog.com/2021/03/announcing-flutter-2.html)
- [Flutter2.0で新しくなったこと](https://itome.team/blog/2021/03/flutter-v2/)