MVVMパターンで学ぶ GUIアーキテクチャ・パターン

Slides:



Advertisements
Similar presentations
Ruby on Rail の紹介 石渡正樹 Ruby on Rails とは? スクリプト言語 Ruby で書かれた web アプリケー ションフレームワーク 作者 –Devid Heinemeier Hansson という人だそうです ( 詳 しいことは知りません.
Advertisements

学びとしての PC スキルアップ 講座 熊本大学生協 PC スキルアップ講座スタッフ 高畠 舞美 九州ブロック学生事務局 小島 健太郎.
Struts VS SAStruts ・ STRUTS と SAStruts を比較します。. Struts のメリット1 STRUTS はディファクトスタンダード。 ↓ プログラマがたくさんいる。 ライブラリ、ツールがたくさんある。 ビジネス案件が豊富。 書籍などの情報元が豊富。
Genius Framework について 吉津 卓保( S2 ファクトリー株式会社). 自己紹介.
2012/8/4 わんくま同盟 大阪勉強会 #50 尾上雅則. 本セッションの目的と動機付け  尾上 雅則 (おのうえ まさのり)  昭和58年生 フリーランス  C#/MVVM WindowsForms/ASPNET/XAML系全般など  Blog – the sea of fertility.
1 なんとなく Ajax ~新しくて古い XMLHttp 川合孝典 (Kansai.pm) 2005/5/22.
本日のスケジュール 14:45~15:30 テキストの講義 15:30~16:15 設計レビュー 16:15~16:30 休憩
プログラマのレベルアップ.
GUIアーキテクチャ・パターンの基礎から MVVMパターンへ
WordPressの基礎.
CakePHPを業務に導入する Shin x blog 新原 雅司.
表紙 Windows用起動画面集        ~劇場版 v.1,00~ 作成:カズキング 場所:ブログ「俺らしいブログ」
マルチプラットフォーム対応 P2Pファイル共有ソフトの開発
実行時のメモリ構造(1) Jasminの基礎とフレーム内動作
ASP.NET開発標準化を考えてみよう! わんくま同盟 東京勉強会# /03/15 mxb & 片桐継.
ASP.NET開発標準化を考えてみよう! わんくま同盟 東京勉強会# /03/15 mxb & 片桐継.
経済情報処理ガイダンス 神奈川大学 経済学部.
ソースコード品質概論 なぜソースの品質を追求するのか
認知カウンセリング 学習意欲改善に対する可能性.
オブジェクト指向プログラミング(2) OOPの三大要素 「クラス」「ポリモーフィズム」「継承」
RIAアーキテクチャ研究会 第3回セミナー 尾上 雅則
稚内北星学園大学 情報メディア学部 助教授 安藤 友晴
RAD Studio 14/09/27 TEffectを使った綺麗なForm
WPF/Silverlightの特徴と一般的な設計原則から導出する MVVM(Model/View/ViewModel)パターン
さとりすと Satori Ghost Editor 里々ゴーストの統合開発環境を作ったよ page: 1/25
「ビジネスで成功する人たちは“本当に良いトレーニング法”を知っている?
経済情報処理ガイダンス 神奈川大学 経済学部.
発表者 2011/01/08 楽しい256バイトイントロの 世界 発表者 2011/01/08.
経済情報処理ガイダンス 神奈川大学 経済学部.
2009/5/22 けーちゃん カンタン  Wikiで情報共有 あいさつ 2009/5/22 けーちゃん
UMLとは           032234 田邊祐司.
経済情報処理ガイダンス 神奈川大学 経済学部.
基礎プログラミング演習 第1回.
理論試験速報 理論問題部会長 鈴木 亨 先生 (筑波大学附属高等学校) にインタビュー.
も  じ ま ほう 文字の魔法 文字の魔法、っていったいなんでしょう? 文字は、ものすごい魔法を持っているんですよ。
スライド資料 C4 ICT機器を活用した授業づくり ④特別支援学校における ICT活用 兵庫教育大学の小川です。一応作者です。
MPIによる行列積計算 情報論理工学研究室 渡邉伊織 情報論理工学研究室 渡邉伊織です。
2004年度 サマースクール in 稚内 JavaによるWebアプリケーション入門
2003年度 データベース論 安藤 友晴.
データからいろんなことを学ぼう! このスライドでは、順に、こんなことを説明します。 「データ」って、どんなもの? 「データ」を集めてみよう
BindingからMVVMパターンまで うつせみ(虚蝉).
MPIを用いた最適な分散処理 情報論理工学研究室 角 仁志
UMLの概要とオブジ工クト指向の基本概念 第2回
WPF、MVVMパターン構成.
Webアプリケーションの方向性 データベース論 第13回.
.NET Framework 3.0 概要 (旧称 : WinFX)
卒論の書き方: 参考文献について 2017年9月27日 小尻智子.
MIX 09 2/23/2019 1:22 PM © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
BindingからMVVMパターンまで うつせみ(虚蝉).
SOA基盤製品 「見る、聞く、体験する SOAノウハウツアー」
ゲーム開発モデルの基礎.
長崎大学工学部 情報システム工学科 「パターン認識」って・・・ 何? 宮原・喜安研究室.
JAVAについて 高橋 雅哉.
テーブル設計を後から変更 現場で使える小技のご紹介 株式会社ジーワンシステム 生島 勘富(イクシマ サダヨシ)
「選挙の大切さについて」 資料モデル 1 選挙制度の意義や目的について、選挙の歴史や制度の特徴 などを踏まえてわかりやすく説明する。
WindowsMobile de HelloWorld
WindowsMobile de HelloWorld
多層的な知人関係に基づく 自己情報コントロールの実現
JSFによるWebアプリケーション開発 第3回
データモデリング エンティティの切り出し.
手書き文字の自動認識アプリケーション 15K1013 坂本 倖輝
演習1に関する講評 ~ 業務仕様を書く難しさ ~
岩手県立大学ソフトウエア情報学部 3年 鈴木研究室所属 井ノ上 憲司
ASP.NET 2.0による Webサービスの構築 2008年10月18日 こくぶんまさひろ.
アスペクト指向言語のための視点に応じた編集を可能にするツール
ASP.NET 2.0による Webサービスの構築 2008年10月18日 こくぶんまさひろ.
情報ネットワークと コミュニケーション 数学領域3回 山本・野地.
より分かりやすい ユースケースモデルを作る
GluonJ を用いたビジネスロジックからのデータベースアクセスの分離
How To WPF アプリケーション Part3 By 中博俊.
Presentation transcript:

MVVMパターンで学ぶ GUIアーキテクチャ・パターン 2012/6/23 .NETラボ勉強会 RIA アーキテクチャ研究会 尾上雅則

本セッションの目的と動機付け 1.Introduction

Introduction - 目的 本セッションの目的は、 MVC/MVP/MVVMなどのいわゆるMVC系 GUIアーキテクチャ・パターン を適切に理解・学習・適用するための考え方を学ぶ事です。 MVVMパターンは XAML系プラットフォーム(WPF/SL/WP7/Metro) のために生まれたMVC系パターンです。

Introduction -よくある説明 これは何のために必要なんでしょう? → 保守性や変更容易性や開発生産性を確保するため → こんな事は全ての開発関連話題で当り前の事 問題は何を持ってそのメリットを確保するか

Introduction -よくある説明 Viewは表示で、Modelはドメインあるいはビジネスロジックとデータ、ViewModelはその橋渡し・・・? ドメインって? クラサバだとビジネスロジックはクライアントにないよ? Modelに書くべきことは結局どこからどこまで? Modelが曖昧だと当然橋渡しのViewModelもわからない

Introduction -よくある説明 納得したような気にはなりますが、 結局何も説明できていないんです 何をもって保守性や変更容易性や開発生産性を確保するか 説明できていない。 ViewModelは橋渡しって3つの責務が繋がってたら真ん中が橋渡しなのは当たり前でしょ?MVCもMVPもMVVMも全部一緒になる。 納得したような気にはなりますが、 結局何も説明できていないんです

Introduction –自己紹介+ 尾上 雅則 (おのうえ まさのり) 昭和58年生 フリーランス C#/MVVM WindowsForms/ASPNET/XAML系全般など Blog – the sea of fertility – http://ugaya40.net Twitter - @ugaya40 Facebook – http://facebook.com/ugaya40 Google : MVVMで検索すると暗躍っぷりが見えます コミュニティ活動はほぼMVVM 日本でMVVMが流行り始めた2年前、その頃はまだ誰もView/ViewModel/Modelの各役割を説明できませんでした。説明は先ほど例示したそれのレベルでした

Introduction -方針 インターネット上にはMVC系パターンに関する知見があふれています。そのすべてが同じなわけではなく、さまざまな意見があります。 そういった状況でただ 「MVCでは○○は××する」 「MVVMでは△△は□□と解釈する」 などと言ってもそれを信じる根拠はありません。

Introduction -方針 本セッションでは私の2年間のうちのMVVMの概念に関わる認識をなぞり、MVVMパターンをまず導出していき、 導出の中で見出した目的・理由を武器に MVC系パターンの 本質はなんなのか どう理解するのか どう学習リソースを扱うのか どう適用していくのか について考えていきます。

Agenda Introduction GUIアプリケーションとPDS MVVMパターンとMVC系パターン MVC系パターンの学習方法 MVC系パターンの適用Tips まとめ

PresentationDomainSeparation 2.GUIアプリケーションとPDS

GUIアプリケーションとPDS Before PDS例 DomoSolution - BeforePDS コントロールの状態が制御判断に利用されている 責務分割されていない(この形のままじゃやりようが無い) 例えば色ではなく画像で表すことになったら変更範囲が大きい 責務分割されていないのでUIの変更から影響範囲が考察しにくい。 場合によってはイベントの処理順にビジネスフローが依存しかねない

GUIアプリケーションとPDS After PDS例 DomoSolution - AfterPDS コントロールの状態に依存しない状態制御手段を持った。 コードがBeforePDSより長い YourCondition.cs BeforePDSと比べてUIの変更にはるかに強い コードの見通しも良い イベントの処理順にビジネスフローが影響されたりすることもない。 Form1.cs

GUIアプリケーションとPDS PresentationDomainSeparation この考え方の事を PresentationDomainSeparation(PDS) と呼びます。 本来当たり前のOOPです。関心事の分離です。 相互依存は望ましくないのでObserverパターンで!

GUIアプリケーションとPDS PresentationDomainSeparation Martin Fowler http://martinfowler.com/bliki/PresentationDomainSeparation.html (和訳) プレゼンテーションとドメインの分離 Martin Fowler‘s Bliki in Japan http://martinfowler.com/bliki/PresentationDomainSeparation.html

GUIアプリケーションとPDS PresentationDomainSeparation (引用):プレゼンテーションとドメインの分離 “最も有用な設計原則に、 プログラムのプレゼンテーション層(ユーザーインターフェイス)とその他の機能をうまく分ける、というのがあります。”

GUIアプリケーションとPDS PresentationDomainSeparation 分離することによる理解のしやすさ テストしにくいUIを分離してテスト容易部分を増やす 複数のプレゼンテーションで共有できるドメインができる プレゼン部分はそのプラットフォームの知識が本来別に必要である プレゼンプラットフォームの仕様・変更にドメインが引きずられない

GUIアプリケーションとPDS PresentationDomainSeparation メリットは多く、OOPにおいてはそもそも至極真当な話です。 PDSしなかった事により発生するデメリットは、一般的なOOPがきちんとできなかった際のデメリットと同様です。規模の大きさに特に比例して影響範囲などの把握が難しくなります。 ただ全ユースケースでの処理の概要が一人でも一望できるほど規模が小さいプログラムでは冗長さが目立つかもしれません。

XAMLの事情とMVVM. そして他のMVCパターンへ 3.MVVMパターンとMVC系パターン

3.MVVMパターンとMVC系パターン Agenda XAMLプラットフォームの特徴 XAMLでのPDS - MVVMパターン おまけ)ASP.NET MVCとMVC まとめ

