MVVMについて語ろう

■ このスレッドは過去ログ倉庫に格納されています
2012/06/06(水) 11:03:33.21
WPF/Silverlight/WinRT開発の必須技術、MVVMについて語ろうではないか!
2012/11/18(日) 00:17:22.53
>>486
いいから早く寝ろよ
2012/11/18(日) 00:20:54.13
反応はしてたけど別にキレまくってたってほどじゃなかったろ
2012/11/18(日) 00:24:44.54
MVPVMの(Uによる)煽りはひどかった
2012/11/18(日) 01:06:10.42
お前ら本当に暇なんだな
文句があるなら一度でいいからGoogleの検索トップになってみろよ
U氏のサイトはMVVMで検索すると余裕でトップなんだが
2012/11/18(日) 01:10:17.68
そんなんだと宗教に騙されるぞ
U氏も言ってるだろ? 「MVVMだからこうしなければならない」じゃなくて目的を考えろと
2012/11/18(日) 01:14:55.07
>>491
自分の考えた最強の目的しか許さず
その目的を達成するにはこうするしかないと決めつける
そこから外れたツイートを見つけると相手が黙るまで粘着ツイート
相手が黙ると「都合が悪くなると無視かよ、これだからクズは困る」的なツイートで〆

尾上さんのそこにシビれる!あこがれるゥ!
2012/11/18(日) 01:15:09.27
目的を考えろと言ってる本人が一番権威主義を煽ってる元凶という皮肉
2012/11/18(日) 01:19:48.67
尾上を擁護してるのはいったい誰なの?
誰がどう見てもアスペルガーじゃん。

尾上にへこへこ媚び売って家畜に成り下がってる奴って
高野将かぐらばくぐらいなもんだろ?
2012/11/18(日) 01:40:50.56
相手を擁護と認定してしまえばどんな誇大を使って過激に叩いても正当化できて安心だもんな
2012/11/18(日) 01:49:36.48
文句があるなら同じMVVMの土俵で反論すればいいじゃないか。
このスレに持論を垂れ流すだけでも人格攻撃よりはマシだしまともな議論なら歓迎だぞ。
考え方に関してはここはわりとU氏に反発してる人が多いみたいだし(俺もその一人だが)。
497デフォルトの名無しさん
垢版 |
2012/11/18(日) 07:01:25.21
MVVMの思想に関してはいい加減多少は理解したから、
そろそろMVVMの実装について語って欲しいなぁ、
498デフォルトの名無しさん
垢版 |
2012/11/18(日) 07:25:20.92
とりあえずインフラ使っとけっていう風潮?って
MVVMじゃなくてMVVMライブラリの使い方を憶える事になる
危険性高い気がするのよね。

MVVMインフラが解決しているであろう、
様々な問題を自力で解決できるように成らないと
ほんとうの意味でMVVMやXAML環境を理解したとは言わない気がする。

MVVMの啓蒙者ならそのぐらいまでやってくれないと片手落ちだろって思う。



ところでMVVMインフラってどんな問題を解決してるの?
2012/11/18(日) 13:25:29.40
コードビハインドのこともそうだしModelの責務の話もそうだけど
言ってることがコロッと変わるのはどうにかならないものなのか

なんか昨日もフォーカス制御をModelでとか唐突に言い始めるわけですよ
それが正しいかどうかは別として
ざんざん大声で他人を罵倒してまで言い続けてたことを
ちょこちょこ小出しでさりげなく路線変更してくる卑怯なところが俺が気に入らないところ
といういか、それがうがやが叩かれる原因じゃね?
2012/11/18(日) 15:58:45.35
>>499
やっぱ大学もいってないし、会社員としての経験もほぼ0でしょ?
どう考えても性格、人格が歪んでるというか問題があるんでしょう。
完全にアスペだよ、アスペ。
2012/11/18(日) 16:01:06.83
お前アスぺの意味やその性質わからずに罵倒語として使ってるだけだろ
2012/11/18(日) 16:06:22.21
人格の話は別の板でやれ。
2012/11/18(日) 16:17:28.34
私怨ならヲチでやれ
2012/11/18(日) 18:51:48.91
ここって元々WPFスレを正常化するための隔離スレッドだからいいんだよ。
便所の落書きスレッドで。

