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

MVVMの世界は隣にあった

Written By: 川俣 晶連絡先

「MVVMは自分のすぐ隣にあった。それに気づいていなかっただけなんだな」

「どういうことだい?」

「雑談を3つ語ろう」

テンプレートの話 §

「MVVMすると、実はソースがめんどくさくなる。MとVとVMの3つが必要だからだ」

「うん。それは分かる」

「基本的なフレームとなるクラスを用意するだけでめんどくさい。初期化タイミングとかね」

「終わってからまた戻ったりするんだよね」

「Windows Phoneの場合、普通にWindows Phoneアプリのテンプレートで始めるとかなりめんどくさい」

「うん」

「ところが、パノラマとかピボットのプロジェクトで始めると最初からVMのコードのテンプレートも込みで作ってくれる」

「それってどういうこと?」

「テストアプリは凝らないから、別にパノラマ選ばなくていいやと思うと見えない世界がある」

「むしろ、パノラマとかピボットの方がMVVM楽ちんってことだね」

ANGFの話 §

「ANGFもよく考えると、割とMVVMに近い構造を持っていることに気づいた。MとVとVMに割と綺麗に役割が分かれるんだ」

「どういうこと?」

「ステート集約型プログラミングからMVVMはあと一歩の位置にあったということだ」

「具体的に頼むよ」

「ステート集約型プログラミングは、変化する状態を集約するが実はそれがMに対応して、残りがVMに対応する」

「Vは?」

「表示コードは基本的にMとVMの状態を反映させることに特化しているわけだな。V自身は基本的に何も情報を持っていない」

「なるほど」

リフレクションの話 §

「MVVMすると、すぐ出てくるのがバインディング」

「それで?」

「そうすると、XAMLにこんな属性とかぽろぽろ出てくる」

  • IsEnabled="{Binding IsDataLoaded}"

「IsDataLoadedって、VMのクラスのプロパティだよね」

「そうだ」

「属性から名前で指定しているの?」

「そうだ」

「どんな仕掛けなんだよ」

「内部的にはおそらくリフレクションなんだろう」

「それなら名前でアクセスできるね」

「ちなみに、C#プログラマとしてのおいらの得意技は何か知ってるかい?」

「LINQかな」

「それもある。しかし、もう1つあるぞ」

「なんだろう」

「それがリフレクションさ。新刊のC#ダイナミックプログラミングを読めば分かる」

「ああ、分かったぞ。名前でアクセスするコードはもともと慣れ親しんでいたんだ。だから、バインディングの世界にもすんなり入れたんだ」

「まあそうだな。ずっとバインディングとは何となくRDB絡みの概念のような気がしてまたいで通っていたが、ふと気づくとそういう話ではない」

「そうか」

「だからさ。C#のコードとしては誰もアクセスしないで、リフレクション経由でのみ外の世界からアクセスされるプロパティなんて、もともと当たり前だったのよ」

「なんか凄い話だな」

「凄くはない。ある意味で当たり前。Visual Studioで参照の一覧を列挙させて誰も使っていないと思って削除したらソフトが動かなくなるなんて、けっこうありがちな話」

まとめ §

「結局、君にとってMVVMって何だ?」

「ドアを開けて待っていてくれたリムジン」

「なんだそりゃ」

「あるいは、何となく書くのにためらいがあったコードを書き始めることができる魔法の鍵」

Facebook

キーワード【 川俣晶の縁側ソフトウェア技術雑記
【技術雑記】の次のコンテンツ
2011年
09月
27日
CancellationTokenをParallel.ForEachで使ってみる
3days 0 count
total 4750 count
【技術雑記】の前のコンテンツ
2011年
09月
25日
INIファイル再来
3days 0 count
total 3323 count

このサイト内の関連コンテンツ リスト

2011年
09月
10日
川俣晶の縁側技術関連執筆情報
[完全版] C#実践ダイナミックプログラミング
3days 0 count
total 3308 count
2011年
10月
02日
続・MVVMの世界は隣にあった
3days 0 count
total 3627 count
2013年
08月
27日
川俣晶の縁側過去形 本の虫感想編
メタプログラミング.NET, Kevin Hazzard, Jason Bock, アスキー・メディアワークス
3days 0 count
total 1866 count
2014年
12月
08日
川俣晶の縁側技術関連執筆情報
[完全版] C#実践ダイナミックプログラミングは誰のため?
3days 0 count
total 1584 count

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

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

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

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

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

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

管理者: 川俣 晶連絡先

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