3.MVVMパターンとMVC系パターン XAMLプラットフォームの特徴

MVVMパターンとMVC系パターン XAMLの特徴- ControlTemplate 外見の変化はカスタムコントロールを作る動機ではなくなった。 <TreeView> <ListBox> 画像貼りミス じゃないですよ!

MVVMパターンとMVC系パターン XAMLの特徴- CSSライクなレイアウトシステム Windowサイズを広げてみる DomoSolution – BeforePDS/WPFLayout <WindowsForms> 残念。 <XAML> CSSと同じようなシステム

MVVMパターンとMVC系パターン XAMLの特徴 - VisualStateManager コントロールに状態に応じた外観を定義する事が可能になった。(状態間にアニメーションの定義も可能/状態を追加する事も可能) 外観に関わるコードはこうやってほぼ全てXAMLに委譲できる。

MVVMパターンとMVC系パターン XAMLの特徴 – 双方向データバインド WPF/Silverlightのデータバインディングは双方向のデータバインドに対応している

MVVMパターンとMVC系パターン XAMLの特徴 – DataTemplate コレクションコントロール(ListBox/TreeView)などには最強の武器がある。

MVVMパターンとMVC系パターン XAMLの特徴 – コレクションコントロール 展開するまで 子のインスタンスが無い!

