SlideShare a Scribd company logo
1 of 23
2014.12.12 Fringe81勉強会 
クライアントサイド 
MVVMアーキテクチャ 
とVue.jsをまとめたよ 
presented by Hosomichi 
copyright Fringe81 Co.,Ltd. - -
copyright Fringe81 Co.,Ltd. - - 
シナリオと狙い 
・クライアントサイドMV**とは 
・クライアントサイドMV**の意義 
・MVVMとは何ぞやを理解する 
・Vue.jsデモを通してMVVMを感じる 
・Vue.js開発時にどこに何を書くか、 
どのような命名にすべきかがイメージできる
クライアントサイド 
MV**? 
copyright Fringe81 Co.,Ltd. - -
クライアントサイドMV** 
とサーバサイドMVC 
Model 
Controller 
copyright Fringe81 Co.,Ltd. - - 
View 
これをサーバサイドとすると
クライアントサイドMV** 
とサーバサイドMVC 
copyright Fringe81 Co.,Ltd. - - 
** 
View Model 
Controller 
View Model
クライアントサイドMV**の意義 
・Viewの肥大化を防ぐ 
・デザイン(html/css)と 
データ/ロジック(js)を分離 
copyright Fringe81 Co.,Ltd. - -
copyright Fringe81 Co.,Ltd. - - 
MV** 
MVC 
MVW 
MVP 
MVVM
MVC 
MVW 
MVP 
MVVM 
copyright Fringe81 Co.,Ltd. - - 
MV**
MVVM 
(Model-View-ViewModel) 
もともとは.NETの概念でWebとPC両面からの 
UI実装の黄金パターンを模索する過程から生まれたらしい 
copyright Fringe81 Co.,Ltd. - -
クライアントMVVMざっくり 
View 
Model 
Model 
copyright Fringe81 Co.,Ltd. - - 
View 
(DOM) 
Viewの部品を抽象化 
インスタンス保持 
双方向データバインディング 
インスタンス保持 
双方向データバインディング
例えば銀行振込フォーム 
Viewの部品を抽象化 
paymentForm 
account 
インスタンス保持 
双方向データバインディング 
copyright Fringe81 Co.,Ltd. - - 
1画面にVMは何個あっ 
てもいい 
インスタンス保持 
双方向データバインディング 
payment.html 
branch bank 
1VMは何モデル保持し 
てもいい
ViewPartsの抽象化ができると 
★この辺がうれしい 
1部品を複数画面に配置することが 
容易であり、 
1部品のロジック変更の複数画面へ 
の反映も容易 
HTML部品と 
プログラミングロジックの 
親密度が高まって自然な感じ❤ 
copyright Fringe81 Co.,Ltd. - - 
銀行振込フォーム 
直接 
【Mapping】 
#payment_form 
振込画面 
残高照会 
からの 
振込画面
ここまではMVVMのお話でした。 
どうやってVMはMやVの 
インスタンスを管理するの? 
についてはフレームワークそれぞれの 
実装次第に依るのです。 
copyright Fringe81 Co.,Ltd. - -
で、Vue.js 
copyright Fringe81 Co.,Ltd. - -
・MVVMアーキテクチャを採用したクライアントJSフレームワーク 
・angularJS(MVW)に似ているが、機能が絞られシンプルでソリッド 
copyright Fringe81 Co.,Ltd. - -
copyright Fringe81 Co.,Ltd. - - 
簡単なVue.jsデモ 
ポイント 
・双方向データバインディングを感じる(生と比較) 
・モデル側の値を書き換えると? 
・VMがフォームを抽象化したインスタンスとなっていること 
・ビューとモデルの疎結合っぷり(ロジック配置の自然さ) 
・jQueryがグジャグジャ書いてあったりしてなくて整然としている
copyright Fringe81 Co.,Ltd. - - 
簡単なVue.jsデモ 
Viewの変更監視 
Viewの値を変更すると参照して 
いる角要素の内容が同期して書 
きかわる 
モデルの値も同期して書きかわ 
る
copyright Fringe81 Co.,Ltd. - - 
簡単なVue.jsデモ 
Modelの変更監視 
Modelの値を直接書き換えると 
View側も同期して書きかわる 
この辺が 
双方向データバインディング 
の挙動でありMV**が強みとし 
ている部分の一つですね
copyright Fringe81 Co.,Ltd. - - 
Model 
今回はコンストラクタにしてみた。 
シングルトンならオブジェクトリテラルでもいいっすね。
シンプルなViewが構成できる(JSコード書かない!) 
vue.js 
マスタッシュ 
ディレクティブ 
MとVMロード 
copyright Fringe81 Co.,Ltd. - - 
View
ビューのインスタンス保持 
モデルのインスタンス保持 
バインドデータ変更時イベント 
copyright Fringe81 Co.,Ltd. - - 
ViewModel
copyright Fringe81 Co.,Ltd. - - 
構成について 
・モデルのモジュールをクラスファイルを作って設置した 
(公式デモなどを見る限りモデルは値となっており、オブジェクト(構造体)にはなっていない) 
・ビューモデルもクラスファイルを作って設置した 
・ビューは尋常じゃなくすっきり 
・デザイナーはディレクティブだけでも覚えてくれると連携しやすい
以上でっす! 
「JSおくのほそ道」 
もよろしくです(PR広告) 
http://qiita.com/setzz 
copyright Fringe81 Co.,Ltd. - -

