- 1 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 11:03:33.21 .net]
- WPF/Silverlight/WinRT開発の必須技術、MVVMについて語ろうではないか!
- 152 名前:デフォルトの名無しさん mailto:sage [2012/06/13(水) 13:21:02.28 .net]
- MVPVMのサンプルも、VM−Mのコンビは汎用性持たせ、Pで差分吸収するサンプルに思えたが
- 153 名前:デフォルトの名無しさん mailto:sage [2012/06/13(水) 13:26:43.72 .net]
- 両方だろ
VがVM、VMとビジネスロジックがそれぞれ密結合しないことでVとVMの再利用性を高めるのがねらい
- 154 名前:デフォルトの名無しさん mailto:sage [2012/06/13(水) 13:30:43.53 .net]
- こういう意見もありますが
ttps://gist.github.com/2041069
- 155 名前:デフォルトの名無しさん mailto:sage [2012/06/13(水) 13:37:22.90 .net]
- 2chの煽りと変わらんだろw
ugayaはこういう説明の仕方を見習うべき www.global-webnet.net/blogengine/post/2010/02/05/MVPVM-Model-View-Presenter-View-Model-the-natural-evolution.aspx
- 156 名前:デフォルトの名無しさん mailto:sage [2012/06/13(水) 13:40:07.82 .net]
- VがVMに密結合してしまってるのが問題だといってたぞ。
U氏も遷移を切り離すならしっくりくると書いてある。 VMから遷移を切り離したら何が残るの? Viewにプロパティを提供する入力検証の一部をする位じゃないの?
- 157 名前:デフォルトの名無しさん mailto:sage [2012/06/13(水) 13:46:36.47 .net]
- >>155
VがVMに密結合するのはコードビハインドな それをPに切り出してPを差し替え可能にしてるから密結合しない
- 158 名前:デフォルトの名無しさん mailto:sage [2012/06/13(水) 13:47:19.86 .net]
- Viewで相互運用使うならMVPVM有りとの話もあるが、実際作業するとコードビハインドしか逃げようがないんだよなぁ〜
- 159 名前:デフォルトの名無しさん mailto:sage [2012/06/13(水) 13:49:10.29 .net]
- コードビハインドってPじゃねえの?
- 160 名前:デフォルトの名無しさん mailto:sage [2012/06/13(水) 15:20:15.29 .net]
- 質問。
VMの第一の目的って、Mの構造をVでバインディングしやすい形に変換した形で持つ事っていうのであってる? 例えば、DBの2次元表の構造を、複雑なViewにバインディングするためLINQで変換する、とか。 なので、Mの構造そのままを表示するようなVだと、VMは単純なラッパに見えてしまう。
- 161 名前:デフォルトの名無しさん mailto:sage [2012/06/13(水) 15:27:06.16 .net]
- Mの構造そのまま表示できる場合においてはVMは不要
- 162 名前:デフォルトの名無しさん mailto:sage [2012/06/13(水) 15:45:57.26 .net]
- 実際に作ってみりゃわかるけど
純粋にMのプロパティだけでインターフェースは作れない タブやエキスパンダの状態とか環境設定とかの話ね めんどくせぇから全部詰め込むってのもありだけど 無駄に一緒にするのは保守性を悪くする どうせそこらへんはほとんどラッパなんだから 書くのがめんどくさい部分は全部T4使えとT4
- 163 名前:デフォルトの名無しさん mailto:sage [2012/06/13(水) 15:51:40.10 .net]
- T4使いづらいって印象しかないんだが、なんか間違ってる?
- 164 名前:デフォルトの名無しさん mailto:sage [2012/06/13(水) 15:57:40.49 .net]
- 外部のコードジェネレータを逐一呼び出すよりはT4でやった方が楽だろ
複数ファイルの処理が面倒なのはわかるが
- 165 名前:デフォルトの名無しさん mailto:sage [2012/06/13(水) 16:36:31.97 .net]
- >>162
俺も同じ印象だ。 結局MsBuildタスクで、 d.hatena.ne.jp/okazuki/20110116/1295166605 の様な属性からコードを生成するようにしたよ。
- 166 名前:デフォルトの名無しさん mailto:sage [2012/06/13(水) 17:01:14.95 .net]
- どうもこうも
ViewModelBase<T>から派生してたら partialでTのプロパティを全部ラップしてやればいいのさ 簡単だろ? T4で自分のプロジェクトからリフレクションする方法がわかりませんっていうなら 調べろとしかいいようがないが
- 167 名前:デフォルトの名無しさん mailto:sage [2012/06/13(水) 17:10:39.16 .net]
- リフレクション使ったらVSのプロセス終了するまでアセンブリ掴みっぱなしじゃね
- 168 名前:デフォルトの名無しさん mailto:sage [2012/06/13(水) 17:23:42.40 .net]
- > T4で自分のプロジェクトからリフレクション
このあたりは、みんなどの方法を採用してる気か聞いてみたいね。 俺はWPFのコンパイルプロセスを見習って、 自分自身を一度ビルドしてからCecilでアセンブリにアクセスしてる。 他にも Cecilではなく普通のリフレクションAPIを使ったり、 ビルドせずにRoslynやNRefactoryを使ったりという方法もあるけど こっちを使ってる人もいるのかな?
- 169 名前:デフォルトの名無しさん mailto:sage [2012/06/13(水) 17:36:11.05 .net]
- >>166
アセンブリがアンロードできない・・・と来れば、あとはわかるな? そう、AppDomainの出番だ。
- 170 名前:デフォルトの名無しさん mailto:sage [2012/06/13(水) 17:39:54.72 .net]
- >>168
おい、やめろ AppDomain芸をよりにもよってT4でとか地獄過ぎる RoslynはまだCTPだしT4上で現実的なところで言えばCecilだろうな コード生成じゃなくてポストプロセスでのIL書き換えでよければPostSharpなんかも選択肢に入るが
- 171 名前:デフォルトの名無しさん mailto:sage [2012/06/13(水) 18:07:49.37 .net]
- うん、AppDomainは無い
まだ別プロセスを起動した方がマシ
- 172 名前:デフォルトの名無しさん mailto:sage [2012/06/13(水) 20:42:48.42 .net]
- PostSharpとか使ってやるのがお手軽?
自前でTaskを作ってビルドプロセスに追加する方が良い?
- 173 名前:デフォルトの名無しさん mailto:sage [2012/06/13(水) 21:09:57.27 .net]
- 一番手軽なのは某氏のDSL
- 174 名前:デフォルトの名無しさん mailto:sage [2012/06/13(水) 21:11:07.57 .net]
- Castle.DynamicProxyでいいわ
コード生成だるい
- 175 名前:デフォルトの名無しさん mailto:sage [2012/06/13(水) 23:33:29.53 .net]
- >>172
えむなうさんの?あれってC#専用だよね?
- 176 名前:デフォルトの名無しさん mailto:sage [2012/06/13(水) 23:47:53.09 .net]
- T4使ったら、少なくともテンプレートのコードが
コンパイルされた結果のアセンブリはロードされるはずだろ だからもともと別AppDomainで実行されるようになってるから 普通にロードして問題ないんじゃないの?
- 177 名前:デフォルトの名無しさん mailto:sage [2012/06/13(水) 23:50:14.79 .net]
- >>174
VB.NETやF#とか茨の道だし、C#で普通に使えれば問題ないだろ? []- [ここ壊れてます]
- 179 名前:デフォルトの名無しさん mailto:sage [2012/06/13(水) 23:51:37.83 .net]
- 必要ならVB作れってCodePlexかBlogでリクエストすればいい。
まさかJavaScriptやF#じゃないよな。
- 180 名前:デフォルトの名無しさん mailto:sage [2012/06/14(木) 00:07:25.99 .net]
- リフレクションでやるんならわかるけど、いちいちDSLでプロパティ定義するんだったら
public virtual int Hoge { get; set; } としといてCastleのDynamicProxyで変更通知を自動実装させればいいと思うよ
- 181 名前:デフォルトの名無しさん mailto:sage [2012/06/14(木) 00:14:39.91 .net]
- >>176
VB.NETは茨の道でもなんでもないんだが?
- 182 名前:デフォルトの名無しさん mailto:sage [2012/06/14(木) 00:16:41.28 .net]
- >>178
プロパティ追加・Hoge・int の3ステップでできる。 赤シャツの嫌いなAOPで実装することもあるまい。
- 183 名前:デフォルトの名無しさん mailto:sage [2012/06/14(木) 01:42:25.17 .net]
- VB続けたい奴がXAMLに手を付けるのが不思議だわ
- 184 名前:デフォルトの名無しさん mailto:sage [2012/06/14(木) 08:06:59.93 .net]
- >>181
それは偏見。いまのVBはC#と比べて大差ない程機能強化されとる
- 185 名前:デフォルトの名無しさん mailto:sage [2012/06/14(木) 09:14:33.85 .net]
- >>176
むしろすべてF#で作りたいんだが。 VMまではF#でやってる。
- 186 名前:デフォルトの名無しさん mailto:sage [2012/06/14(木) 13:20:58.33 .net]
- MS自身はVBにも力を入れてるけど、周りが付いてきていない。
サンプルがC#でのみ提供ってのもよく見るし、 MonoはVBコンパイラを非サポートにしつつあるし。
- 187 名前:デフォルトの名無しさん mailto:sage [2012/06/14(木) 13:24:58.84 .net]
- F#は面白そうだね。
計算式で上手くリアクティブプログラミングができたら 相当VMが作りやすくなりそうな予感がする。 けど、茨の道には違いないだろう。 IDEの支援は弱いし、ライブラリの中にはC#の文法で使うことが前提のようなものもあるし。
- 188 名前:デフォルトの名無しさん mailto:sage [2012/06/14(木) 20:01:18.03 .net]
- VBにいくら機能を追加しても言語仕様が腐ってるから駄目だよ
それにどうせ新機能が増えるたびに「冗長な予約語導入→C#より利便性が下がる」って悪循環でしょ
- 189 名前:デフォルトの名無しさん mailto:sage [2012/06/15(金) 01:35:08.89 .net]
- VBのラムダ式とか狂った文法だし、機能面だけはC#と対等にしてるけど、もはやボロボロでしょ
- 190 名前:デフォルトの名無しさん mailto:sage [2012/06/15(金) 10:44:01.68 .net]
- 言語がどうの以前に、MVVM的インフラとして
他人のコードが重要になるから少数派は厳しい
- 191 名前:デフォルトの名無しさん mailto:sage [2012/06/15(金) 11:55:14.41 .net]
- >>186
予約語増えるたびIDEが支援強化するからあまり不便に感じないのも事実 XAML開発の場合、IDEがどれだけその言語をサポートしているかが最重要 そういう意味でF#は終わってるとしかいいようがない
- 192 名前:デフォルトの名無しさん mailto:sage [2012/06/15(金) 13:19:16.42 .net]
- VBはVB2005のように、厨言語と呼ばれてもいいから
VBらしさを重視していた頃のほうが健全だった C#のクローンに成り下がったVBに存在意義はもう無い
- 193 名前:デフォルトの名無しさん mailto:sage [2012/06/15(金) 13:53:34.63 .net]
- >C#のクローンに成り下がったVBに存在意義はもう無い
そんなことばかり言うからC#厨は嫌われるんだよ おまえが存在意義感じなくても俺には必要なの!引っこんでろタコ!
- 194 名前:デフォルトの名無しさん mailto:sage [2012/06/15(金) 13:55:47.35 .net]
- VBはクラシックVBとの互換性を維持したいのかしたくないのかよくわからないはじまり方をしたのが最大の失敗だったな
せっかくのしがらみを捨てる最大のチャンスを逃してしまった
- 195 名前:デフォルトの名無しさん mailto:sage [2012/06/15(金) 13:56:55.90 .net]
- >>191
でもまぁ今から.Net始める場合はVB.NetじゃなくてC#選ぶんちゃう?
- 196 名前:デフォルトの名無しさん mailto:sage [2012/06/15(金) 13:59:50.60 .net]
- >>192
言語チームは切りたかったらしいが、マーケット部門から横やり入れられたらしい とはいえVB6との互換部分は無視すればいいだけの話。実際MVVMアプリ開発しててなんの支障も感じない
- 197 名前:デフォルトの名無しさん mailto:sage [2012/06/15(金) 14:00:50.13 .net]
- >>193
VB.NETに移行する案件、山ほどあるんだが []- [ここ壊れてます]
- 199 名前:デフォルトの名無しさん mailto:sage [2012/06/15(金) 14:37:26.30 .net]
- VB6開発者と共にMVVMプロジェクト移行とか素敵すぎるな
- 200 名前:デフォルトの名無しさん mailto:sage [2012/06/15(金) 14:51:15.90 .net]
- >>196
でしょw でも変にForms覚えてる奴より 「こ れ が .NET じ ゃ 定 番 だ か ら」 と言えば、素直に話を聞いてくれるのから嬉しい
- 201 名前:デフォルトの名無しさん mailto:sage [2012/06/15(金) 14:59:21.72 .net]
- Forms直に行ってデフォルトインスタンス触られるよりいいのか
- 202 名前:デフォルトの名無しさん mailto:sage [2012/06/15(金) 15:15:25.52 .net]
- >>194
開発に使う分には問題ないが、言語チームがかなり苦労してそうなのが構文とかからにじみ出てくるぜ・・・
- 203 名前:デフォルトの名無しさん mailto:sage [2012/06/16(土) 04:16:43.61 .net]
- VB(.NETじゃない方)も未だに元気だからなぁ
PHPがじわじわ下がってきてVBと逆転してしまった。 今はまだ一時的な物だけど今後数ヵ月かけて順位が入れ替わりそうだとか何とか。 www.tiobe.com/index.php/content/paperinfo/tpci/
- 204 名前:デフォルトの名無しさん mailto:sage [2012/06/16(土) 12:32:05.90 .net]
- 実はMVVMってしっくりこないんです!
わたしはこれまで、C/C++、Visual Basic、最近になって Java、C# などの言語を使ってきた。 「自分でViewModelを作ってMVVMっぽいことをしている」なんてことはまったくない。 特に「Visual Studioでポトペタ開発ができる」ということ知ってからは、従来のVB6のように開発している。 共有変数も、pubulic staticで宣言する。したがってプロパティなんて作らない。 自称上級者のコードを見ると、いちいちM・V・VMのクラス分けをしているので笑ってしまう。 データベースにアクセスするアプリケーションをを書いているのだが、Visual Studioが供給している 機能を使えばMVVMなど使わなくてもできてしまうのだから。
- 205 名前:デフォルトの名無しさん mailto:sage [2012/06/16(土) 12:40:31.71 .net]
- なにおじさん?
- 206 名前:デフォルトの名無しさん mailto:sage [2012/06/16(土) 13:20:33.52 .net]
- 何のコピペだっけそれ
- 207 名前:デフォルトの名無しさん mailto:sage [2012/06/16(土) 14:14:46.22 .net]
- 懐かしいなw
- 208 名前:デフォルトの名無しさん mailto:sage [2012/06/16(土) 17:03:22.48 .net]
- オブジェクト指向か
- 209 名前:デフォルトの名無しさん mailto:sage [2012/06/16(土) 17:52:59.93 .net]
- VMのコストが高いのは事実
- 210 名前:デフォルトの名無しさん mailto:sage [2012/06/16(土) 23:27:28.75 .net]
- Livet で Drag and Drop やりたいんだけど、どこかにサンプルないですか?
- 211 名前:デフォルトの名無しさん mailto:sage [2012/06/17(日) 11:27:52.39 .net]
- 時間の無駄だと思わないの?
お前がMVVM教の修験者か何かでないならコードビハインドを使え
- 212 名前:デフォルトの名無しさん mailto:sage [2012/06/17(日) 14:45:06.19 .net]
- Dropイベントを処理したいだけなら>>139-140
- 213 名前:デフォルトの名無しさん mailto:sage [2012/06/17(日) 16:08:05.74 .net]
- イベントだけ拾っても仕方ないでしょ
素直にコードビハインドを書くか、 Dropイベントを受け取って引数にデータ入れてバインドしたVMのコマンドを呼ぶ ビヘイビアを作りましょう
- 214 名前:デフォルトの名無しさん mailto:sage [2012/06/21(木) 18:57:52.75 .net]
- MVVMって誰が提唱しだしたの?
- 215 名前:デフォルトの名無しさん mailto:sage [2012/06/21(木) 19:34:30.00 .net]
- MSの中の人
- 216 名前:デフォルトの名無しさん mailto:sage [2012/06/21(木) 19:36:38.56 .net]
- ビヘイビアに書くと再利用性が上がるってだけで中身はコードビハインドと大して変わらんしな
まあD&Dはどっちにしても面倒だが
- 217 名前:デフォルトの名無しさん mailto:sage [2012/06/21(木) 22:54:05.30 .net]
- コードビハインド書くと、VからVMアクセスするでしょ?
それがかっこ悪いのよね〜
- 218 名前:デフォルトの名無しさん mailto:sage [2012/06/22(金) 23:26:34.40 .net]
- VからVMにアクセスするのはコマンドも一緒だと思うが…
- 219 名前:デフォルトの名無しさん mailto:sage [2012/06/23(土) 07:54:12.87 .net]
- つーかほぼすべてVからVMへのアクセスだろが。
- 220 名前:デフォルトの名無しさん mailto:sage [2012/06/23(土) 09:25:51.09 .net]
- VMはVを知らないがVはVMを知っている
- 221 名前:デフォルトの名無しさん mailto:sage [2012/06/23(土) 11:10:17.65 .net]
- こんにちは!VMさん。
あなたは、Vさんにフォローされてます。 Vさんをフォローしますか? する →しない
- 222 名前:デフォルトの名無しさん mailto:sage [2012/06/23(土) 11:29:14.41 .net]
- MVCのCとMVVMのVMって何が違うの?
データを扱うMと画面を扱うVがいて、それらを制御するCでしょ? VMもCもいっしょじゃん。
- 223 名前:デフォルトの名無しさん mailto:sage [2012/06/23(土) 15:06:23.66 .net]
- >>219
ASP.NET MVCを想像してみろよ あれはCとVMの両方を持つが、どう見ても同じものじゃないだろ
- 224 名前:デフォルトの名無しさん mailto:sage [2012/06/23(土) 15:13:22.96 .net]
- >>220
それが理解できていれば聞かずに済んでいるんだ、無能ですまん。
- 225 名前:デフォルトの名無しさん mailto:sage [2012/06/23(土) 15:30:26.15 .net]
- VMってのは、Vから扱いやすいインターフェイスを備えたMのラッパーだよ
Vを制御したりなんかしない
- 226 名前:デフォルトの名無しさん mailto:sage [2012/06/23(土) 15:57:05.63 .net]
- Vを制御するのは誰?
簡単な話、Viewにある文字をModelでなんかした結果で変えたいみたいな。
- 227 名前:デフォルトの名無しさん mailto:sage [2012/06/23(土) 16:02:41.88 .net]
- V自身がバインディングで変える
- 228 名前:デフォルトの名無しさん mailto:sage [2012/06/23(土) 19:19:17.03 .net]
- MVCだとVは入力を扱わない
- 229 名前:デフォルトの名無しさん mailto:sage [2012/06/24(日) 17:03:07.28 .net]
- Mの状態でフォーカス位置を変えたりするのがめんどい
- 230 名前:デフォルトの名無しさん mailto:sage [2012/06/24(日) 17:04:30.15 .net]
- SとMの関係を一言で言うと?
- 231 名前:デフォルトの名無しさん mailto:sage [2012/06/24(日) 18:36:15.75 .net]
- rot(M, -π) = S
- 232 名前:デフォルトの名無しさん mailto:sage [2012/06/24(日) 21:45:32.65 .net]
- Vを制御するのはVMだろ
Vの状態を持つためのMなんだから
- 233 名前:デフォルトの名無しさん mailto:sage [2012/06/25(月) 14:05:28.44 .net]
- VMがVを制御しないんならVを制御する別のオブジェクトが必要だな
そうだなープレゼンターとかいう名前にするといいんじゃね?
- 234 名前:デフォルトの名無しさん mailto:sage [2012/06/25(月) 15:04:10.95 .net]
- 「MVVMパターンで学ぶGUIアーキテクチャパターン」? .NETラボ勉強会で話してきました!
ugaya40.net/architecture/mvvm_to_mvc.html
- 235 名前:デフォルトの名無しさん mailto:sage [2012/06/25(月) 18:19:46.52 .net]
- Mのプロパティをラップすることがあるのは、MVVM関係なく、隣人とだけ話せっていうOOPの作法だよな
MVVM的には別にどっちでもよくて、やっぱりVMの本質はVの状態を持つことだよ
- 236 名前:デフォルトの名無しさん mailto:sage [2012/06/25(月) 22:39:40.76 .net]
- 従来のウェブアプリ(Ajaxアプリ除く)、
ウェブフレームワークといったらいいかな? で、MVVMを使うメリットある?
- 237 名前:デフォルトの名無しさん mailto:sage [2012/06/25(月) 22:50:54.35 .net]
- JSのか?
- 238 名前:デフォルトの名無しさん mailto:sage [2012/06/25(月) 22:54:54.79 .net]
- JS関係なくて、普通のフォーム使った
ウェブアプリ。
- 239 名前:デフォルトの名無しさん mailto:sage [2012/06/26(火) 00:01:38.39 .net]
- 数ある既存の素晴らしいMVC系フレームワーク(あくまでWebでいうMVCね)
に乗せられるというメリットを捨ててまで使うほどのメリットは無いと思う
- 240 名前:デフォルトの名無しさん mailto:sage [2012/06/26(火) 00:15:01.78 .net]
- ASP.NET MVCにはViewModelと呼ばれるものがあるけど
ステートレスでただVと1対1なだけのデータの入れ物だからMVVMとは別物だと思う
- 241 名前:デフォルトの名無しさん mailto:sage [2012/06/26(火) 00:17:39.51 .net]
- MVVMはVが入力を扱う場合において威力を発揮する
WebのサーバサイドだとVは入力を扱わないし、MVCはVではなくCが入力を扱う
- 242 名前:デフォルトの名無しさん mailto:sage [2012/06/26(火) 00:20:17.19 .net]
- あと選択状態とかだろ
ステートレスなVMはただのMだ
- 243 名前:デフォルトの名無しさん mailto:sage [2012/06/26(火) 00:41:58.72 .net]
- そもそもウェブアプリってMVCじゃないだろ?
データとってきてテンプレートに入れるだけじゃん。
- 244 名前:デフォルトの名無しさん mailto:sage [2012/06/26(火) 19:38:03.37 .net]
- 何を突然スレ違いなことを
- 245 名前:デフォルトの名無しさん mailto:sage [2012/06/26(火) 20:46:48.60 .net]
- >>233でウェブアプリの話してるじゃん。
ちゃんと読まないでレスするの良くないよ。
- 246 名前:デフォルトの名無しさん mailto:sage [2012/06/26(火) 20:53:00.50 .net]
- ここはMVCのスレではないし、クライアントとWebのMVCが同一だと言ってる奴も居ないけど
- 247 名前:デフォルトの名無しさん mailto:sage [2012/06/26(火) 20:57:02.48 .net]
- このスレの1/10には
MVCという単語が含まれているが? MVCのスレじゃなくても MVCと比較するのだからなんの問題もないだろ。
- 248 名前:デフォルトの名無しさん mailto:sage [2012/06/28(木) 18:23:25.38 .net]
- コミュ障って生きていくの大変そうだな。
- 249 名前:デフォルトの名無しさん mailto:sage [2012/06/29(金) 00:08:52.57 .net]
- そうだな。そういうことにしておけば?
- 250 名前:デフォルトの名無しさん mailto:sage [2012/06/29(金) 14:32:07.81 .net]
- そこはもちょっと親身に相談に乗ってあげなきゃ
245が自殺でもしたら大変だろ
- 251 名前:デフォルトの名無しさん mailto:sage [2012/06/29(金) 15:32:22.10 .net]
- ちょっと死にたい
- 252 名前:デフォルトの名無しさん mailto:sage [2012/06/29(金) 16:26:05.86 .net]
- コードビハインドさえ書かなければ死なない
|

|