何も知らない人への”MVVMって何”?

WinForms開発経験が存分にある人だとそこそこ理解してもらえるんだろうけど、そうじゃないと辛いかなぁということで。

流石にオブジェクト指向の基本的な知識はあってほしい。

GUIについて。

GUIは、一般的にコンストラクタで各種部品をインスタンス化していくことで作ります。
部品に対する操作(ボタンをクリックしたり、チェックボックスのチェックを付けたり)などは、イベントとしてコールされます。このイベントに反応して処理することによって、いろいろな処理を行います。

01

こんな模式図。

古典的なUIとドメインロジックの分離。

さすがにこれでは何がなんだか分からないので、せめてUIを構成するソースコードとUIからの反応に対するソースコードを分けようと、先の偉い人は考えた訳です。

02

分けたんですが、同じクラス内でソースコードを分離したりなどのゆるーい区切りしかありませんでした。

MVCパターン。

あんまり変わってないじゃんか!と怒った先の偉いひとは、もっと明確に分離しようと考えました。MVC(Model-View-Controller)パターンの誕生です。

03

Modelでデータの保持、ViewでUIへの反映、Controllerでその調停、そんな感じで役割を受け持つことですっきりしました。

じゃあ、MVVMパターンは?

04

見てわかるとおり、MVCパターンとあんまり変わりません。

MVVMパターンは”WPF”というアプリケーション開発のベースとなる機構に沿って作られた、MVCパターンの変化球のようなものです。どう違うのでしょう。

05

これは一例ですが、ちょっとだけ変化したのが分かると思います。

青い矢印が入りました。これは、WPFが受け持ってくれる部分です。この部分はある作法に則って作ると、WPFが自動で制御してくれます。また、操作が直接ViewModelに行くようになりました。これもいろいろな仕掛けのおかげです。

と、小難しいことを書いていますが、要するに「より見通し良くソフトを作りたい!」という欲求の結果で生まれたものです。より綺麗に、やりたいことだけを見据えることができるようになります。

よりMVVMについて専門的な知識をお求めの場合は、

[MVVMパターンとは? – わんくま同盟東京勉強会 #60 セッション資料] – http://ugaya40.net/mvvm/what_is_mvvm.html

など参考になると思います。

こんな感じ?

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です