SlideShare a Scribd company logo
リッチクライアント
 時代のWebアプリケーション
 アーキテクチャ
 パターンについて考える 
    Next Generation Web Application
    Architecture.
    2012-02-21 Ruby Sapporo Night vol.14
    アップルストア札幌

                  日本Rubyの会
                  Ruby札幌
                                      しまだ こうじ
                                           SHIMADA Koji
2012年2月23日木曜日
...はるかな彼方の昔、ある場所で、何もなく無菌状態の空間
      を漂っていた、でたらめに集まった原子の小さな集合に、そ
      れは深刻な外傷を与えた。そして、異常な、とてもありそう
      もないパターンで原子たちを離れないように結びつけてし
      まった。このようなパターンは自分自身をコピーするという
      ことを早いうちに覚えてしまい(これはパターンが非凡なもの
      であることの一面を示している) 、パターンが漂うすべての
      惑星で、塊状の災難が引き起こされ続けた。このようにして
      宇宙に生命が誕生したのである。
                        『銀河ヒッチハイク・ガイド』




2012年2月23日木曜日
しまだ こうじ
                   島田 浩二
 Photo by tmaeda
2012年2月23日木曜日
日本Rubyの会
2012年2月23日木曜日
一般社団法人LOCAL




2012年2月23日木曜日
2012年2月23日木曜日
2012年2月23日木曜日
2012年2月23日木曜日
2012年2月23日木曜日
2012年2月23日木曜日
2012年2月23日木曜日
よろしく
     お願いします
2012年2月23日木曜日
リッチクライアント
 時代のWebアプリケーション
 アーキテクチャ
 パターンについて考える 
    Next Generation Web Application
    Architecture.
    2012-02-21 Ruby Sapporo Night vol.14
    アップルストア札幌

                  日本Rubyの会
                  Ruby札幌
                                      しまだ こうじ
                                           SHIMADA Koji
2012年2月23日木曜日
お品書き
      ✓ クライアントMVCって何だろう
      ✓ もういちどMVC
      ✓ MVC系のパターンの系譜について
      ✓ もういちどクライアントMVC


2012年2月23日木曜日
2012年2月23日木曜日
Backbone.js gives structure to web applications by
         providing models with key-value binding and
         custom events, collections with a rich API of
         enumerable functions, views with declarative
         event handling, and connects it all to your existing
         API over a RESTful JSON interface.



2012年2月23日木曜日
Demo
                https://github.com/snoozer05/backbone-tiny-example




2012年2月23日木曜日
クライアントMVC




2012年2月23日木曜日
Martin Fowler said




                        photo by pragdave
2012年2月23日木曜日
MVCはさまざまな解釈をされてしまっ
       ているにも関わらず、それら全てが
       MVC という名前で記述されている。
       もしそれで混乱しないようなら、あな
       たも伝言ゲームによるMVCの誤解の犠
       牲者の可能性がある。



                http://martinfowler.com/eaaDev/uiArchs.html
2012年2月23日木曜日
現在のWebアプリケーション
      開発でよく耳にするMVC



                http://www.flickr.com/photos/indigoskies/6523275513/
2012年2月23日木曜日
MVC Model 2
                当時 のWebアプリケーションに
          MVCアーキテクチャを当てはめたもの




                            http://www.flickr.com/photos/indigoskies/6523275513/
2012年2月23日木曜日
MVCのオリジナル
                   ではない



2012年2月23日木曜日
もういちどMVC




2012年2月23日木曜日
30   Smalltalk



                                     MVC

                    2011 3        30




                http://www.smalltalk-users.jp/Home/gao-zhi/dai30kaismalltalkbenkyoukai
2012年2月23日木曜日
MVC
                • Model-View-Controller
                • XEROX PARC LRG Trygve Mikkjel Heyerdahl
                  Reenskaug        1978-1979
                    – MODELS - VIEWS – CONTROLLERS
                      • http://d.hatena.ne.jp/digitalsoul/20100913/1284330448
                    – DynaBook
                •
                •
                •




                                   http://www.smalltalk-users.jp/Home/gao-zhi/dai30kaismalltalkbenkyoukai
