Open3

Flutter2.0とNull-Safety対応について

hirothingshirothings

Flutter2.0

2021.03.03のFlutter EngageというイベントでFlutter2.0が発表された
https://events.flutter.dev/

2.0で変わったこと

  • モバイルクロスプラットフォームからクロスプラットフォームへ
    • Web、 Windows、 MacOS、LinuxがStable化
  • Null-Safety対応 (Flutter同梱のDart2.12より)
  • Google Mobile Ads to Beta

参考記事

トヨタが車載のUIエンジンにFlutterを導入予定, Microsoftとの協業などベンチャー以外の企業への導入も
https://twitter.com/FlutterDev/status/1367174378387988480?s=20

hirothingshirothings

プロダクト(ネイティブアプリ)のFlutter移行について

向いていないアプリ
  • OS固有のfeatureを全面的に使っているアプリ
    • ReplayKitを使ったLiveアプリ
    • Visionフレームワークを使った画像認識アプリ..etc
Flutter移行

それ以外のアプリは大体Flutterでリプレイスできると思う

  • 一部上記のようなOS固有のfeatureを使う場合はMethod Channelという仕組みでネイティブのコード実行が可能
  • カメラロールからの画像選択などiOS, Android両方でサポートしている機能は大体Flutterでブリッジしているライブラリがあるので、それを使うのもアリ
    • 内部的にはMethod Channelを使っているだけ
  • Androidはパフォーマンス安定しているので、AndroidだけFlutter化するのもアリ
    • (Androidだけ対応したらiOSもやりたくなるよ..絶対)
懸念点
  • 個人的にはiOSのパフォーマンスの低さが最大の課題
    • アプリ起動直後、fpsが60出ない問題がある
      • 今後も注力して改善するとロードマップで明言してくれてるので、時間の問題ではある
      • Androidは安定している
  • iOS側のサポートが遅い
    • コアメンバーがAndroid出身の人が多いのかGoogleが提供してるからかMaterial Designの新コンポーネントなどのサポートは速い
    • iOS側はiOS14のDatePickerがまだWidgetとして対応されてなかったりサポートが遅い
Flutter良い点
  • DXが最高
    • ライブプレビューではない。実コードがcmd+Sで実装中のアプリ(Debugモード)に反映される
  • ドキュメントが充実
  • 1コードでマルチプラットフォームにリリースできる
    • コード量は2/3くらいになると思う
      • OS固有の対応もあったりするので、1/2に綺麗にはいかない
    • 担当者が違ってコミュニケーションコストがかかることがない
  • 最近null-safetyになった(Dart2.12~)
  • ネイティブのコード書けるひとだったらスムーズに開発できる。Dartはそんなに癖のない言語