MVVMパターンとMVC系パターン XAMLの特徴 – コレクションコントロール コレクションコントロールのはまり所 チェック状態をバインドで処理していないと・・・ DomoSolution - CollectionControl

MVVMパターンとMVC系パターン XAMLの特徴 – コレクションコントロール コレクションコントロールのはまり所 WindowsPhoneではさらに状況は深刻 DomoSolution - PhoneListBox スクロール 関係ないところにチェックが!

MVVMパターンとMVC系パターン XAMLの特徴 – コレクションコントロール 画面のレンダリングに必要な動的に変化する情報を保持するバインドオブジェクトを設ける事で正常に動作する バインド!

MVVMパターンとMVC系パターン XAMLの特徴 – バインディングファースト DataTemplateをC#/VBなどの汎用言語コードで構築しても全機能を使う事はできない。 コントロールの状態は信用しない。 コレクションコントロールの挙動などからも、メソッドどうこうより、バインドされたオブジェクトが正常にレンダリングされれば良いという哲学を感じる。 バインドするオブジェクトはコントロールの状態ストアとして機能する

MVVMパターンとMVC系パターン XAMLの特徴 – DSL

MVVMパターンとMVC系パターン XAMLの特徴 – DSL バインディング・レンダリング機能を充実させるためにCLRプロパティとは別のプロパティシステムをも備える CSSライクなDSLをわざわざ介す事で、柔軟なレンダリング・レイアウトシステム、そして仮想化などを含むコントロールの自由な実装を手に入れた。

