MVVMはどんなアプリを作るときも標準の考え方 M :Model DBやクラウドサービスから入手したデータを入れる箱 V: View 画面に表示して、人間がデータの内容を確認出来るようにする VM : View Model 画面(V) に表示するために、モデル(M) を複製して、その画面用のモデル(VM) とする※ 2005年頃 Microsoft で提案され、.net Framework 3.0 から採用。JavaScript や Android にも普及29
30.
MVVM : Model– View – View Model の動き DBやクラウドから取得した Model を、画面用の View Model に格納 画面にデータバインドで表示 双方向バインドなら V でユーザーが値を変える VM も変わる プログラムで今度は逆に VM から M に格納、それぞれDBやクラウドに保存する30“A” Model“C” View Model View “C”Database “A”Cloud Service “B” “B” ModelデータバインドData BindingWeb API, WCFEntity Framework, LINQ to SQL
イベントでプロパティを代入するのは古典的 Console アプリでは前から順に値を出力すればいい昔の Windows / Web はその考え方の延長「イベントでプロパティ代入」で実装されていた Windows / Web / App 画面を伴うアプリは全てユーザーの入力がある 現代のアプリは DB や複数のクラウドサービスから値を取得・保存する 非同期で(リアルタイムに)画面が更新される イベントとプロパティ代入では対応出来ない = データバインドが必要32
33.
昔よく見られた失敗 = 偽3層アーキテクチャ画面・ロジック・データアクセスを分離する考えは以前からあった 分離する強力な「仕組み」が無かったため、意図を守れない実装も多数 DLL(Visual Studio プロジェクト)は分かれているのに、実際にはプレゼンテーション層に全てのロジックが実装されている場合も・・・33Data Tier?Method “A”Method “B”Method “C”BusinessLogic Tier?Method “A”Method “B”Method “C”Presentation Tier?事実上、全ロジックが実装されているCall Method “A”Call Method “B”Call Method “C”DatabaseSQL Query Call A, B, C Call A, B, CMVVMで解決
34.
境界を越えるときは必ずテスト済みであること 責任の所在が明確 DBから M を正しく取得することがテスト済み M から VM を正しく作れることがテスト済み バグがなく正常に動くはず VM を V にバインド出来ることがテスト済み34“A” Model“C” View Model View “C”Database “A”Cloud Service “B” “B” ModelデータバインドData BindingWeb API, WCFEntity Framework, LINQ to SQL簡単に品質を保てる
作成するもの別 デスクトップ( WPF,Windows Forms, Windows Service , Console ) Web ( ASP.net SPA, Web API, ASP.net MVC, ASP.net ) スマートデバイス アプリ( Windows Store, Windows Phone, Xamarin.iOS ) Office ( Office ストアアプリ, デスクトップ Office 拡張機能, Exchange, SharePoint ) 通信のみ( WCF, .net Remoting ) Visual Studio( 拡張機能, 言語, プロジェクト )※ SDK の追加インストールや製品の購入が必要なものも含みます。ゲームは Unity や Direct X の知識が必要。※ 他に IoT (Internet of Things)、機械学習などが今後のトレンドです。74
テスト F5デバッグ(ローカル, リモート,エミュレータ) 単体テスト(ローカル, 自動ビルド・自動テスト) コード化されたUIテスト ロードテスト(Visual Studio Ultimate, Visual Studio Online シンプル) テストケース・バグトラッキングシステム ラボ管理76
77.
配置(デプロイ) Windows Installerセットアップの作成(Visual Studio Installer) 発行(Web, ClickOnce, FTP, ファイルコピー) Azure 発行 ストアに登録(Windows Store, Windows Phone, Office Apps ) Release Management Windows Azure への継続的な配信(Visual Studio Online)77