More Related Content

What's hot

Knockout.js を利用したインタラクティブ web アプリケーション開発
Knockout.js を利用したインタラクティブ web アプリケーション開発Knockout.js を利用したインタラクティブ web アプリケーション開発
Knockout.js を利用したインタラクティブ web アプリケーション開発Daizen Ikehara
 
作って分かるKnockoutJS@ALM11月
作って分かるKnockoutJS@ALM11月作って分かるKnockoutJS@ALM11月
作って分かるKnockoutJS@ALM11月Takuya Ueda
 
KnockoutJSを使用したアプリケーションの構築例
KnockoutJSを使用したアプリケーションの構築例KnockoutJSを使用したアプリケーションの構築例
KnockoutJSを使用したアプリケーションの構築例masakazusegawa
 
DevLOVE Kansai KnockoutJS
DevLOVE Kansai KnockoutJSDevLOVE Kansai KnockoutJS
DevLOVE Kansai KnockoutJSGo Tanaka
 
( ゚∀゚)o彡° Flux! Flux!
( ゚∀゚)o彡° Flux! Flux!( ゚∀゚)o彡° Flux! Flux!
( ゚∀゚)o彡° Flux! Flux!Yuki Ishikawa
 
Vue.js 2.0を試してみた
Vue.js 2.0を試してみたVue.js 2.0を試してみた
Vue.js 2.0を試してみたToshiro Shimizu
 
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
ASP.NET MVC と jQuery で実践する標準志向 Web 開発ASP.NET MVC と jQuery で実践する標準志向 Web 開発
ASP.NET MVC と jQuery で実践する標準志向 Web 開発Akira Inoue
 
Flux react現状確認会
Flux react現状確認会Flux react現状確認会
Flux react現状確認会VOYAGE GROUP
 
ASP.NET MVC プログラミング入門の入門
ASP.NET MVC プログラミング入門の入門ASP.NET MVC プログラミング入門の入門
ASP.NET MVC プログラミング入門の入門Masuda Tomoaki
 
AngularJSを浅めに紹介します
AngularJSを浅めに紹介しますAngularJSを浅めに紹介します
AngularJSを浅めに紹介しますnkazuki
 
エンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJSエンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJSAyumi Goto
 
T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門normalian
 
~初心者がこれから Web アプリの開発をするために~
~初心者がこれから Web アプリの開発をするために~~初心者がこれから Web アプリの開発をするために~
~初心者がこれから Web アプリの開発をするために~Oda Shinsuke
 
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発Daizen Ikehara
 
プロダクトに 1 から Vue.js を導入した話
プロダクトに 1 から Vue.js を導入した話プロダクトに 1 から Vue.js を導入した話
プロダクトに 1 から Vue.js を導入した話Shohei Okada
 
Laravel Blade×vue.js 混在させる場合の注意点
Laravel Blade×vue.js 混在させる場合の注意点Laravel Blade×vue.js 混在させる場合の注意点
Laravel Blade×vue.js 混在させる場合の注意点誠一郎 栗原
 
RailsでReact.jsを動かしてみた話
RailsでReact.jsを動かしてみた話RailsでReact.jsを動かしてみた話
RailsでReact.jsを動かしてみた話yoshioka_cb
 
