【Windowsストアアプリ】MVVM

引き続きWindowsストアアプリをお勉強中です。

WPFの時に中途半端にかじっていたMVVMについても再度確認してみました。
概ね理解に大きな齟齬はなかったのですが、Model層に関しては単なる業務ロジックと捉えており、ViewModel側で画面の状態に加えてデータも管理していましたが、正しくはデータ保持はModel層の役目でViewModelはあくまでViewに対して仲介するだけ、となるようです。

軽く整理すると以下のような感じ?

【View】
画面レイアウト。
イベントはCommandやBehavior、Messengerで処理するため、コードビハインドには原則何も書かない。

【ViewModel】
画面の状態や振る舞いを管理。
Viewに対してModelのデータを公開する。
Model内のデータの直接操作は禁止。

【Model】
データと業務ロジック。
ViewやViewModelを意識するような実装は禁止。

MVVMの目的はUIと業務ロジックおよびデータを切り離すこと。

確かに一つの理想ではあるのかもしれませんが、現場で厳密に適用しようとすると、残念ながら以下の問題点が。

・要員のスキルの問題でそもそも適用が難しい(教育しようにも学習コストが高い)
・Prismなどのフレームワークを利用したとしても、コーディング量が増えがち
・ストアアプリはWPF業務アプリケーションに比べると小規模なので、モデルを厳密に適用するメリットが薄い

上記の問題点を踏まえると、結局は開発メンバが直接触る事のない共通部品の実装やBindingなど一部の要素を取り入れるのみに留め、基本的にはこれまでの.NETアプリライクに開発するのが無難・・・なんでしょうか。。
VBから続くコードビハインドにコールバックを記述していく方法も生産性で言えば、さすがに今まで使われ続けてきた事だけはあると思います。
理想はあくまで理想に留めておかないと単なる自己満足で終わってしまう事になりかねませんし。。

低スキルな環境でMVVMが厳密に適用できるようになるには開発環境側にまだまだ進化してもらう必要がありますね。。