SlideShare a Scribd company logo
1 of 135
Download to read offline
ブラウザサイド MVC 入門




http://www.flickr.com/photos/39943270@N07/6276483269




                                                         Sapporo.js
SaCSS vol.40           - 2012.12.15             佐藤 竜之介(Ryunosuke SATO)
提供
Community for people who like JavaScript.




      Sapporo.js
自己紹介
Sapporo.js




http://sapporojs.org
Sapporo.js - 2012.12.16




Backbone.js handson: @onjiro_mohyahya
     http://connpass.com/event/1368/
@tricknotes
/*
 * PR
 * Important!
JavaScript 道場

        超豪華講師
JavaScript コーディング実践
      練習!練習!練習!
 2013.02.23(土)@札幌市産業振興センター
JavaScript 道場

                    on . ..
        超豪華講師
          in g so
  o m m
JavaScript コーディング実践
C     練習!練習!練習!
 2013.02.23(土)@札幌市産業振興センター
*/
よろしく
お願いします
ブラウザサイド MVC 入門




http://www.flickr.com/photos/39943270@N07/6276483269




                                                         Sapporo.js
SaCSS vol.40           - 2012.12.15             佐藤 竜之介(Ryunosuke SATO)
本発表について
【開発編】ブラウザサイド MVC 入門(佐藤竜之介)

画面遷移を行わず、1枚の html 上で対話的に操作するような web アプリケーションを目にする機会が増えてきまし
た。
そんなアプリケーションを開発する際、jQuery 主体だったこれまでの開発スタイルだと画面表示と機能が切り離せなく
なってしまい、変更に弱い作りになってしまうことになるでしょう。

この問題に対処するにはどうすればよいでしょう?

そんなときは先人の知恵を参考に、その解決策を探してみるのはいかがでしょうか。
ユーザからのインタラクションを受け付けるアプリケーションを上手く構築していく際のやり方として、MVC パターン
が広く知られています。

本セッションでは、ブラウザ上での JavaScript の MVC の原点を辿り、その実装のひとつである Backbone.js を例に
とって、整理されたコードについて考えてみたいと思います。



【        編】     を利用した開発環境パワーアップ講座(やまがあつ)




      http://www.sacss.net/special03/
はじめに
ちょっと考えてみましょう
お題
「やることリストを作ってください」

* タスクを登録できること
* 完了したタスクをチェックできること
* タスクを消すことができること
Sample
http://tasklist-demo.herokuapp.com/
?
            ?
どんなアプローチをとりますか
例えば...
  jQuery だけ使って、
ひとつひとつ作っていった場合
* enter が押されると...
 * テキストを取得してやることを追加する
 * 全件数をひとつ増やす
* checkbox が変化すると...
 * やることに取り消し線を引く
 * 完了件数を増やす
* 削除ボタンを押すと...
 * やることを削除する
 * 件数をひとつ減らす
* enter が押されると...
                        * テキストを取得してやることを追加する
                        * 全件数をひとつ増やす




* checkbox が変化すると...
 * やることに取り消し線を引く       * 削除ボタンを押すと...

 * 完了件数を増やす             * やることを削除する
                        * 件数をひとつ減らす
* enter が押されると...
                        * テキストを取得してやることを追加する
                        * 全件数をひとつ増やす




* checkbox が変化すると...
 * やることに取り消し線を引く       * 削除ボタンを押すと...

 * 完了件数を増やす             * やることを削除する
                        * 件数をひとつ減らす
「ところでさ、
  終わったタスクを
まとめて削除したいんだ
    けど...」
http://commonpost.boo.jp/?attachment_id=21729




                                      えっ
* まとめて削除ボタンを押すと...
 * チェックがついているタスクを探す
 * チェックがついているタスクを削除する
 * 全件数を更新する
 * 完了件数を更新する
* enter が押されると...
 * まとめて削除ボタンを押すと...        * テキストを取得してやることを追加する
   * チェックがついているタスクを探す      * 全件数をひとつ増やす
   * チェックがついているタスクを削除する
   * 全件数を更新する
   * 完了件数を更新する