いやなら見るなw
by 岡村
2012/11/18(日) 18:59:24.39
まあアスペには違いない
2012/11/18(日) 20:26:20.24
尾上さんは
「日本でMVVMを正しく語れる人間は自分以外にいないッ!!」
って断言してたしスレ名を「尾上について語ろう」に修正してもよいと考えられる
2012/11/18(日) 20:52:02.11
ここMVVMやってる奴はキチガイだらけという見本のスレか
2012/11/18(日) 20:58:34.33
そもそもMVVMって何だよ
ぐぐってもクソみてーなサンプルコード乗せただけの記事しか出てこないしまともに概念を解説してるやついねーのな
コマンド(笑)とか冗長すぎてもうね
509デフォルトの名無しさん
垢版 |
2012/11/18(日) 21:04:18.24
わからないならこれでも勉強しろ

JavaScript製のMVVMフレームワーク「Knockout」
http://www.moongift.jp/2010/11/2010110212/
2012/11/18(日) 22:37:36.36
>>508
尾上さんのサイト見れば簡単に理解できる。
簡単に言うとPDS的にコードビハインドを記述しないで開発する手法だよ。
2012/11/18(日) 22:40:25.76
一応言っておくとPDSは一般的な用語じゃないから通じないと思うぞ。
512デフォルトの名無しさん
垢版 |
2012/11/18(日) 22:41:17.17
一般的にはフリーソフトで通じる
2012/11/18(日) 23:36:11.21
>>511
自分が知らないことは一般的じゃないと考える根拠は何だろうね
自分の無知を晒しているだけと気が付かない人には何を言っても無駄ではあるが、助言だけはしておくかな
2012/11/18(日) 23:39:05.83
Wikiにないから一般的じゃないと推定される
2012/11/18(日) 23:40:30.50
どこのWikiだよ
516デフォルトの名無しさん
垢版 |
2012/11/18(日) 23:42:35.17
PDS
http://ja.wikipedia.org/wiki/PDS
パブリックドメインソフトウェア(Public domain software)
かつてのドイツの政党である民主社会党(Partei des Demokratischen Sozialismus)。合併し、現在は左翼党 (ドイツ)に。
FTTHにおけるネットワーク構成(ネットワークトポロジー)の一つ。(Passive Double Star)
毛利元貞が考案した護身術パーソナルディフェンスシステムの略。
テレビ番組の制作会社の名称。PDS (制作プロダクション)を参照。
先駆動システム(Pre Driving System)
プラン・ドゥー・シー(Plan Do See) PDCAサイクルを参照。
アップルが採用していた拡張スロット。(Processor Direct Slot)
2012/11/18(日) 23:44:53.19
海外
http://en.wikipedia.org/wiki/PDS
2012/11/18(日) 23:48:19.69
>>510
PDSという概念があるよということなら納得できる
ただしPDSという言葉が一般的というのは賛同しかねる
2012/11/18(日) 23:51:14.50
で、そのPDSとMVVMに何の関係が?
520518
垢版 |
2012/11/18(日) 23:57:05.51
MVVMは、XAML系フレームワークにおけるP(resentation層)の問題を解決するもの
その前提としてPとD(omain層)の分離がある
521518
垢版 |
2012/11/18(日) 23:59:12.80
とはいえこれはあくまでパターンであり、絶対の解法ではない
その証拠として、MicrosoftもXAML系コンポーネントベンダーもMVVMを推奨してないという事実がある
522518
垢版 |
2012/11/19(月) 00:02:35.76
WPF・Silverlight・RTの公式ドキュメントで、一ヶ所でもMVVM必須と謳っている箇所があるだろうか?
また国内だとGrapeCity・Infragistics等のベンダーがXAML系コンポーネントを販売している
これらベンダーのマニュアルにも、MVVMを必須・提唱しているドキュメントは全く見当たらない
2012/11/19(月) 00:07:49.16
MがちゃんとしててVMはぺらっぺらになるのがMVVMの設計としては理想だからな
Web MVCではいくらぺらっぺらでもC無しというわけにはいかないが
VMがぺらっぺらになっていき、ついに無くなるのは別に問題ない
微妙に矛盾したパターンだよ
2012/11/19(月) 00:07:57.56
そりゃ必須なわけがない
MSDNマガジンやChannel9とかで適度に触れられている程度だな