MVVMパターンとMVC系パターン XAMLの特徴 – まとめ XAMLは外観の変化に非常に柔軟なDSL 外観の変化を動機としてC#/VBなどの汎用言語コードを書く事はほとんどない XAMLはバインディングファーストDSL メソッドやプロパティを直接触るのでは駄目で、バインディングじゃないとできない事があるくらい! バインドされたオブジェクトがコントロールの状態を決める PDSの説明で出てきた「プレゼンテーションプラットフォームの実装には汎用言語と異なった知識が必要」の典型例 WindowsFormsと比べると、XAML自体に対する知識がないと扱いにくい。WindowsFormsはC#に関する知識だけである程度できる。

3.MVVMパターンとMVC系パターン XAMLでのPDS - MVVMパターン

MVVMパターンとMVC系パターン XAMLでのPDS

MVVMパターンとMVC系パターン XAMLでのPDS そしてXAMLにはXAML固有の都合でバインドするオブジェクトが必要となるので

MVVMパターンとMVC系パターン XAMLでのPDS

MVVMパターンとMVC系パターン XAMLでのPDS View ViewModel Model この形の事をMVVMパターンと言います。 見ての通り全然特別なパターンではありません。

MVVMパターンとMVC系パターン XAMLでのPDS – MVVMパターン View ViewModel Model

MVVMパターンとMVC系パターン XAMLでのPDS – MVVMパターン Viewの都合で存在するViewModelを責務として分けている理由はなんでしょうか? Viewの都合であるものなのに、どうしてバインドするオブジェクトをViewのコードビハインドとかに書かないの?

MVVMパターンとMVC系パターン XAMLでのPDS – MVVMパターン Viewの都合で存在するViewModelを責務として分けている理由はなんでしょうか? その方が楽だから!です。設計パターンは楽するためのものです。 まず一つ目として使いまわしの視点があります。 ViewModelを書くのは手間です。使いまわせるところがあるなら使いまわしたいものです。 例えば詳細画面のViewModelを一覧画面でも使いたいなどがありませんか?

MVVMパターンとMVC系パターン XAMLでのPDS – MVVMパターン Viewの都合で存在するViewModelを責務として分けている理由はなんでしょうか? その方が楽だから!です。設計パターンは楽するためのものです。 また、Viewのクラスは基本的にDispatcherObjectと言って、単一のUIスレッド以外から触ると例外が出ます。 ViewModelの値はModelから更新されることがあるのに、これは現在ネットワークアクセスなどがすべて非同期を強要される方向に向かっている(すでにWPF以外すべての環境で強要されます)XAMLプラットフォームでは大きな問題です。 ViewModelをView内に記述するわけにはいかないのです。

MVVMパターンとMVC系パターン XAMLでのPDS – MVVMパターンまとめ MVVMは「XAMLプラットフォームとPDS」という視点から当たり前に導き出されるものであり、それは特定の業務に向いているとか向いていないとかではありません。 MVVMは「XAMLプラットフォーム」で開発する以上考慮すべき考え方と言えます。

