💡

MVVMからSSOTへの移行を考える

2023/04/27に公開

1. 概要

SSOTなるアーキテクチャ?みたいなもんがあるらしい。
これがMVVMを使って感じていた問題点を解消してくれるっぽいから、
Flutterでの利用を真剣に考えてみる!!

2. MVVMとは

MVVM(Model-View-ViewModel)は、ソフトウェアアーキテクチャーの一形式であり、アプリケーションの設計に広く使用されています。MVVMは、ユーザーインターフェースのビュー(View)、ビューの状態を保持するビューモデル(ViewModel)、およびアプリケーションのビジネスロジックを含むモデル(Model)の3つのコンポーネントから構成されています。

MVVMは、ビューとビューモデルの間にバインディングを設定することにより、データの双方向バインディングを実現し、ユーザーインターフェースを実現します。これにより、ビューとビューモデルは疎結合になり、維持管理しやすくなります。

3. SSOTとは

SSOT(Single Source of Truth)アーキテクチャーは、ビジネスロジックのデータフローを単一のソースに統合する設計パターンです。アプリケーション内のあらゆるコンポーネントが同じソースからデータを取得することにより、アプリケーション全体の信頼性を向上させます。

SSOTの主な特徴は、データの正当性を保証することであり、アプリケーションの設計と実装を簡素化することができます。また、SSOTアーキテクチャーは、アプリケーションのテスト性を向上させることができます。

4. MVVMからSSOTに移行するメリット

  1. 状態の管理が楽

MVVMでは、ViewModelが状態を管理しますが、状態が複雑になるとViewModelが肥大化し、保守性が低下することがあります。一方、SSOTアーキテクチャでは、すべての状態を一元管理するため、ViewModelの責任範囲を狭め、保守性を向上させることができます。

  1. 可読性が上がる

SSOTアーキテクチャーでは、すべてのビジネスロジックのデータを単一のソースに集約する必要があります。
同一のデータ取得に関するコードを何回も書く必要がなくなるので、
単純に可読性が上がって見やすくなりそうですね!

  1. テストが容易になる

MVVMからSSOTに移行することで、アプリケーションの信頼性を向上させることができます。
データ操作を単一のクラスで行うため、テストが容易になります!
Mockも作成できますね!!

5. まとめ

SSOTへの移行したほうがいいのか考えて見ましたが、いろんなメリットがあることがわかりました!!
とはいえ実際に実装しないとSSOTの抱える問題点が見えてこなかったので、次回はSSOTのサンプルを作ってみようかと思います!!!

Discussion