SlideShare a Scribd company logo
JavascriptのMVC開発について調べてみた
∼BACKBONE.JS∼
未
発
表
13年5月26日日曜日
13年5月26日日曜日
13年5月26日日曜日
13年5月26日日曜日
13年5月26日日曜日
13年5月26日日曜日
13年5月26日日曜日
13年5月26日日曜日
13年5月26日日曜日
http://www.amazon.co.jp/Backbone-js%E3%82%AC
%E3%82%A4%E3%83%89%E3%83%96%E3%83%83%E3%82%AF-%E9%AB%98%E6%A9%8B-%E4%BE
%91%E4%B9%85/dp/4899773501
13年5月26日日曜日
13年5月26日日曜日
13年5月26日日曜日
13年5月26日日曜日
ボタン
2 回押したよ!
13年5月26日日曜日
Controller
View Model
①画面のボタン押した
ボタン
2 回押したよ!
13年5月26日日曜日
Controller
View Model
①画面のボタン押した
②ボタン押されたに気づく
Viewは知らないかも
ボタン
2 回押したよ!
13年5月26日日曜日
Controller
View Model
①画面のボタン押した
②ボタン押されたに気づく
Viewは知らないかも
③モデルを操作する
押した回数++
ボタン
2 回押したよ!
13年5月26日日曜日
Controller
View Model
①画面のボタン押した
②ボタン押されたに気づく
Viewは知らないかも
③モデルを操作する
押した回数++
④モデル変更に気づく
Modelは気づいてないかも
ボタン
2 回押したよ!
13年5月26日日曜日
Controller
View Model
①画面のボタン押した
②ボタン押されたに気づく
Viewは知らないかも
③モデルを操作する
押した回数++
④モデル変更に気づく
Modelは気づいてないかも
ボタン
2 回押したよ!
ボタン
3 回押したよ!
13年5月26日日曜日
13年5月26日日曜日
13年5月26日日曜日
Controller
View Model
この3つ役割がはっきりしているから
どこに何が記述されているのか分かりやすいのです!
13年5月26日日曜日
13年5月26日日曜日
テスト駆動開発(TDD - Test Driven Development)とは
テスト駆動開発は,小さなステップを繰り返してプログラムの設計と開発を行っていくソフト
ウェア開発手法です。テスト駆動開発は次の3ステップから構成されています。
• ステップ1:これから書く機能に対するテストを1つ書き,テストが失敗することを確認する
( レッド )
• ステップ2:ステップ1のテストを通す最低限のコードを実装する( グリーン )
• ステップ3:リファクタリングを行う( リファクタリング )
リファクタリングを行ったあとは,再度ステップ1に戻り,次に作成する機能のテストを書いてテ
ストを失敗させ,コードを書き,またリファクタリングを行い……というサイクルを回していき
ます。
http://tddbc.doorkeeper.jp/events/3472
13年5月26日日曜日
http://tddbc.doorkeeper.jp/events/3472
13年5月26日日曜日
13年5月26日日曜日
Modelのお仕事 
データの管理と計算をする係です。
もくもくと自分の仕事をこなします。
描画など他の処理に関心がありません。
➡誰にも依存しません!
Model
Controller
View Model
13年5月26日日曜日
Viewの仕事
ユーザとの窓口です。
ユーザ操作を受け付けます。
Modelデータを分かりやすい形で表示します。
Modelの事に関心があってデータ変更を感知する
事が出来ます。Modelに依存してます。
View
Controller
View Model
13年5月26日日曜日
Controllerの仕事
仲介人です。
Viewの操作イベントを感知して
Modelを操るのがお仕事です。
Viewの事もModelの事も良く知っている反面
ViewとModelに依存してます。
Controller
Controller
View Model
13年5月26日日曜日
ボタン
2 回押したよ!
13年5月26日日曜日
13年5月26日日曜日
13年5月26日日曜日
ボタン
2 回押したよ!
13年5月26日日曜日
// Backbone.Modelクラスをベースに拡張します。
var CountDataModel= Backbone.Model.extend({
// モデルが管理するデータの初期値
defaults: {
"count": 0 // :int 押した回数
},
// 押した回数取得
getCount: function (){
return this.get('count');
},
// 押した回数追加
countUp: function (){
var count= this.get('count');
count++;
this.set('count', count);
}
});
Model
13年5月26日日曜日
13年5月26日日曜日
Model // Backbone.Modelクラスをベースに拡張します。
var CountDataModel= Backbone.Model.extend({
// モデルが管理するデータの初期値
defaults: {
"count": 0 // :int 押した回数
},
// 押した回数取得
getCount: function (){
return this.get('count');
},
// 押した回数追加
countUp: function (){
var count= this.get('count');
count++;
this.set('count', count);
}
});
Backbone.Model.extend({
Backbone.Modelをベースに
プロパティやメソッドを追加できます。
機能を拡張(extend)してModelを作ります。
13年5月26日日曜日
Model // Backbone.Modelクラスをベースに拡張します。
var CountDataModel= Backbone.Model.extend({
// モデルが管理するデータの初期値
defaults: {
"count": 0 // :int 押した回数
},
// 押した回数取得
getCount: function (){
return this.get('count');
},
// 押した回数追加
countUp: function (){
var count= this.get('count');
count++;
this.set('count', count);
}
});
defaults:
Modelが持つデータの初期値を書きます。
未設定の時に自動で値が設定されます。
13年5月26日日曜日
Model // Backbone.Modelクラスをベースに拡張します。
var CountDataModel= Backbone.Model.extend({
// モデルが管理するデータの初期値
defaults: {
"count": 0 // :int 押した回数
},
// 押した回数取得
getCount: function (){
return this.get('count');
},
// 押した回数追加
countUp: function (){
var count= this.get('count');
count++;
this.set('count', count);
}
});
Controller向けメソッドを準備
外部Controllerからの操作を受け付けます。
13年5月26日日曜日
13年5月26日日曜日
ボタン
2 回押したよ!
13年5月26日日曜日
var CountView = Backbone.View.extend({
el:'#count_View',
initialize:function(){
this.listenTo(this.model,'change',this.render);
},
render:function(){
var count=this.model.getCount();
this.$el.find('.countUpNo').text( count );
},
events:{
'click button':'onClickButton'
},
onClickButton:function(e){
this.model.countUp();
}
});
Controller
View
注意 !! Σ(=o=
Viewという名前ですがController機能も含んでます!
13年5月26日日曜日
var CountView = Backbone.View.extend({
el:'#count_View',
initialize:function(){
this.listenTo(this.model,'change',this.render);
},
render:function(){
var count=this.model.getCount();
this.$el.find('.countUpNo').text( count );
},
events:{
'click button':'onClickButton'
},
onClickButton:function(e){
this.model.countUp();
}
});
Controller
View
Backbone.View.extend
Backbone.Viewをベースに
プロパティやメソッドを追加できます。
機能を拡張 (extend) して作ります
13年5月26日日曜日
var CountView = Backbone.View.extend({
el:'#count_View',
initialize:function(){
this.listenTo(this.model,'change',this.render);
},
render:function(){
var count=this.model.getCount();
this.$el.find('.countUpNo').text( count );
},
events:{
'click button':'onClickButton'
},
onClickButton:function(e){
this.model.countUp();
}
});
el:‘セレクタ’
このViewが管理するHTMLのDOMを指定します。
<section id="count_View" class="drop-shadow lifted" >
<div>
<span class="countUpNo" >0</span>回押したよ!
</div>
<div>
<button>押して!</button>
</div>
</section>
13年5月26日日曜日
var CountView = Backbone.View.extend({
el:'#count_View',
initialize:function(){
this.listenTo(this.model,'change',this.render);
},
render:function(){
var count=this.model.getCount();
this.$el.find('.countUpNo').text( count );
},
events:{
'click button':'onClickButton'
},
onClickButton:function(e){
this.model.countUp();
}
});
initialize:function(){
backboneの機能でインスタンス生成に呼ばれます。
listenTo(監視対象,‘イベント名’,動かすメソッド)
backboneの機能でModelの変更を監視してます。
13年5月26日日曜日
initialize:function(){
this.listenTo(this.model,'change',this.render);
},
render:function(){
var count=this.model.getCount();
this.$('.countUpNo').text( count );
},
events:{
'click button':'onClickButton'
},
onClickButton:function(e){
this.model.countUp();
}
});
<section id="count_View" class="drop-shadow lifted" >
<div>
<span class="countUpNo" >0</span>回押したよ!
</div>
Model変更時に起動する関数を書きます
主に描画処理になります。
this.$(‘セレクタ’)
Viewが管理している範囲で検索して高速です。
$(‘セレクタ’)=$el.find(‘セレクタ’)
13年5月26日日曜日
el:'#count_View',
initialize:function(){
this.listenTo(this.model,'change',this.render);
},
render:function(){
var count=this.model.getCount();
this.$el.find('.countUpNo').text( count );
},
events:{
'click button':'onClickButton'
},
onClickButton:function(e){
this.model.countUp();
}
});
<section id="count_View" class="drop-shadow lifted" >
<div>
<span class="countUpNo" >0</span>回押したよ!
</div>
<div>
<button>押して!</button>
</div>
events:{’イベント名 セレクタ名’:呼出メソッド}
View内部で発生するイベントを監視します。
13年5月26日日曜日
var CountView = Backbone.View.extend({
el:'#count_View',
initialize:function(){
this.listenTo(this.model,'change',this.render);
},
render:function(){
var count=this.model.getCount();
this.$el.find('.countUpNo').text( count );
},
events:{
'click button':'onClickButton'
},
onClickButton:function(e){
this.model.countUp();
}
});
Modelを操作するメソッド
Modelを操作します。(Controllerの役割)
13年5月26日日曜日
13年5月26日日曜日
// DOMの読み込み完了時
// 最初に起動する処理( jQueryの機能 )
$(function(){
var model = new CountDataModel();
var view = new CountView({model:model});
});
ModelとView生成
画面が読込みの所でModelとViewを生成して完成です!
13年5月26日日曜日
http://jsdo.it/itoKami1123/xMqT/
13年5月26日日曜日
13年5月26日日曜日
13年5月26日日曜日
13年5月26日日曜日

