どこかのだれかへ

ボク、プログラマ。

MVVMのViewModelの必要性を感じた

WPFではMVVM(Model/View/ViewModel)パターンを利用しますが、簡単なツールの場合はViewModelの存在意義があんまり無く、恩恵を受けにくく、その存在意義を忘れがちです。

ViewModelがある理由はView(WPFでいえばxaml関係)に関する都合を吸収するためですが、今まで作ってきた小さなツールの場合はそれを必要とすることがあまりなく存在意義は分かっていた物の結構適当に作っていました。

例えば今までだと、ModelにObservableCollectionのプロパティがあるとしたら、ViewModelではそのインスタンスを受け取って同じインスタンスをViewに渡していました。

しかし現在ツールを作っている中で、このコレクションヘのデータの追加を別スレッドでやりたいと思いました。しかしインスタンスをそのままViewに渡しています。ViewはUIスレッドじゃないと更新できません(例外が発生する)つまり、View側の都合でModelに制限が掛かっている状況なのです。せっかくのMVVMなのに、VMが機能してないせいでなんの意味もない状況だと気付きました。

たしかに、ViewModelは結果的に小さいツールでは要らない子になるかもしれまんが、こういうこともあるので、今後はちゃんとViewModel作ろうと思いました。