2011年09月25日
川俣晶の縁側ソフトウェア技術雑記total 4570 count

MVVMとBindingとWPFとWindows Phone

Written By: 川俣 晶連絡先

「MVVMは何となく避けて通っていた」

「なぜ」

「昔、MVCってのがあったんだよ」

「今でもあるよ」

「そこは突っ込むな。ともかくMVCは上手く機能しなかった」

「だから、名前が似ているMVVMを避けて通ったわけだね」

「まあ、そうだな」

「でも、違ったの?」

「そうだ。違った、Windows Phoneのコードを書いていて、ふと書いてきたソースを振り返った瞬間に驚いた」

「なぜ?」

「しっかりMVVMになっていたからだ」

「じゃあ、君がこうなるべきだと思って勝手に書いたコードがMVVMだったということ?」

「この場合はそういうことになる」

「それはなぜ?」

「WPFというか、Windows Phoneのアーキテクチャがそれを求めているので必然的にそうなった、という解釈もできるが、どうもそうでもない感じだ」

「というと?」

「昔々、MFCにはModelとViewがあったけどさ。基本的にViewはModelを知ってるけど、ModelはViewを知らない構造なんだ」

「そうか」

「でもさ。実際は両者が協調して動作しないととても性能が出せない」

「PCの性能が足りないってことだね」

「そうじゃない。PCの性能が上がっても焼け石に水だ」

「じゃあ、何?」

「MVVMのVとVMは双方向でインタラクトできるんだ」

「えっ?」

「WPFのバインディングで双方向のインタラクトが指定できるから、VM上でのデータ変更をVに反映することも、Vのレイヤーで起きたユーザー入力を自動的にVM上のデータに反映させることもできる」

「でもさ。2つを分けないで1つで書けばいいじゃん。面倒な連動なんて考えないでさ」

「そうじゃない。分けるメリットがあるんだ」

「えっ?」

「だからさ。VMレベルは抽象的な情報を提供するだけだが、Vレベルでは見せる実態を決める。だから、見かけをいじる場合は多くの場合Vだけでいい。必要な情報が提供されていない場合はVMもいじる必要があるけどね」

「それはいいことなの?」

「そうだ。外見の調整はよくある要求だが、それによって重要なロジックを壊してしまう可能性を減らせる」

「そうか」

「まあ、他にもいろいろあるけどな。まあ、自分のやっていたことが結果としてMVVMだと気づいた以上、これからはもっと意識的にMVVMしていくか」

「つまり、上から読んでもMVVM、下から読んでもMVVMってことだね」

Facebook

キーワード【 川俣晶の縁側ソフトウェア技術雑記
【技術雑記】の次のコンテンツ
2011年
09月
25日
INIファイル再来
3days 0 count
total 3854 count
【技術雑記】の前のコンテンツ
2011年
09月
25日
今日のC#コード20110925
3days 0 count
total 4033 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

https://mag.autumn.org/tb.aspx/20110925191155
サイトの表紙【技術雑記】の表紙【技術雑記】のコンテンツ全リスト 【技術雑記】の入手全リスト 【技術雑記】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.