iOSにおけるMVVMの役回り
iOSにおいてMVVMは人気のあるアーキテクチャパターンです。
しかし一方MVVMの欠点から他のアーキテクチャパターンにも目が向けられています。
この記事ではMVVMの利点や欠点からMVVMの役回りについて最近の私の考えを述べてみたいと思います。
MVVMの最も重要な利点とはなんでしょうか。さまざまなネットの記事でいくつかの利点が上げられていますが、私が最も重要だと考えている利点は「Viewの抽象化」です。Viewの色を薄く設定することを考えてみます。なぜ薄くしているのでしょうか。例えば薄くするのはそのViewがdisableであったりします。そのViewに対するViewModelでの状態は「色が薄い」ではなく「利用できない」という状態を保持することになります。MVVMではViewを実装する前にViewModelを設計・実装してViewを抽象化することでViewの有り様を洗練させていくことができます。
ところでMVVMはモデルレイヤーの設計や画面遷移の管理の方法を定義していません。この点が欠点として挙げられることがあります。しかし一方で、それらが定義されていないため、MVCで開発しているプロジェクトにも比較的容易にMVVMを導入することができます。また、他のアーキテクチャパターンと同時に利用することができ、VIPER+MVVMやRedux+MVVMといったことも行われているようです。
MVVMのシンプルさ故に他のアーキテクチャパターンにMVVMの利点であるViewの抽象化を導入することができるようです。
これらのことから私は最近ではMVVMを再評価し、MVVMでViewの抽象化を行い、MVVMのみだけでなく、他のアーキテクチャパターンとのミックスによる活用も可能ではないかと考えています。
