差分
編集の要約なし
'''Model View ViewModel'''(略称:MVVM)とは、[[ユーザーインターフェイス]]([[UI]])を構築するための[[デザインパターン]]のひとつである。
== MVVMの構造 ==
いわゆる[[MVC]]パターンのモデルと同じものである。
プレゼンテーション層、ドメイン層、データソース層の3層からなる[[ドメイン駆動設計]](通称:DDD)の思想に乗っ取れば、モデルはドメイン層に相当するものであるが、一般的にはその下のデータソース層までを含む。それどころかデータソース層にSQLなどを用いて読み書きしているだけというシステムも多い。(通称:DDD)の思想に乗っ取れば、モデルはドメイン層に相当するものであるが、一般的にはその下のデータソース層までを含む。それどころかデータソース層に[[SQL]]などを用いて読み書きしているだけというシステムも多い。
=== ビューモデル(ViewModel) ===
大雑把にいえば「UI(ビュー)を仮想化(抽象化)したもの」である。
極端に言えば、[[パソコン]]向けのUI(ビュー)と[[iPhone]]向けのUI(ビュー)が別物であっても、ビューモデルに定義される「操作」は同一にできるという話である。ただし私の知る限りではMVVMは単体テストを捗らさせる目的で使っているものばかりであり、マルチプラットフォームのために使用しているという事例は実際には見たことも聞いたこともない。
==主なMVVMフレームワーク==
===.NET===
*[[WPF]]
*:実質的に[[Windows]]でしか使えない。[[デバッグ]]が容易になるが[[コード]]量が増えるので相殺され意味なし。
*[[MvvmCross]]
*:定番。[[NuGet]]が用意されてなくて若干不便。
*[[ReactiveUI]]
*:知らん。
*[[ReactiveProperty]]
*:知らん。日本製らしいがXamarin.Formsネタばかりで[[Xamarin.iOS]]での使い方がわからなかったから1時間で諦めた。
===JavaScript===
* [[knockout.js]]
== 関連項目 ==
** [[Model View Controller]]
** [[Model View ViewModel]]
== 参考文献 ==
{{reflist}}
{{stub}}