MVVMパターンとMVC系パターン XAMLでのPDS – MVVMパターンまとめ MVVMパターンは、XAMLプラットフォームの力を存分に引き出して(それにはPDSが含まれる)設計を行うためのものです。

3.MVVMパターンとMVC系パターン おまけ)ASP.NET MVCとMVC

MVVMパターンとMVC系パターン おまけ)ASP.NET MVCとMVC MVVMを見て、MVC系はPDSを各プラットフォームの特性に合わせて実現するものだと考えれば、他のMVC系の理解もサクサク進みます。 例えばASP.NET MVCはWebアプリケーションプラットフォーム Webプラットフォームである以上、HTMLのレンダリング(ASP.NET MVCの場合はRazorというDSLを使う)、セッション管理、遷移管理などの機能を持ちます。

MVVMパターンとMVC系パターン おまけ)ASP.NET MVCとMVC しかしRazorがサポートするのは、単一ページのレンダリングであり、Webでは複雑になりがちな遷移管理などその他のViewプラットフォームの都合を請け負う部分が必要です。 ASP.NET MVCのRazor以外の、GUIプラットフォーム都合部分(主に遷移など)を請け負うのがASP.NET MVCでのControllerです。 もちろんViewとModelの間のデータの橋渡しもします。

MVVMパターンとMVC系パターン おまけ)ASP.NET MVCとMVC なんで違うの?

MVVMパターンとMVC系パターン おまけ)ASP.NET MVCとMVC MVC系が「Viewプラットフォームの特徴を生かしたPDS実現パターン」だという事を思い出しましょう。 つまり、プレゼンテーションプラットフォームが変わMVC系は変わるのです。 このサイクルを 繰り返す

MVVMパターンとMVC系パターン おまけ)ASP.NET MVCとMVC

MVVMパターンとMVC系パターン まとめ MVVMパターンを含むMVC系パターンはPDSを実現するためのもの。 ただPresentation側が特にDSLを使用する場合などは、そのDSLの我儘などを担う部分が必要となってくる。

MVVMパターンとMVC系パターン まとめ ただPresentation側が特にDSLを使用する場合などは、そのDSLの我儘などを担う部分が必要となってくる。 MV○パターンの○は全てPDSのPresentation側で、Viewで処理できないPresentationPlatformの我儘を担う。 MVVMのViewModel – XAMLのための状態ストア MVCのController – Razorで処理できないASP.NET MVC固有部分

MVVMパターンとMVC系パターン まとめ MV○系パターンではModelの中の設計にタッチしない。 導出フェーズ終わり

MVC系の有効範囲 4.MVC系パターンの学習方法

MVC系パターンの学習方法 サンプルコードから学ぶ 結論から言うと概念を流し読みして理解が十分でない状態でサンプルからきちんとした概念を読みだそうとしても無駄です。 何故ならMVC系パターンは「楽に開発するために」あくまでもPDSに付随するメリットを手にいれるための手段なので、例えばModelの中の設計にタッチしていないわけで、サンプルコードにはその他の概念が含まれすぎています。 何種類か見てみましょう。

MVC系パターンの学習方法 責務に厳密な小規模なサンプル 例えば計算機レベルのサンプル 厳密に3つの責務にわけた所で、PDSの冗長さが目立つだけです。きちんと理論から到達したなら、PDSのメリットと冗長さというデメリットを比較して大抵こうはなりません。 サンプルとしての意図でこうなっているんでしょうが、その割にはメリットも伝えられません。

MVC系パターンの学習方法 適切に設計された小規模なサンプル 例えば計算機レベルのサンプル ViewModelをModelと統合しています。 計算機程度の小規模であるならば、大抵の場合あるべき姿です。でもこの姿からMVVMの姿って学べませんよね。

MVC系パターンの学習方法 大規模なサンプル えーと、単純に読むのがつらいです。。。。

MVC系パターンの学習方法 マーケティングサンプル① 例えばSilverlightのWCF RIA Service。 普通に考えればそれだけ使えばModel部分を全部代替できるというものではないのですが、 そういう代替できるシナリオをわざわざ用意したり、ViewModelの責務に微妙にModelが染み出したようなサンプルがMSさんの物には多いです。 マーケマーケ。仕方ないとは思います。。。