Angular js はまりどころ
Angular js はまりどころAngular js はまりどころ
Angular js はまりどころAyumi Goto
 

What's hot (20)

Knockout.js を利用したインタラクティブ web アプリケーション開発
Knockout.js を利用したインタラクティブ web アプリケーション開発Knockout.js を利用したインタラクティブ web アプリケーション開発
Knockout.js を利用したインタラクティブ web アプリケーション開発
 
作って分かるKnockoutJS@ALM11月
作って分かるKnockoutJS@ALM11月作って分かるKnockoutJS@ALM11月
作って分かるKnockoutJS@ALM11月
 
KnockoutJSを使用したアプリケーションの構築例
KnockoutJSを使用したアプリケーションの構築例KnockoutJSを使用したアプリケーションの構築例
KnockoutJSを使用したアプリケーションの構築例
 
DevLOVE Kansai KnockoutJS
DevLOVE Kansai KnockoutJSDevLOVE Kansai KnockoutJS
DevLOVE Kansai KnockoutJS
 
( ゚∀゚)o彡° Flux! Flux!
( ゚∀゚)o彡° Flux! Flux!( ゚∀゚)o彡° Flux! Flux!
( ゚∀゚)o彡° Flux! Flux!
 
Vue.js 2.0を試してみた
Vue.js 2.0を試してみたVue.js 2.0を試してみた
Vue.js 2.0を試してみた
 
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
ASP.NET MVC と jQuery で実践する標準志向 Web 開発ASP.NET MVC と jQuery で実践する標準志向 Web 開発
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
 
Flux react現状確認会
Flux react現状確認会Flux react現状確認会
Flux react現状確認会
 
ASP.NET MVC プログラミング入門の入門
ASP.NET MVC プログラミング入門の入門ASP.NET MVC プログラミング入門の入門
ASP.NET MVC プログラミング入門の入門
 
AngularJSを浅めに紹介します
AngularJSを浅めに紹介しますAngularJSを浅めに紹介します
AngularJSを浅めに紹介します
 
エンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJSエンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJS
 
T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門
 
20140322
2014032220140322
20140322
 
~初心者がこれから Web アプリの開発をするために~
~初心者がこれから Web アプリの開発をするために~~初心者がこれから Web アプリの開発をするために~
~初心者がこれから Web アプリの開発をするために~
 
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
 
20120128
2012012820120128
20120128
 
プロダクトに 1 から Vue.js を導入した話
プロダクトに 1 から Vue.js を導入した話プロダクトに 1 から Vue.js を導入した話
プロダクトに 1 から Vue.js を導入した話
 
Laravel Blade×vue.js 混在させる場合の注意点
Laravel Blade×vue.js 混在させる場合の注意点Laravel Blade×vue.js 混在させる場合の注意点
Laravel Blade×vue.js 混在させる場合の注意点
 
RailsでReact.jsを動かしてみた話
RailsでReact.jsを動かしてみた話RailsでReact.jsを動かしてみた話
RailsでReact.jsを動かしてみた話
 
Angular js はまりどころ
Angular js はまりどころAngular js はまりどころ
Angular js はまりどころ
 

Similar to クライアントサイドMVVMアーキテクチャとVue.jsをまとめたよ

いまさら学ぶMVVMパターン
いまさら学ぶMVVMパターンいまさら学ぶMVVMパターン
いまさら学ぶMVVMパターンYuta Matsumura
 
MAF2013 Enterprise Windows 8 – Architecture for rapid development of WinRT apps
MAF2013 Enterprise Windows 8 – Architecture for rapid development of WinRT appsMAF2013 Enterprise Windows 8 – Architecture for rapid development of WinRT apps
MAF2013 Enterprise Windows 8 – Architecture for rapid development of WinRT appsShotaro Suzuki
 
Xamarin+MVVMCross のあれこれ
Xamarin+MVVMCross のあれこれXamarin+MVVMCross のあれこれ
Xamarin+MVVMCross のあれこれShinichiAoyagi
 
20130312 OpenStack Day Tokyo プレゼン資料
20130312 OpenStack Day Tokyo プレゼン資料20130312 OpenStack Day Tokyo プレゼン資料
20130312 OpenStack Day Tokyo プレゼン資料Takeshi Nakajima
 