* checkbox が変化すると...
 * やることに取り消し線を引く          * 削除ボタンを押すと...

 * 完了件数を増やす                * やることを削除する
                           * 件数をひとつ減らす
* enter が押されると...
 * まとめて削除ボタンを押すと...        * テキストを取得してやることを追加する
   * チェックがついているタスクを探す      * 全件数をひとつ増やす
   * チェックがついているタスクを削除する
   * 全件数を更新する
   * 完了件数を更新する




* checkbox が変化すると...
 * やることに取り消し線を引く          * 削除ボタンを押すと...

 * 完了件数を増やす                * やることを削除する
                           * 件数をひとつ減らす
http://livedoor.3.blogimg.jp/hamusoku/imgs/b/a/ba9d0808.jpg




                                  複雑
これについてはまた後で :-)
今日のお品書き
* MVC の背景
* MVC って何?
* ブラウザの中でのMVC
* MVC の背景
* MVC って何?
* ブラウザの中でのMVC
最初の例

  ひとつひとつ作って、
だいぶ複雑になってしまっていた
http://www.flickr.com/photos/pappuradonkarume/4711288623




変更が困難
?
             ?
この複雑さの原因は何でしょう
* enter が押されると...
                        * テキストを取得してやることを追加する
                        * 全件数をひとつ増やす




* checkbox が変化すると...
 * やることに取り消し線を引く       * 削除ボタンを押すと...

 * 完了件数を増やす             * やることを削除する
                        * 件数をひとつ減らす
入力フォーム   リスト表示


完了チェック   取り消し線


削除ボタン    件数表示
入力フォーム    リスト表示


完了チェック    取り消し線


削除ボタン     件数表示



全部削除ボタン
入力フォーム    リスト表示


完了チェック    取り消し線


削除ボタン     件数表示



全部削除ボタン
矢印が多い
それぞれのイベントハンドラの中で、
   関係のある表示部分を
    すべて更新している
機能 と 表示 が一緒になっているので、
ひとつの変更でもあっちもこっちも直す必要がある



 他にも、 html のマークアップの変更や、
     DOM 構造の変更も困難...
整
どうやって

  理
 する?
何を
管理したいんだっけ?
「やることリストを作ってください」

* タスクを登録できること
* 完了したタスクをチェックできること
* タスクを消すことができること
やることリスト
入力フォーム             リスト表示


完了チェック             取り消し線
         やることリスト

削除ボタン              件数表示
ユーザが
         入力した!           更新する


入力フォーム
           ひとつ増やす
                                リスト表示
            増えたよ!




完了チェック                          取り消し線
         やることリスト

削除ボタン
                 増えたよ!
                                件数表示
                   更新する
本質的な
 部分
 を抽出する
解決するための、先人の知恵


上手く整理するためのコツ
One of the architecture pattern




MVC
(様々な形で実装されながら、今日に至る)
* MVC の背景
* MVC って何?
* ブラウザの中でのMVC
ソフトウェアアーキテクチャ
 ソフトウェア開発のためのパターン体系
          http://www.amazon.co.jp/dp/4764902834
アプリケーションを柔軟に保つための


先人の知恵
ちょっと具体的に見てみましょう
1. 前提
2. 課題
3. 解決方法
1. 前提


‘
‘
人間とコンピュータが対話するとい
う機能を備えたソフトウェアを開発
する際にこのパターンを考慮する


          - ソフトウェアアーキテクチャ -
1. 前提
 一枚の html の中で
一部だけ更新するような、
画面の切り替わりがない
アプリケーションが対象
2. 課題


‘
‘
ユーザインターフェースの
  変更は頻繁である

        - ソフトウェアアーキテクチャ -
2. 課題
✓ ここのとこ、ちょっと見た目を変えて欲しいんだけど...
✓ こんな機能ほしいんだけど...
✓ ブラウザの進化によって、コードを変えないといけない


   これらが容易に起こる
        &
  対応しなくてはいけない!!
