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