2012年2月23日木曜日
Model-View-
                                 Controller
                •
                • 1987
                •                                     (FXIS)

                •        3
                •             1988            OJT




                             http://www.smalltalk-users.jp/Home/gao-zhi/dai30kaismalltalkbenkyoukai
2012年2月23日木曜日
http://www.jac-net.com/~tarzan/smalltalkers/mvc/mvc.html
2012年2月23日木曜日
Model-View-
                                      Controller
                • MVC
                    – Smalltalk
                    –

                •
                •

                •




                                  http://www.smalltalk-users.jp/Home/gao-zhi/dai30kaismalltalkbenkyoukai
2012年2月23日木曜日
http://www.smalltalk-users.jp/Home/gao-zhi/dai30kaismalltalkbenkyoukai
2012年2月23日木曜日
MVC

                •             MVC
                •            MVC
                •              MVC




                    http://www.smalltalk-users.jp/Home/gao-zhi/dai30kaismalltalkbenkyoukai
2012年2月23日木曜日
MVC
                •

                •


                •
                •
                •
                •




                    http://www.smalltalk-users.jp/Home/gao-zhi/dai30kaismalltalkbenkyoukai
2012年2月23日木曜日
MVC
                •
                •
                    –                                  changed:

                    –                                      update:

                    –
                    –
                •
                •




                        http://www.smalltalk-users.jp/Home/gao-zhi/dai30kaismalltalkbenkyoukai
2012年2月23日木曜日
MVC
                •                                         (VC)

                • M VC
                    –                       (                            )
                                (               )
                        • on:aspect:menu:
                        •

                        •




                                    http://www.smalltalk-users.jp/Home/gao-zhi/dai30kaismalltalkbenkyoukai
2012年2月23日木曜日
Martin Fowler said




                        photo by pragdave
2012年2月23日木曜日
率直に言って、古典的なMVCは
       今のリッチクライアントに対しては
       あまり用をなしません。




                http://martinfowler.com/eaaDev/uiArchs.html
2012年2月23日木曜日
対話型システムのMVC系
             アーキテクチャの系譜



2012年2月23日木曜日
MVC系アーキテクチャパターン


      ✓ Presentation Model
         ✓ Application Model
         ✓ MVVM
      ✓ MVP


2012年2月23日木曜日
MVC系アーキテクチャパターン


      ✓ Presentation Model
         ✓ Application Model
         ✓ MVVM
      ✓ MVP


2012年2月23日木曜日
Presentation Model

      ✓ ドメインロジックとプレゼンテー
        ションロジックをモデルの層で分離
      ✓ View は Model の手前に置かれ
        た Presentation Model を監
        視する



2012年2月23日木曜日
Presentation Model


                       Controller




                                    Presentation
                View
                           監視          Model
                                                   Model



2012年2月23日木曜日
古典的なMVCが
                 持っていた問題を
                解決しようとしたもの



2012年2月23日木曜日
古典的なMVCが持っていた問題

         ✓ システムに存在するロジックは
           ビジネスロジックだけじゃない
            ✓ プレゼンテーションロジックの
              置き場が問題
            ✓ MVC では View か Model
              におくしか無い

2012年2月23日木曜日
Presentation Model


                       Controller




                                    Presentation
                View
                           監視          Model
                                                   Model



2012年2月23日木曜日
Presentation Model


      ✓ Application Model
         ✓ Visual Works でのアプローチ

      ✓ Model-View ViewModel
         ✓ WPF でのアプローチ



2012年2月23日木曜日
MVC系アーキテクチャパターン


      ✓ Presentation Model
         ✓ Application Model
         ✓ MVVM
      ✓ MVP


2012年2月23日木曜日
Model View Presenter

      ✓ 入力制御はOSさんがやってくれる
        のでコントローラさんが退場
      ✓ 直接 View 側を操作したいプレゼ
        ンテーションロジックもあった
         ✓ ロジックを持つ側で直接いじれる
           人が必要