!!
ユーザインターフェースは


寿命が短い!
2. 課題
これに対して、本質的な機能は
   変更頻度が低い

やることリストを管理したい
3. 解決方法

‘
‘課題を解決するために、
 対話型アプリケーションは
処理、入力、出力の3つの部分に
  分割されるべきである

         - ソフトウェアアーキテクチャ -
3. 解決方法
機能とユーザインターフェースが
    くっついていると
   変更が大規模になる

分けましょう!
入力フォーム             リスト表示


完了チェック             取り消し線
         やることリスト

削除ボタン              件数表示
入力フォーム             リスト表示


完了チェック             取り消し線
         やることリスト

削除ボタン              件数表示




  入力       処理       出力
3. 解決方法

データと処理: Model
ユーザ入力:   Controller
表示形式:    View
Model
View
Controller
入力フォーム                 リスト表示


完了チェック                 取り消し線
             やることリスト

削除ボタン                  件数表示



Controller    Model     View
入力フォーム                 リスト表示


完了チェック                 取り消し線
             やることリスト

削除ボタン                  件数表示



Controller    Model     View
入力・出力・処理を分ける

                          イベント


Controller             View
イベントを受け付ける           表示の仕方




             Model
              データと処理
実際にどうやって分け
ていけばいいかは
  この後で
http://blog.shinetech.com/2011/07/25/cascading-select-boxes-with-backbone-js/




                                   break
ここまでの内容
  http://blog.shinetech.com/2011/07/25/cascading-select-boxes-with-backbone-js/




* MVC の背景
✓ 画面の変更がしづらいことってありませんか?
* MVC って何?
✓ アプリケーションを柔軟に保つための先人の知恵
✓ 変化に対応するため、処理、入力、出力に分ける
* ブラウザの中での MVC
* MVC の背景
* MVC って何?
* ブラウザの中でのMVC
実際のコードでは
どう実現すればよいのか
            ?
            ?
多くの
フレームワーク
Helping you select an MV* framework
 Download (1.0.1)       View project on GitHub




Introduction                                    Our Stable Apps
Developers these days are spoiled with choice   Backbone.js                   R

when it comes to selecting an MV*
framework for structuring and organizing        Ember.js              R


their JavaScript web apps.
                                                AngularJS                 R

Backbone, Ember, AngularJS, Spine... the list
of new and stable solutions continues to        Spine         R

grow, but just how do you decide on which to
use in a sea of so many options?                KnockoutJS                    R



To help solve this problem, we created          Dojo      R

TodoMVC - a project which offers the same

http://addyosmani.github.com/todomvc/
Todo application implemented using MV*
concepts in most of the popular JavaScript
MV* frameworks of today.
                                                YUI   R



                                                Batman.js                 R



   Tweet   667
                                                Closure           R
今回は
http://backbonejs.org
今回は Backbone.js を
例に挙げて見てみましょう
 ✓ 広く使われている
 ✓ 仕組みが比較的シンプル
イベント


Controller             View
イベントを受け付ける           表示の仕方




             Model
              データと処理
Backbone.js のアプローチ
                   イベント


               DOM
      表示の仕方
  イベントを受け付ける    View




      Model
       データと処理
実際には複数あるので...
                      イベント


                 DOM
     表示の仕方
 イベントを受け付ける        View

                      View

 Model
                          View
         Model
          データと処理
やることリストの例を考える
createTaskView


TaskView

                     TotalView
createTaskView
                        TaskView


                 Task


             TaskList
                        TotalView
createTaskView
                        TaskView


                 Task


             TaskList

タスクを作成する                TotalView
ユーザが
            入力した!

                                   作成する

createTaskView
                  ひとつ増やす
                            TaskView

   追加する
                            増えた!
                 Task

                           増えた!
                                   更新する
             TaskList
                            TotalView
createTaskView
                        TaskView


                 Task


             TaskList

タスクを完了する                TotalView
更新する
                                          ユーザが
                                         チェックした!