20140322 mvvm crossforwindowsstoreapps-pdf
20140322 mvvm crossforwindowsstoreapps-pdf20140322 mvvm crossforwindowsstoreapps-pdf
20140322 mvvm crossforwindowsstoreapps-pdfTakayoshi Tanaka
 
【VMware】jp developer-summit_2012_final_for_print
【VMware】jp developer-summit_2012_final_for_print【VMware】jp developer-summit_2012_final_for_print
【VMware】jp developer-summit_2012_final_for_printVMwareKK
 
2012-08-28 アカデミッククラウドシンポジウム(公開版)「クライアント向け仮想化ソフトウェアBitVisorのクラウドへの応用」
2012-08-28 アカデミッククラウドシンポジウム(公開版)「クライアント向け仮想化ソフトウェアBitVisorのクラウドへの応用」2012-08-28 アカデミッククラウドシンポジウム(公開版)「クライアント向け仮想化ソフトウェアBitVisorのクラウドへの応用」
2012-08-28 アカデミッククラウドシンポジウム(公開版)「クライアント向け仮想化ソフトウェアBitVisorのクラウドへの応用」Takahiro Shinagawa
 
App controllerとSPFで実現するハイブリッドクラウド
App controllerとSPFで実現するハイブリッドクラウドApp controllerとSPFで実現するハイブリッドクラウド
App controllerとSPFで実現するハイブリッドクラウドTakashi Kanai
 
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 EastiOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 Eastirgaly
 
ついに始まるJava EE 7時代のアプリケーション開発
ついに始まるJava EE 7時代のアプリケーション開発ついに始まるJava EE 7時代のアプリケーション開発
ついに始まるJava EE 7時代のアプリケーション開発Takakiyo Tanaka
 
Japan Developer Summit (jp) - Cloud Foundry, the Open Platform As A Service
Japan Developer Summit (jp) - Cloud Foundry, the Open Platform As A ServiceJapan Developer Summit (jp) - Cloud Foundry, the Open Platform As A Service
Japan Developer Summit (jp) - Cloud Foundry, the Open Platform As A ServicePatrick Chanezon
 
20140322 mvvm crossforwindowsstoreapps
20140322 mvvm crossforwindowsstoreapps20140322 mvvm crossforwindowsstoreapps
20140322 mvvm crossforwindowsstoreappsTakayoshi Tanaka
 
Xamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツXamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツMasuda Tomoaki
 
Kubernetes に開かれる新しい海 -Project Pacific とは?-
Kubernetes に開かれる新しい海 -Project Pacific とは?-Kubernetes に開かれる新しい海 -Project Pacific とは?-
Kubernetes に開かれる新しい海 -Project Pacific とは?-Masahiro Tabuki
 
Hinemosで最大化する、クラウド活用メリット
Hinemosで最大化する、クラウド活用メリットHinemosで最大化する、クラウド活用メリット
Hinemosで最大化する、クラウド活用メリットHinemos
 
20200708サーバーレスでのAPI管理の考え方
20200708サーバーレスでのAPI管理の考え方20200708サーバーレスでのAPI管理の考え方
20200708サーバーレスでのAPI管理の考え方Amazon Web Services Japan
 
Javaプログラマーももう逃げられない。マイクロサービスとAPIの世界。
Javaプログラマーももう逃げられない。マイクロサービスとAPIの世界。Javaプログラマーももう逃げられない。マイクロサービスとAPIの世界。
Javaプログラマーももう逃げられない。マイクロサービスとAPIの世界。Takakiyo Tanaka
 
VMware Cloud on AWS のご紹介 -セキュリティ風味-
VMware Cloud on AWS のご紹介  -セキュリティ風味- VMware Cloud on AWS のご紹介  -セキュリティ風味-
VMware Cloud on AWS のご紹介 -セキュリティ風味- Mitsutaka Ohisa
 

Similar to クライアントサイドMVVMアーキテクチャとVue.jsをまとめたよ (20)

いまさら学ぶMVVMパターン
いまさら学ぶMVVMパターンいまさら学ぶMVVMパターン
いまさら学ぶMVVMパターン
 
MAF2013 Enterprise Windows 8 – Architecture for rapid development of WinRT apps
MAF2013 Enterprise Windows 8 – Architecture for rapid development of WinRT appsMAF2013 Enterprise Windows 8 – Architecture for rapid development of WinRT apps
MAF2013 Enterprise Windows 8 – Architecture for rapid development of WinRT apps
 