あと「推奨していない」だと非推奨と主張しているように聞こえるから注意だ
「触れていない」あたりでいい
525518
垢版 |
2012/11/19(月) 00:08:10.96
勘違いしてはいけないのは、パターンはあくまでパターンであり、絶対の解法ではないことだ
逆にパターンに振り回されてその本質を見失えば、返って障害が発生する場合もある
MVVMを使わずに開発できるのならそれでよし
2012/11/19(月) 00:09:31.95
VMとテスト
2012/11/19(月) 00:11:53.87
>>526
MがちゃんとしててMのテストだけで済むならそれに越したことはない
2012/11/19(月) 00:12:18.51
>>524
どうかな?
「MVVMが必須」という誤ったイメージが蔓延し過ぎて参入障壁が上がり過ぎると
Microsoftや周辺ベンダーしては返って喜ばしくない事態になると思う
・・・いやすでになっているな

「触れていない」というより、いまとなっては「触れたくない」が正解だと思う
529518
垢版 |
2012/11/19(月) 00:15:52.43
かくいう私はどうかといえばMVVMは割と好きなパターンであるし、
実際これでかなり問題を解決できているのも事実だ
しかし、使えない、理解できない、開発速度が極端に落ちて苦痛に感じるくらいなら、
そこまで無理に使う必要もないと思う
2012/11/19(月) 00:28:44.37
VMがわかりにくいのって、CとかPとかと違ってVMにはこれといって
Mとの間に役割の違いが無いことだよ
特定のVとバインドすることを意識して作ったMってだけだからな
531デフォルトの名無しさん
垢版 |
2012/11/19(月) 00:53:44.94
なにいってんだ?
ビューの状態を表すモデルデータという
役割があるだろ。
2012/11/19(月) 00:58:48.11
別に選択状態持つためのMを設けてもいいんだぜ?
533デフォルトの名無しさん
垢版 |
2012/11/19(月) 01:02:55.31
それはもはやMではない。

Mの役割としては、GUIアプリではなく
CUIアプリからでも普通に使えるようなものを
目指すべきだ。

そんなGUIに依存した機能を持たせるべきじゃない。
2012/11/19(月) 01:04:56.93
その選択状態がGUIとしてあらわす際に必要となる選択状態なのか、
そのプログラムの動作自体を構成するにおいて存在する必然性のある選択状態なのかによるね
2012/11/19(月) 01:19:56.04
画面ごとのVMはいいけど、モデルごとのVMはめんどい
2012/11/19(月) 10:20:32.56
>>532
GUIの選択状態を維持するためのモデルをViewModelという
2012/11/19(月) 22:03:23.29
グリッドのボタン付けるときとかの
行ごとにVM作る派と作らない派の比率が知りたい
2012/11/19(月) 22:15:46.48
行って何の話だよ
2012/11/19(月) 22:20:34.86
WPFでデータグリッド使ったら負けだろ
それならWinForms使うわ
WPFならテンプレートで作れ
2012/11/19(月) 22:29:30.62
普通コンボボックスの項目毎VM作るだろ
2012/11/19(月) 23:23:02.89
グリッドって何かと思ったらDataGridのほうか
2012/11/20(火) 13:30:22.35
>>540
???
コンボボックスにモデルのコレクションをバインドするだけでええやん
2012/11/20(火) 13:54:25.91
HeaderedItemsControlとかをこねくり回すのは常套手段なのか
2012/11/28(水) 11:11:37.09
考え増やしたいから、
MVVM の各レイヤーの具体的な責務を教えてください

以下、テンプレ