More Related Content

More from Toshio Ehara

Java電卓勉強会資料
Java電卓勉強会資料Java電卓勉強会資料
Java電卓勉強会資料
Toshio Ehara
 

More from Toshio Ehara (20)

iPhoneアプリを Javaで書くよ?
iPhoneアプリを Javaで書くよ?iPhoneアプリを Javaで書くよ?
iPhoneアプリを Javaで書くよ?
 
Java初心者勉強会(2015/08/07)資料
Java初心者勉強会(2015/08/07)資料Java初心者勉強会(2015/08/07)資料
Java初心者勉強会(2015/08/07)資料
 
Java電卓勉強会資料
Java電卓勉強会資料Java電卓勉強会資料
Java電卓勉強会資料
 
BABELで、ES2015(ES6)を学ぼう!
BABELで、ES2015(ES6)を学ぼう!BABELで、ES2015(ES6)を学ぼう!
BABELで、ES2015(ES6)を学ぼう!
 
AngularJSで業務システムUI部品化
AngularJSで業務システムUI部品化AngularJSで業務システムUI部品化
AngularJSで業務システムUI部品化
 
traceur-compilerで ECMAScript6を体験
traceur-compilerで ECMAScript6を体験traceur-compilerで ECMAScript6を体験
traceur-compilerで ECMAScript6を体験
 