2012年2月23日木曜日
Model View Presenter



                View
                               Presenter
                (V/C)
                        操作も可




                        監視

                                      Model



2012年2月23日木曜日
ポイント




2012年2月23日木曜日
Controller と
                 Presenter は
                生い立ちの異なるもの



2012年2月23日木曜日
整理




2012年2月23日木曜日
MVC系アーキテクチャパターン


      ✓ Presentation Model
         ✓ Application Model
         ✓ MVVM
      ✓ MVP


2012年2月23日木曜日
MVC系アーキテクチャパターン


          ドメインロジック以外のロジック
          をどこに置いて、それと他のコン
          ポーネントをどううまく協調させ
          るかの実践の歴史



2012年2月23日木曜日
最近の JavaScript ライブラリ


      ✓ Backbone.js
      ✓ Knockout.js
      ✓ JavaScriptMVC
      ✓ Batman.js

2012年2月23日木曜日
Rails の世界でも



      ✓ Cells
      ✓ Draper
      ✓ ...


2012年2月23日木曜日
Web アプリケーションの
           世界にも、リッチクライア
           ントと大規模化によってプ
           レゼンテーションロジック
           問題との戦いが本格化しつ
           つある

2012年2月23日木曜日
Martin Fowler said




                        photo by pragdave
2012年2月23日木曜日
MVCはさまざまな解釈をされてしまっ
       ているにも関わらず、それら全てが
       MVC という名前で記述されている。
       もしそれで混乱しないようなら、あな
       たも伝言ゲームによるMVCの誤解の犠
       牲者の可能性がある。



                http://martinfowler.com/eaaDev/uiArchs.html
2012年2月23日木曜日
クライアントMVC




2012年2月23日木曜日
MVC Model 2
                当時 のWebアプリケーションに
          MVCアーキテクチャを当てはめたもの




                            http://www.flickr.com/photos/indigoskies/6523275513/
2012年2月23日木曜日
MVC Model 2
                当時 のWebアプリケーションに
          MVCアーキテクチャを当てはめたもの

                   ではなく


                            http://www.flickr.com/photos/indigoskies/6523275513/
2012年2月23日木曜日
MVC系アーキテクチャパターン


      ✓ Presentation Model
         ✓ Application Model
         ✓ MVVM
      ✓ MVP


2012年2月23日木曜日
まだ(僕が)しっくりきていないこと

      ✓ プレゼンテーションロジックにもド
        メインロジックにもうまくおけない
        ようなロジックもあるような...
      ✓ クライアント側に何を置いてサーバ
        側に何を置いてそれらがどう協調す
        べきか


2012年2月23日木曜日
Is this answer?




                 https://gist.github.com/1362110
2012年2月23日木曜日
先人の知恵に学びつつ
           さらなる実践と議論が
           必要そう


2012年2月23日木曜日
続く

2012年2月23日木曜日
その他の情報へのポインタ

      ✓ WPF 向けのモデル - ビュー - プレゼン
        ター - ビューモデル設計パターン
                http://msdn.microsoft.com/ja-jp/magazine/hh580734.aspx

      ✓ 開発者が知っておくべき、6つのUIアー
        キテクチャ・パターン
                http://www.atmarkit.co.jp/fdotnet/chushin/greatblogentry_10/
                greatblogentry_10_01.html




2012年2月23日木曜日
リッチクライアント
 時代のWebアプリケーション
 アーキテクチャ
 パターンについて考える 
    Next Generation Web Application
    Architecture.
    2012-02-21 Ruby Sapporo Night vol.14
    アップルストア札幌

                  日本Rubyの会
                  Ruby札幌
                                      しまだ こうじ
                                           SHIMADA Koji
2012年2月23日木曜日
ご清聴
      ありがとう
     ございました
2012年2月23日木曜日
Ruby Sapporo Night
   2012-02-23(Thu) Apple Store, Sapporo   vol.14


2012年2月23日木曜日

More Related Content

Next Generation Web Application Architecture