M:
V:
VM:
2012/11/28(水) 11:22:45.65
>>544
> M:
ビューに関係無いデータ構造など変更部分。いわゆるモデル。UIスレッドと分離されてる事が望ましい。
> V:
ビューの見た目。極力もらったデータを表示したりインプットを上にあげるだけで何もしない。
> VM:
その両者を繋ぐもの。そのビューに関係するコーディネーター。ユニットテストできること。スレッド間の調整をここで吸収。
2012/11/28(水) 11:22:46.45
Set-Location : ドライブが見つかりません。名前 'M' のドライブが存在しません。
2012/11/28(水) 11:34:44.90
一番ありそうな間違いは、WebMVCの典型的な間違った使い方のように
M: データ
VM: ロジック
としてしまうことだな
注文画面のMは注文処理クラス。VMはあくまでインターフェイスの差を吸収するだけ。
548544
垢版 |
2012/11/28(水) 11:45:53.66
>>547
まさにこれw
2012/11/28(水) 12:47:28.47
使う側ならそれでいい
2012/11/28(水) 14:02:32.93
Mのビジネスロジックがバックエンドに移って
結果的にMがデータだけになることはあるだろうけど
VMから見たら特に関係ない話。VMにビジネスロジックを書いてるわけじゃない。
2012/11/28(水) 21:50:02.31
プレゼンテーションに関わるものとしてVMに置いとくべきデータやロジックがあるって意見も耳にするけど
自分には区別が難しいので極力Mに持たせるわ。
552544
垢版 |
2012/11/28(水) 22:50:19.03
永続化しないデータとか?
2012/11/28(水) 23:14:06.28
MVVM界隈の話はVMが強調されすぎるきらいがあるよな。
本当はMの方が遥かに重要なのに。どちかか省くなら迷わずM。
VMはMVVMパターンのアイデンティティだから仕方がないけど。
554553
垢版 |
2012/11/28(水) 23:14:52.00
間違えた省くならVM
2012/11/29(木) 00:02:45.23
プレゼンテーションにかかわるものはVに書くんじゃないのか
2012/11/30(金) 06:22:26.73
VMは、抽象的な、表示する「ための」データだな
例えば、VでItemsSourceにバインドして表示する一連のデータのコレクションとか
特定のデータを、手段は特定しないからとにかく強調表示しろ、ということを示すプロパティとか

Vは、具体的な、表示「の仕方」だな
同じVMからでも、同じコレクションを表示させる方法はListBoxだったりDataGridだったり単なるテキストだったり
どんな形で表示するのかはVが決めることでVMは手を出せない
また、強調表示の仕方にしても、単なる色変化だったり太字だったり、その部分だけ無意味にアニメーションさせたり
表示の仕方もVに任せられててVMは手を出せない
2012/12/11(火) 16:23:56.96
VBでペタポトプログラミングしか経験ない奴にパターン教えても一向に概念理解してくれない
ましてMVVMなんか到底無理無理
2012/12/11(火) 18:18:42.11
そんな動けばいいという考えの奴に何をいってもダメだ。
平気でModel部分にフォームやコントロール(UI)のインスタンスを食わそうとしたりするからな。
2013/01/16(水) 20:12:33.47
MVVMって従来のASP.NETやWindowsフォームに慣れた人に説明するなら、

V  Aspxファイル/フォーム
VM コードビハインドのcs
M  業務ロジック
と対応してて、従来のASP.NETやWindowsフォームとの大きな違いは、
ViewとViewModelがバインディングを介すると言う制約があるので分離しやすい、
と言う理解なんだけど大体合ってるかな?
2013/01/16(水) 22:46:55.45
全然
2013/01/17(木) 23:06:47.49
大体合ってるみたいですね。
VB6脳なPGとJava/Struts脳なPG、どっちがMVVM覚えるのに向いてますかね?
2013/01/18(金) 08:37:02.03
>>561
全然違うと言われてんだろ
概念がそもそも違うがそれが分からない人間でも
・コードビハインドは画面と同一クラスだがVMは別クラス
・コードビハインドとViewは一対一だが、View:VMは1:n
・VSでコントロールをダブルクリックしてもコマンドが作られて自動的にバインドされたりしない
・そもそもコードビハインドはコードビハインドで存在するだろ
と、上げ出したらきりが無い
MVVM使うならちゃんとMVVMの概論くらいは理解させないとあとで自分が地獄行きだぞ
563デフォルトの名無しさん
垢版 |
2013/01/18(金) 09:03:18.93
的外れな回答()キター
2013/01/18(金) 14:28:02.15
いまだにVB6脳なんて他のこと何も向いてないだろ
2013/01/18(金) 14:46:29.63
違うって言われてるのに合ってると受け取っちゃうのはどこにも向いてないな。
2013/01/18(金) 17:07:06.64
全然合ってるかもしれない
567デフォルトの名無しさん
垢版 |
2013/01/20(日) 07:38:18.01
559は大体あってるよね?
というより562が間違いすぎw

