#0 Flutter の設計を決める

Flutter Architecture Blueprints の実装解説

9月に突然リニューアルすることになったわさびーふです。

はじめに

今後のざっくり予定記事
#1 MVVM で実現するための構成要素(ライブラリ)の説明と使い方とか
#2 ネットワーク通信を実装する上で使ったもの
#3 ローカルにデータを保存する上で使ったもの
#4 海外対応、ローカライズで使ったもの
#5 Dark テーマ、Light テーマなど
#6 API 周りのテスト
#7 UI のテスト
#8 CI とか
#番外 Flutter で使われているの Skia とは一体なんなのか、何が優れているのか

#0 Flutter の設計を決める

AndroidX 時代の今 Kotlin で Android アプリを作ろうとした場合には MVVM が推奨アーキテクチャとされています。それを簡単に実現するためのライブラリ郡が Android には Android Architecture Components として提供されているほどです。

そして、今回の Flutter Architecture Blueprints を MVVM にした理由は Android エンジニアが Flutter アプリ開発を理解しやすいようにすることです。

なので、プロダクトを Flutter で開発する場合には Flutter に慣れておらず Android エンジニアが開発メンバーとして大半を占めている場合は MVVM にするかもしれませんし、そうでない場合は他のアーキテクチャを選択することもあると思います。

もちろん言語やフレームワークと相性の合うアーキテクチャがある一方で、アーキテクチャ論争はよく言われるエンジニアの宗教論争と似たような側面もあるので、その時代と周りの人たちと話し合った結果であればどのアーキテクチャを選んでもいいと思っています。

Google が Android を MVVM ではなくRedux とかを推奨アーキテクチャにしていたら、また結果は変わっていたかもしれません。

MVVM

Flutter Architecture Blueprints の README.md から MVVM の図

Flutter Architecture Blueprints は上記の図のように実装しています。
Android アプリを古くは MVC 、数年前に Flux 、最近では MVVM や Mobx-ish などで実装したことがありますが、個人的には MVVM は初学者からベテランまで幅広く扱いやすいアーキテクチャだと思っています。データの流れは単一方向のほうが好みと思っていない限りは本当に素晴らしいアーキテクチャです。

MVVM の本質は UI をビジネスロジックなどから分離することと、UI の状態をモデルで制御し、UI とデータを直接紐付けないことです。

詳細は次回の記事で書きますのでここでは触りだけですが、シングルトン・DI・ServiceLocator 相当の機能として Riverpod を使っています。ViewModel は Observable としての機能を持たせるために ChangeNotifier にしています、StateNotifier などを使わなかった理由などはまた次回に記事に。

The Elm Architecture (Model-View-Update)

あとがき

--

--

Google Developers Expert for Android. #shibuya_apk

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store