traceur-compilerで未来のJavaScriptを体験
traceur-compilerで未来のJavaScriptを体験traceur-compilerで未来のJavaScriptを体験
traceur-compilerで未来のJavaScriptを体験
 
AngularJS入門の巻2
AngularJS入門の巻2AngularJS入門の巻2
AngularJS入門の巻2
 
JenkinsをJava開発でこんな感じで使っています
JenkinsをJava開発でこんな感じで使っていますJenkinsをJava開発でこんな感じで使っています
JenkinsをJava開発でこんな感じで使っています
 
AngularJS入門の巻
AngularJS入門の巻AngularJS入門の巻
AngularJS入門の巻
 
AngularJS+TypeScriptを試してみた。
AngularJS+TypeScriptを試してみた。AngularJS+TypeScriptを試してみた。
AngularJS+TypeScriptを試してみた。
 
AngularJSのDirectiveで俺俺タグつくっちゃお
AngularJSのDirectiveで俺俺タグつくっちゃおAngularJSのDirectiveで俺俺タグつくっちゃお
AngularJSのDirectiveで俺俺タグつくっちゃお
 
HTML5のCanvas入門 - Img画像を編集してみよう -
HTML5のCanvas入門 - Img画像を編集してみよう -HTML5のCanvas入門 - Img画像を編集してみよう -
HTML5のCanvas入門 - Img画像を編集してみよう -
 
福岡のIT勉強会情報の集め方(LT資料)
福岡のIT勉強会情報の集め方(LT資料)福岡のIT勉強会情報の集め方(LT資料)
福岡のIT勉強会情報の集め方(LT資料)
 
BACKBONE.JSによるWebアプリケーション開発について
BACKBONE.JSによるWebアプリケーション開発についてBACKBONE.JSによるWebアプリケーション開発について
BACKBONE.JSによるWebアプリケーション開発について
 
BACKBONE.JSにJasmineでテストコード書いてみた (LT資料)
BACKBONE.JSにJasmineでテストコード書いてみた (LT資料)BACKBONE.JSにJasmineでテストコード書いてみた (LT資料)
BACKBONE.JSにJasmineでテストコード書いてみた (LT資料)
 
【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜
【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜
【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜
 
LT Leap MotionとJavaScriptで遊ぼう!
LT Leap MotionとJavaScriptで遊ぼう!LT Leap MotionとJavaScriptで遊ぼう!
LT Leap MotionとJavaScriptで遊ぼう!
 
JavaScriptもBACKBONE.JSならスッキリ ~MVCぽいのを初体験!~
JavaScriptもBACKBONE.JSならスッキリ ~MVCぽいのを初体験!~JavaScriptもBACKBONE.JSならスッキリ ~MVCぽいのを初体験!~
JavaScriptもBACKBONE.JSならスッキリ ~MVCぽいのを初体験!~
 
はじめてのjQuery入門 01 2013年7月14日(日)
はじめてのjQuery入門 01 2013年7月14日(日)はじめてのjQuery入門 01 2013年7月14日(日)
はじめてのjQuery入門 01 2013年7月14日(日)
 

JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