・コードビハインド(各種イベントで呼び出される関数)は
 手動で設定すれば Viewとは別のクラスにすることは可能だし
・V:VM は 一つのデータを別表現で表示することがあるので V:VM = n:1
・デザイナでダブルクリックしても自動で出来ない
  →細かい処理を行いたければデザイナに任せずに手動で操作するのは当たり前。
・そもそもコードビハインドはコードビハインドで存在するだろ
  →別にイベントで関数呼び出しても、
   CommandやActionのバインディングで関数呼び出してもよくね?
   
568デフォルトの名無しさん
垢版 |
2013/01/20(日) 07:50:01.85
そういえば、データバインディングって
ほんの少し MFCのValue変数とDDX_〜 に似てないか?
2013/01/20(日) 09:40:48.58
>>568
ほんの少しな( ´Д`)y━・~~
2013/01/22(火) 07:57:45.76
@Grabacr07 いままでのオレオレICommandの正しい実装基底クラス

Prismのパクリなのになんでこんなに偉そうなの?
2013/01/22(火) 19:39:17.12
心底どうでもいい
2013/01/22(火) 21:17:29.87
MVVMライブラリはすべてPrismのパクリだからな
いまさらだろ
2013/01/25(金) 10:23:59.51
別に偉そうじゃない件について
どれだけコンプレックス感じてんだよw ダッセーやつw ぷげら
2013/01/25(金) 23:38:53.69
実際やってみたらMVVMではなくWPFやSilverlight固有の部分でかなり躓いた
初見でXAMLを自由自在に扱える奴とかいるのか?
2013/01/25(金) 23:46:59.77
固有の約束事を理解しないといけないのはWinFormsだってASP.NETだって
PHPとかのWebフレームワークだって一緒だ
2013/01/26(土) 00:00:26.99
パネル使ったレイアウトに慣れてないだけじゃね?
2013/01/26(土) 00:07:18.85
>>574
ちなみに躓いたのどこら編?
2013/01/26(土) 00:11:58.51
ControlTemplateとか初見でMSDNだけで使いこなせたら神だわ
2013/01/28(月) 10:43:39.37
Templateカスタマイズする時点で折れるな
2013/01/29(火) 02:16:53.83
>>573
別にウガヤが考えたロジックじゃあないのに
まるで自分で考案したような口ぶりが臭いだけじゃろ。
特にcommandのweakeventなんてprismのアイデアそのまんまだし。
++c++やneueと違って.NETやC#(言語)の知識は薄っぺらいのに
ビックマウスだから余計に臭い。
2013/01/29(火) 05:30:37.24
>>580
詳しくは知らんが咀嚼して自分のライブラリとしてまとめ上げて、それを採用してくれてるとこもあるんだから、口だけ番長のお前より遥かにまし。
リアルでフルボッコにされたの?悔しいのぅ悔しいのぅ。
2013/01/29(火) 07:57:35.12
奴が自分で考案したみたいなことを言っているのは見たことないが
どの辺で言ってたのか気になるな
2013/01/29(火) 08:22:09.37
別に好きでも嫌いでもないが、世の中のMVVMフレームワークは全てLivetより下と言ってるように取れる文書ならみた
MVVMが普及しないのは既存のインフラが不十分なせいで、Livetがそれを解決するんだとか
確かアンチMVVMに反論する記事だったかと思う
2013/01/29(火) 08:34:30.68
現場でMVVMゴリ押しして使ったら大失敗したからアホにも使えるように作ったんだっけ?
部下も可哀想だな
2013/01/29(火) 08:50:43.67
まあ既存のが不十分なのはあってるな
ただLivetが必要十分かと言うとそうでもない
2013/01/29(火) 09:18:58.54
Javascriptエンジン組み込んでknockout.jsを逆移植するのがいいと思う
ビューに振る舞いを書けた方がいいのは、それを最初否定してたMVVM自身によって証明されたし
VMも静的言語で書くのは面倒な単純作業すぎる
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況