createTaskView
                   変わった!          TaskView

                                  変更する

                 Task
                             変わった!


                                           更新する
             TaskList
                 変わった!            TotalView
createTaskView
                        TaskView


                 Task


             TaskList

タスクを削除する                TotalView
削除する     ユーザが削除ボタ
                                       ン押した!

createTaskView
                  削除された!        TaskView

                                削除する

                 Task
                           削除された!


                                         更新する
             TaskList
                 変わった!          TotalView
整理
createTaskView
                        TaskView


                 Task


             TaskList
                        TotalView
createTaskView
                        TaskView


                 Task


             TaskList

タスクを削除する
doneDeleteView
                        TotalView
削除する

createTaskView
                      削除された!
                                 TaskView


           削除する
                   Task
   完了タスク
   を削除する
                               更新された!
                                          更新する
ユーザが削除ボタ
 ン押した!
                  TaskList
                                 TotalView
doneDeleteView
機能を増やしても
不自然な矢印は増えない
動いているコード
  を見てみる
createTaskView
                        TaskView


                 Task


             TaskList
                        TotalView
ユーザが
            入力した!

                                   作成する

createTaskView
                  ひとつ増やす
                            TaskView

   追加する
                            増えた!
                 Task
タスクを作成する                   増えた!
                                   更新する
             TaskList
                            TotalView
ユーザが
            入力した!

                                   作成する

createTaskView
                  ひとつ増やす
                            TaskView

   追加する
                            増えた!
                 Task

                           増えた!
                                   更新する
             TaskList
                            TotalView