MVC系パターンの学習方法 マーケティングサンプル② 例えばASP.NET MVC3のスキャフォールディング。 ControllerからDBいぢれたりしちゃいます。 PlesentationPlatformはその進化の過程で”定型シナリオに簡単に対応するために”PDSを部分的に崩しすような機能を盛り込んできる事があります。 そしてこれが搭載されたMSさんが出してるようなASP.NET MVC3のサンプルは必然的にこの機能アピールが多くてつまりほとんどPDSが崩れているという。 でもCodePlexにあがっているような規模の大きいサンプルでは使っていないみたいですよ。PDSを崩すデメリットが大きくなるからでしょう。

MVC系パターンの学習方法 サンプルからMVVMの最大公約数を見つける旅 ここから概念を抽出?・・・。 × Model内の設計 ドメインロジックパターン だけでも TransactionScript DomainModel TableModule ・ etc

MVC系パターンの学習方法 サンプルからMVVMの最大公約数を見つける旅 ViewModelではコマンドを使う コードビハインドを書かない などと言った実装上の選択にすぎない事をMVVMの定義と紐づけます。しかしそれはやはりMVVMの定義とは関係がないものです。 そういった実装要素は、メリットとデメリットをしっかり見極めてご自身で状況によって取捨選択してください。 サンプルでの学習はそういった時に有用です。

MVC系パターンの学習方法 サンプルからMVVMの最大公約数を見つける旅 結論:いきなりサンプルからは無理なので横着しないできちんと概念から学びましょう。 まだ世の中に出て間もない新しいものは、そのプラットフォームの特徴を見極め、先ほどMVVMを導き出したように自分で検討してみるのもいいかもしれません。 そしたら周知してくださいね!

適用TIPS 5.MVC系パターンの適用Tips

適用Tips ここでは前章までに培った知見を使って世の中で言われがちな様々な課題を確認していきます。 理解度確認に一緒に考えていきましょう。 MVVMを基準で話します。

適用Tips Q.Modelはデータの入れ物? A.データの入れ物だとしたら値をつめるのはViewModelしかなくなりますよね。PDSは? 意図的に崩したのでないのであれば×。他のMVC系でも同様

適用Tips Q.ModelはEntityFrameworkとかRIA Service?

適用Tips Q.MVC系パターンをつかえば、Domainを共有できるはずだから例えばASP.NET MVCとWPFでModelを共有出来たりするんでしょうか? A.ドメインという言葉に惑わされすぎです。 Modelは「PlesentationPlatformと関係がない領域」です。 同じドメイン(問題領域)を解決するアプリを目指す以上、WebとリッチクライアントほどPlesentationPlatformがあまりにも違えば当然「それ以外」であるModelも変わってきます。無論部分的には共有できますが。×

まとめ 6.まとめ

まとめ PDSとは? PDSとは、アプリケーションを「プレゼンテーションに関わる部分」と「それ以外」に分ける考え方。 プレゼンテーションに関わる部分とは PlesentationPlatformのGUI構築部分(XAMLなどのDSLとコードビハインドなど) PlesentationPlatformの我儘に付き合う部分

まとめ MVC系パターンとは? MVC系パターンは、 プラットフォームの特徴をいかしてPDSを実現する事によりOOPのメリットとなる適切な責務分割や関心の分離が行え結果 保守性 変更容易性 大規模では開発生産性 などが確保できるもの。 その成り立ちからModelの内部の設計に関知しません。Modelの内部については別途検討が必要です。 すなわち当然の事ですがMVC系パターンは設計をアウトプットするための1要素でしかありません。

まとめ MVC系パターンとは? MVVMであれば、ViewとViewModelの責務は決定的です。よく 「今考えている処理をViewModelとModelのどちらに書けばいいかわからない」 という話を耳にしますが、 それはModelが曖昧な上にViewModelを橋渡しとしか思っていないからです

まとめ MVC系パターンとは? 真ん中にいるViewModelやControllerが必要以上に責務を負う事は、橋渡しもするからこそどんどん肥大する可能性があり危険なのです。 PDSを確保したいなら、ViewModelやControllerは極力薄くなるようにするべきです。欲しい機能はModel、あるいはViewのコントロールに持たせていきましょう。 あのControllerやPresenterやViewModelをも全て一言でくくる事になり何の説明にもなっていない橋渡し論は本当に罪深いものです。 しかし世間はそういった認識にあふれています。惑わされないようにしてください。

まとめ MVC系パターンとは? 楽をするためには時にはPDSで得られるメリットとデメリットを測りにかけて、PDSを崩すことも大事です。 あとサンプルコードから概念が学べると思わないように。。

ご清聴ありがとうございました!