現在位置 : ホーム > イベント情報 > イベント関連資料 > WPFアプリケーションに最適なアーキテクチャ「M-V-VM」とは
公開日 : 2009年1月29日

イベント関連資料

デブサミ2009開催前特集
グレープシティセッションに参加する方にも、しない方にも役立つコラム

WPFアプリケーションに最適なアーキテクチャ「M-V-VM」とは

WPFアプリケーションというと、まず思い浮かぶのは華やかな視覚効果を駆使した派手なUIという方が多いのではないでしょうか?

もちろん、それもWPFの大きな特徴ではあります。しかし洗練されたWPFのUIフレームワークには、UIとロジックの分離を強力にサポートしてくれるという側面もあるのです。

「M-V-VM」という言葉を耳にしたことはあるでしょうか?これはWPFでUIとロジックを分離するパターンとして人気が高まりつつあるソフトウェアアーキテクチャの通称です。ここでは、この「M-V-VM」について簡単にご紹介します。
1. イベントドリブンでの開発は簡単だけど

Visual Basicの登場により、フォームにコントロールを配置し、必要なイベントハンドラを記述するというRADスタイルのプログラミングが普及し、手軽にアプリケーション開発を行うことが可能となりました。しかし、その一方でプロフェッショナルな開発においてはこの手軽さが多くの問題を引き起こす原因となっていたのもまた事実です。

手軽さからついついやってしまいがちなのが、イベントハンドラに直接実行処理を書いてしまうということ。業務ロジックがUI処理に深く依存してしまっているコードを保守していくのがどれだけ大変であるかは、皆さんもご承知ですよね。

開発工程の3分の2は保守作業であると言われているのですから、UIとロジックを分離することがいかに重要かは明白です。

2. MVCがひとつの解

ご存じの方も多いと思いますが、おもにWebアプリケーションの世界で知られているソフトウェアアーキテクチャの1つに「MVC」があります。MVCはModel(データ+ビジネスロジック)とView(表示・出力)、Controller(ユーザー入力を受け取り、適切なかたちでModelに引き渡す)に分離してアプリケーションを構築するという考え方です。MVCパターンを適用すると、M、V、Cの各層に責務が明確に割り当てられるため、相互の依存関係が最小限となります。そのため保守性が確保されるのはもちろんのこと再利用性が向上し、分業もたやすくなります。また、ロジックがUIと分離しているのですから単体テストが行いやすいという利点があります。

以上の理由からMVCは多くのWebアプリケーション開発で採用されていますが、このようなソフトウェアアーキテクチャの適用は、それをサポートするフレームワークの力が大きく、すべてのアプリケーションでMVCパターンが有効なわけではありません。例えば、Windowsフォームの場合、フレームワークの性質上フォームやそこに配置されるコントロールがViewとControllerを兼ねてしまうため、MVCモデルの適用が難しいのです。

3. WPF開発ではMVCは適用できるのか?

では、WPF開発ではMVCは適用できるのでしょうか?

いいえ、残念ながらWPFでMVCを適用することは難しいのです。しかし、それに代わるパターンが 「M-V-VM」です。

M-V-VMパターンでは、Model、View、ViewModelの3つに分離してアプリケーションを構築します。ModelはMVCのそれと変わりがありませんが、ViewはMVCとは異なりユーザーの入出力を担当します。そしてそれら2つの間に存在するのがViewModelです。ViewModelはViewとModelの橋渡しをしてくれるのに加え、Viewのデータや状態を管理するという役割を持ちます。

M-V-VMの概念図
M-V-VMの概念図

4. セッション資料ダウンロード 公開日 : 2009/2/26