var Task = Backbone.Model.extend({
  defaults: {
    done: false
  },

 initialize: function(attrs) {
   var id = attrs && attrs.id
     || ('task-' + Number(new Date()));
   this.set('id', id);
 },

  destroy: function() {
    this.trigger('destroy', this);
    this.off();
  }
          var TaskList = Backbone.Collection.extend({
});
            model: Task,

            initialize: function() {
              this.on('destroy', this.remove, this);
            }
ユーザが
            入力した!

                                   作成する

createTaskView
                  ひとつ増やす
                            TaskView

   追加する
                            増えた!
                 Task

                           増えた!
                                   更新する
             TaskList
                            TotalView
var CreateTaskView = Backbone.View.extend({
  events: {
    'submit form': 'onSubmit'
  },

 onSubmit: function() {
   var $text = this.$el.find('#text'),
       text = $text.val();
   if (!text) { return false; }

    this.createTask(text);
     $text.val('');
    return false;
  },

  createTask: function(text) {
    this.collection.add({text: text});
  }
});
ユーザが
            入力した!

                                   作成する

createTaskView
                  ひとつ増やす
                            TaskView

   追加する
                            増えた!
                 Task

                           増えた!
                                   更新する
             TaskList
                            TotalView
var taskList = new TaskList();

// setup task list
taskList.on('add', function(task) {
  var taskView = new TaskView({model: task});
  taskView.render();
  taskView.$el.appendTo('#taskList');
});

// setup add task form
var createTaskView = new CreateTaskView({
  el: '#createForm',
  collection: taskList
});
demo: http://tasklist-demo.herokuapp.com/
github: https://github.com/tricknotes/task-list
その他の
Backbone.js の機能
ブラウザサイド MVC での
   難しいところ
✓ URL
✓ サーバとのデータ同期
✓ 更新の反映のタイミング
従来の MVC とは別の
解決が必要な部分がある
Backbone.js のアプローチ
                   イベント


               DOM
      表示の仕方
  イベントを受け付ける    View




      Model
       データと処理
URL                      イベント

                           DOM

Router
                           View
                            View
History


            Model

           Collection


          サーバ       Sync
http://backbonejs.org
まずは使ってみる




http://www.flickr.com/photos/hidekazufuruki/6881051786/sizes/h/in/photostream/
今日のまとめ
* MVC の背景
✓ 画面の変更がしづらいことってありませんか?
* MVC って何?
✓ アプリケーションを柔軟に保つための先人の知恵
✓ 変化に対応するため、処理、入力、出力に分ける
* ブラウザの中での MVC
✓ Backbone.js のアプローチについて
tricknotes
  .talk
  .trigger(‘end’);
more information...
Backbone.js の参考情報




http://www.adventar.org/calendars/15
https://github.com/enja-oss/Backbone
Helping you select an MV* framework
 Download (1.0.1)       View project on GitHub




Introduction                                    Our Stable Apps
Developers these days are spoiled with choice   Backbone.js                   R

when it comes to selecting an MV*
framework for structuring and organizing        Ember.js              R


their JavaScript web apps.
                                                AngularJS                 R

Backbone, Ember, AngularJS, Spine... the list
of new and stable solutions continues to        Spine         R

grow, but just how do you decide on which to
use in a sea of so many options?                KnockoutJS                    R



To help solve this problem, we created          Dojo      R

TodoMVC - a project which offers the same

http://addyosmani.github.com/todomvc/
Todo application implemented using MV*
concepts in most of the popular JavaScript
MV* frameworks of today.
                                                YUI   R



                                                Batman.js                 R



   Tweet   667
                                                Closure           R
http://www.publickey1.jp/blog/12/javascriptmvc.html
https://gist.github.com/1362110
  Original: http://blog.nodejitsu.com/scaling-isomorphic-javascript-code
本日は
概論まで
実践
あるのみ
Sapporo.js - 2012.12.16




Backbone.js handson: @onjiro_mohyahya
     http://connpass.com/event/1368/
JavaScript 道場

        超豪華講師
JavaScript コーディング実践
      練習!練習!練習!
 2013.02.23(土)@札幌市産業振興センター
ここまではまだまだ概論なので、
しっかりと実践して、その中から
新しい学びを一緒に見つけて行き
                ましょう!
  http://www.flickr.com/photos/8674051@N04/6380167887/

More Related Content

What's hot

Gradleどうでしょう
GradleどうでしょうGradleどうでしょう
GradleどうでしょうTakuma Watabiki
 
もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~
もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~
もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~Ryunosuke SATO
 
Node.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないときNode.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないときRyunosuke SATO
 
はじめる Ember.js!! ~ Getting started with ember.js ~
はじめる Ember.js!! ~ Getting started with ember.js ~はじめる Ember.js!! ~ Getting started with ember.js ~
はじめる Ember.js!! ~ Getting started with ember.js ~Ryunosuke SATO
 
なぜ人は必死でjQueryを捨てようとしているのか
なぜ人は必死でjQueryを捨てようとしているのかなぜ人は必死でjQueryを捨てようとしているのか
なぜ人は必死でjQueryを捨てようとしているのかYoichi Toyota
 
Sails.jsのメリット・デメリット
Sails.jsのメリット・デメリットSails.jsのメリット・デメリット
Sails.jsのメリット・デメリットIto Kohta
 
モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目大樹 小倉
 
svelte と tailwind で始めるフロントエンド開発
svelte と tailwind で始めるフロントエンド開発svelte と tailwind で始めるフロントエンド開発
svelte と tailwind で始めるフロントエンド開発Shuichi Takaya
 
むずかしくないJavaScriptのやさしい話 jQueryからの次のステップ #ndsmeetup8
むずかしくないJavaScriptのやさしい話 jQueryからの次のステップ #ndsmeetup8むずかしくないJavaScriptのやさしい話 jQueryからの次のステップ #ndsmeetup8
むずかしくないJavaScriptのやさしい話 jQueryからの次のステップ #ndsmeetup8civic Sasaki
 
TypeScriptへの入口
TypeScriptへの入口TypeScriptへの入口
TypeScriptへの入口Sunao Tomita
 
kichijyojipm17-Riot20190301
kichijyojipm17-Riot20190301kichijyojipm17-Riot20190301
kichijyojipm17-Riot20190301Masanobu Shimura
 
About SnapKit - Open source lab -
About SnapKit - Open source lab -About SnapKit - Open source lab -
About SnapKit - Open source lab -Daisuke Yamashita
 
JavaScript基礎勉強会
JavaScript基礎勉強会JavaScript基礎勉強会
JavaScript基礎勉強会大樹 小倉
 
JasmineによるJavascriptテスト駆動開発
JasmineによるJavascriptテスト駆動開発JasmineによるJavascriptテスト駆動開発
JasmineによるJavascriptテスト駆動開発Yoichi Toyota
 
コンパイラ指向ReVIEW
コンパイラ指向ReVIEWコンパイラ指向ReVIEW
コンパイラ指向ReVIEWMasahiro Wakame
 
はじめてのWallaby.js
はじめてのWallaby.jsはじめてのWallaby.js
はじめてのWallaby.jsShunta Saito
 

What's hot (20)

覚醒!JavaScript
覚醒!JavaScript覚醒!JavaScript
覚醒!JavaScript
 
Gradleどうでしょう
GradleどうでしょうGradleどうでしょう
Gradleどうでしょう
 
もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~
もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~
もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~
 
Node.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないときNode.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないとき
 
はじめる Ember.js!! ~ Getting started with ember.js ~
はじめる Ember.js!! ~ Getting started with ember.js ~はじめる Ember.js!! ~ Getting started with ember.js ~
はじめる Ember.js!! ~ Getting started with ember.js ~
 
Node.js入門
Node.js入門Node.js入門
Node.js入門
 
なぜ人は必死でjQueryを捨てようとしているのか
なぜ人は必死でjQueryを捨てようとしているのかなぜ人は必死でjQueryを捨てようとしているのか
なぜ人は必死でjQueryを捨てようとしているのか
 
Griffon10 in groovy_fx
Griffon10 in groovy_fxGriffon10 in groovy_fx
Griffon10 in groovy_fx
 
Vue.js with Go
Vue.js with GoVue.js with Go
Vue.js with Go
 
Sails.jsのメリット・デメリット
Sails.jsのメリット・デメリットSails.jsのメリット・デメリット
Sails.jsのメリット・デメリット
 
モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目
 
svelte と tailwind で始めるフロントエンド開発
svelte と tailwind で始めるフロントエンド開発svelte と tailwind で始めるフロントエンド開発
svelte と tailwind で始めるフロントエンド開発
 
むずかしくないJavaScriptのやさしい話 jQueryからの次のステップ #ndsmeetup8
むずかしくないJavaScriptのやさしい話 jQueryからの次のステップ #ndsmeetup8むずかしくないJavaScriptのやさしい話 jQueryからの次のステップ #ndsmeetup8
むずかしくないJavaScriptのやさしい話 jQueryからの次のステップ #ndsmeetup8
 
TypeScriptへの入口
TypeScriptへの入口TypeScriptへの入口
TypeScriptへの入口
 
kichijyojipm17-Riot20190301
kichijyojipm17-Riot20190301kichijyojipm17-Riot20190301
kichijyojipm17-Riot20190301
 
About SnapKit - Open source lab -
About SnapKit - Open source lab -About SnapKit - Open source lab -
About SnapKit - Open source lab -
 
JavaScript基礎勉強会
JavaScript基礎勉強会JavaScript基礎勉強会
JavaScript基礎勉強会
 
JasmineによるJavascriptテスト駆動開発
JasmineによるJavascriptテスト駆動開発JasmineによるJavascriptテスト駆動開発
JasmineによるJavascriptテスト駆動開発
 
コンパイラ指向ReVIEW
コンパイラ指向ReVIEWコンパイラ指向ReVIEW
コンパイラ指向ReVIEW
 
はじめてのWallaby.js
はじめてのWallaby.jsはじめてのWallaby.js
はじめてのWallaby.js
 

Similar to Introduction for Browser Side MVC

はじめよう Backbone.js
はじめよう Backbone.jsはじめよう Backbone.js
はじめよう Backbone.jsHiroki Toyokawa
 
Rails基礎講座 part.2
Rails基礎講座 part.2Rails基礎講座 part.2
Rails基礎講座 part.2Jun Yokoyama
 
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみようJavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみようHiroaki Wakamatsu
 
レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】Yasuhito Yabe
 
ASP.NET MVC 2 ~新機能の紹介~
ASP.NET MVC 2 ~新機能の紹介~ASP.NET MVC 2 ~新機能の紹介~
ASP.NET MVC 2 ~新機能の紹介~Yoshitaka Seo
 
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話Akira Inoue
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejsTakayoshi Tanaka
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発Yuta Matsumura
 
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発Akira Inoue
 
Asp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソAsp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソYoshitaka Seo
 
Magento meet up Tokyo#1 for Design
Magento meet up Tokyo#1 for DesignMagento meet up Tokyo#1 for Design
Magento meet up Tokyo#1 for DesignMiho Nakano
 
scala+liftで遊ぼう
scala+liftで遊ぼうscala+liftで遊ぼう
scala+liftで遊ぼうyouku
 
20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会Yukihiro Kitazawa
 
2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料OCHI Shuji
 
Progressive Framework Vue.js 2.0
Progressive Framework Vue.js 2.0Progressive Framework Vue.js 2.0
Progressive Framework Vue.js 2.0Toshiro Shimizu
 
Windows ストアアプリのつくりかた (JS + HTML + CSS)
Windows ストアアプリのつくりかた (JS + HTML + CSS)Windows ストアアプリのつくりかた (JS + HTML + CSS)
Windows ストアアプリのつくりかた (JS + HTML + CSS)Yu Nobuoka
 
jQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & TipsjQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & Tipsyoshikawa_t
 
Chrome DevTools.next
Chrome DevTools.nextChrome DevTools.next
Chrome DevTools.nextyoshikawa_t
 
ReduxとSwiftの組み合わせ:改訂版
ReduxとSwiftの組み合わせ:改訂版ReduxとSwiftの組み合わせ:改訂版
ReduxとSwiftの組み合わせ:改訂版Fumiya Sakai
 

Similar to Introduction for Browser Side MVC (20)

はじめよう Backbone.js
はじめよう Backbone.jsはじめよう Backbone.js
はじめよう Backbone.js
 
Rails基礎講座 part.2
Rails基礎講座 part.2Rails基礎講座 part.2
Rails基礎講座 part.2
 
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみようJavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
 
レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】
 
ASP.NET MVC 2 ~新機能の紹介~
ASP.NET MVC 2 ~新機能の紹介~ASP.NET MVC 2 ~新機能の紹介~
ASP.NET MVC 2 ~新機能の紹介~
 
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
 
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発
 
Asp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソAsp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソ
 
Magento meet up Tokyo#1 for Design
Magento meet up Tokyo#1 for DesignMagento meet up Tokyo#1 for Design
Magento meet up Tokyo#1 for Design
 
scala+liftで遊ぼう
scala+liftで遊ぼうscala+liftで遊ぼう
scala+liftで遊ぼう
 
20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会
 
2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料
 
Progressive Framework Vue.js 2.0
Progressive Framework Vue.js 2.0Progressive Framework Vue.js 2.0
Progressive Framework Vue.js 2.0
 
Windows ストアアプリのつくりかた (JS + HTML + CSS)
Windows ストアアプリのつくりかた (JS + HTML + CSS)Windows ストアアプリのつくりかた (JS + HTML + CSS)
Windows ストアアプリのつくりかた (JS + HTML + CSS)
 
ぼく(たち)のかんがえた最新のJS開発環境 #scripty04
 ぼく(たち)のかんがえた最新のJS開発環境 #scripty04 ぼく(たち)のかんがえた最新のJS開発環境 #scripty04
ぼく(たち)のかんがえた最新のJS開発環境 #scripty04
 
jQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & TipsjQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & Tips
 
Chrome DevTools.next
Chrome DevTools.nextChrome DevTools.next
Chrome DevTools.next
 
ReduxとSwiftの組み合わせ:改訂版
ReduxとSwiftの組み合わせ:改訂版ReduxとSwiftの組み合わせ:改訂版
ReduxとSwiftの組み合わせ:改訂版
 

More from Ryunosuke SATO

Ember コミュニティとわたし
Ember コミュニティとわたしEmber コミュニティとわたし
Ember コミュニティとわたしRyunosuke SATO
 
How to relaunch "sapporojs.org" ~Introduction to middleman~
How to relaunch "sapporojs.org" ~Introduction to middleman~How to relaunch "sapporojs.org" ~Introduction to middleman~
How to relaunch "sapporojs.org" ~Introduction to middleman~Ryunosuke SATO
 
コミュニティのある風景
コミュニティのある風景コミュニティのある風景
コミュニティのある風景Ryunosuke SATO
 
capybara で快適なテスト生活を
capybara で快適なテスト生活をcapybara で快適なテスト生活を
capybara で快適なテスト生活をRyunosuke SATO
 
Social coding をもっと楽しみたいあなたへ
Social coding をもっと楽しみたいあなたへSocial coding をもっと楽しみたいあなたへ
Social coding をもっと楽しみたいあなたへRyunosuke SATO
 
Node.jsってどうなの?
Node.jsってどうなの?Node.jsってどうなの?
Node.jsってどうなの?Ryunosuke SATO
 
アジャイル的アプローチから見えてきたこと
アジャイル的アプローチから見えてきたことアジャイル的アプローチから見えてきたこと
アジャイル的アプローチから見えてきたことRyunosuke SATO
 
脱レガシー化計画
脱レガシー化計画脱レガシー化計画
脱レガシー化計画Ryunosuke SATO
 
Pusherとcanvasで作るリアルタイムグラフ
Pusherとcanvasで作るリアルタイムグラフPusherとcanvasで作るリアルタイムグラフ
Pusherとcanvasで作るリアルタイムグラフRyunosuke SATO
 

More from Ryunosuke SATO (15)

片手間JS on Rails
片手間JS on Rails片手間JS on Rails
片手間JS on Rails
 
Ember コミュニティとわたし
Ember コミュニティとわたしEmber コミュニティとわたし
Ember コミュニティとわたし
 
gem の探し方
gem の探し方gem の探し方
gem の探し方
 
Rails あるある
Rails あるあるRails あるある
Rails あるある
 
How to relaunch "sapporojs.org" ~Introduction to middleman~
How to relaunch "sapporojs.org" ~Introduction to middleman~How to relaunch "sapporojs.org" ~Introduction to middleman~
How to relaunch "sapporojs.org" ~Introduction to middleman~
 
コミュニティのある風景
コミュニティのある風景コミュニティのある風景
コミュニティのある風景
 
capybara で快適なテスト生活を
capybara で快適なテスト生活をcapybara で快適なテスト生活を
capybara で快適なテスト生活を
 
Testable JavaScript
Testable JavaScriptTestable JavaScript
Testable JavaScript
 
Social coding をもっと楽しみたいあなたへ
Social coding をもっと楽しみたいあなたへSocial coding をもっと楽しみたいあなたへ
Social coding をもっと楽しみたいあなたへ
 
Clean Javascript
Clean JavascriptClean Javascript
Clean Javascript
 
Node.jsってどうなの?
Node.jsってどうなの?Node.jsってどうなの?
Node.jsってどうなの?
 
アジャイル的アプローチから見えてきたこと
アジャイル的アプローチから見えてきたことアジャイル的アプローチから見えてきたこと
アジャイル的アプローチから見えてきたこと
 
脱レガシー化計画
脱レガシー化計画脱レガシー化計画
脱レガシー化計画
 
Pusherとcanvasで作るリアルタイムグラフ
Pusherとcanvasで作るリアルタイムグラフPusherとcanvasで作るリアルタイムグラフ
Pusherとcanvasで作るリアルタイムグラフ
 
ServerSideJavaScript
ServerSideJavaScriptServerSideJavaScript
ServerSideJavaScript
 

Introduction for Browser Side MVC