Xamarin+MVVMCross のあれこれ
Xamarin+MVVMCross のあれこれXamarin+MVVMCross のあれこれ
Xamarin+MVVMCross のあれこれ
 
20130312 OpenStack Day Tokyo プレゼン資料
20130312 OpenStack Day Tokyo プレゼン資料20130312 OpenStack Day Tokyo プレゼン資料
20130312 OpenStack Day Tokyo プレゼン資料
 
20140322 mvvm crossforwindowsstoreapps-pdf
20140322 mvvm crossforwindowsstoreapps-pdf20140322 mvvm crossforwindowsstoreapps-pdf
20140322 mvvm crossforwindowsstoreapps-pdf
 
MVVM入門
MVVM入門MVVM入門
MVVM入門
 
【VMware】jp developer-summit_2012_final_for_print
【VMware】jp developer-summit_2012_final_for_print【VMware】jp developer-summit_2012_final_for_print
【VMware】jp developer-summit_2012_final_for_print
 
2012-08-28 アカデミッククラウドシンポジウム(公開版)「クライアント向け仮想化ソフトウェアBitVisorのクラウドへの応用」
2012-08-28 アカデミッククラウドシンポジウム(公開版)「クライアント向け仮想化ソフトウェアBitVisorのクラウドへの応用」2012-08-28 アカデミッククラウドシンポジウム(公開版)「クライアント向け仮想化ソフトウェアBitVisorのクラウドへの応用」
2012-08-28 アカデミッククラウドシンポジウム(公開版)「クライアント向け仮想化ソフトウェアBitVisorのクラウドへの応用」
 
App controllerとSPFで実現するハイブリッドクラウド
App controllerとSPFで実現するハイブリッドクラウドApp controllerとSPFで実現するハイブリッドクラウド
App controllerとSPFで実現するハイブリッドクラウド
 
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 EastiOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
 
Vco rest api_overview_rev02
Vco rest api_overview_rev02Vco rest api_overview_rev02
Vco rest api_overview_rev02
 
ついに始まるJava EE 7時代のアプリケーション開発
ついに始まるJava EE 7時代のアプリケーション開発ついに始まるJava EE 7時代のアプリケーション開発
ついに始まるJava EE 7時代のアプリケーション開発
 
Japan Developer Summit (jp) - Cloud Foundry, the Open Platform As A Service
Japan Developer Summit (jp) - Cloud Foundry, the Open Platform As A ServiceJapan Developer Summit (jp) - Cloud Foundry, the Open Platform As A Service
Japan Developer Summit (jp) - Cloud Foundry, the Open Platform As A Service
 
20140322 mvvm crossforwindowsstoreapps
20140322 mvvm crossforwindowsstoreapps20140322 mvvm crossforwindowsstoreapps
20140322 mvvm crossforwindowsstoreapps
 
Xamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツXamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツ
 
Kubernetes に開かれる新しい海 -Project Pacific とは?-
Kubernetes に開かれる新しい海 -Project Pacific とは?-Kubernetes に開かれる新しい海 -Project Pacific とは?-
Kubernetes に開かれる新しい海 -Project Pacific とは?-
 
Hinemosで最大化する、クラウド活用メリット
Hinemosで最大化する、クラウド活用メリットHinemosで最大化する、クラウド活用メリット
Hinemosで最大化する、クラウド活用メリット
 
20200708サーバーレスでのAPI管理の考え方
20200708サーバーレスでのAPI管理の考え方20200708サーバーレスでのAPI管理の考え方
20200708サーバーレスでのAPI管理の考え方
 
Javaプログラマーももう逃げられない。マイクロサービスとAPIの世界。
Javaプログラマーももう逃げられない。マイクロサービスとAPIの世界。Javaプログラマーももう逃げられない。マイクロサービスとAPIの世界。
Javaプログラマーももう逃げられない。マイクロサービスとAPIの世界。
 
VMware Cloud on AWS のご紹介 -セキュリティ風味-
VMware Cloud on AWS のご紹介  -セキュリティ風味- VMware Cloud on AWS のご紹介  -セキュリティ風味-
VMware Cloud on AWS のご紹介 -セキュリティ風味-
 

クライアントサイドMVVMアーキテクチャとVue.jsをまとめたよ