70
しまだ こうじ SHIMADA Koji 日本Rubyの会 Ruby札幌 Next Generation Web Application Architecture. 2012-02-21 Ruby Sapporo Night vol.14 アップルストア札幌 リッチクライアント 時代のWebアプリケーション アーキテクチャ パターン について考える 2012223日木曜日

Next Generation Web Application Architecture

  • View
    6.605

  • Download
    3

Embed Size (px)

DESCRIPTION

Ruby Sapporo Night vol.14 共演者のスライドはこちら: http://d.hatena.ne.jp/tricknotes/20120225/p1

Citation preview

Page 1: Next Generation Web Application Architecture

しまだ こうじSHIMADA Koji

日本Rubyの会Ruby札幌

Next Generation Web Application Architecture.

2012-02-21 Ruby Sapporo Night vol.14アップルストア札幌

リッチクライアント時代のWebアプリケーションアーキテクチャパターンについて考える 

2012年2月23日木曜日

Page 2: Next Generation Web Application Architecture

“...はるかな彼方の昔、ある場所で、何もなく無菌状態の空間を漂っていた、でたらめに集まった原子の小さな集合に、それは深刻な外傷を与えた。そして、異常な、とてもありそうもないパターンで原子たちを離れないように結びつけてしまった。このようなパターンは自分自身をコピーするということを早いうちに覚えてしまい(これはパターンが非凡なものであることの一面を示している) 、パターンが漂うすべての惑星で、塊状の災難が引き起こされ続けた。このようにして宇宙に生命が誕生したのである。

『銀河ヒッチハイク・ガイド』

2012年2月23日木曜日

Page 3: Next Generation Web Application Architecture

しまだ こうじ島田 浩二

Photo by tmaeda

2012年2月23日木曜日

Page 4: Next Generation Web Application Architecture

日本Rubyの会2012年2月23日木曜日

Page 5: Next Generation Web Application Architecture

一般社団法人LOCAL

2012年2月23日木曜日

Page 6: Next Generation Web Application Architecture

2012年2月23日木曜日

Page 7: Next Generation Web Application Architecture

2012年2月23日木曜日

Page 8: Next Generation Web Application Architecture

2012年2月23日木曜日

Page 9: Next Generation Web Application Architecture

2012年2月23日木曜日

Page 10: Next Generation Web Application Architecture

2012年2月23日木曜日

Page 11: Next Generation Web Application Architecture

2012年2月23日木曜日

Page 12: Next Generation Web Application Architecture

よろしくお願いします

2012年2月23日木曜日

Page 13: Next Generation Web Application Architecture

しまだ こうじSHIMADA Koji

日本Rubyの会Ruby札幌

Next Generation Web Application Architecture.

2012-02-21 Ruby Sapporo Night vol.14アップルストア札幌

リッチクライアント時代のWebアプリケーションアーキテクチャパターンについて考える 

2012年2月23日木曜日

Page 14: Next Generation Web Application Architecture

お品書き✓ クライアントMVCって何だろう✓ もういちどMVC✓ MVC系のパターンの系譜について✓ もういちどクライアントMVC

2012年2月23日木曜日

Page 15: Next Generation Web Application Architecture

2012年2月23日木曜日

Page 16: Next Generation Web Application Architecture

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日木曜日

Page 17: Next Generation Web Application Architecture

Demohttps://github.com/snoozer05/backbone-tiny-example

2012年2月23日木曜日

Page 18: Next Generation Web Application Architecture

クライアントMVC

2012年2月23日木曜日

Page 19: Next Generation Web Application Architecture

Martin Fowler said

photo by pragdave2012年2月23日木曜日

Page 20: Next Generation Web Application Architecture

“MVCはさまざまな解釈をされてしまっているにも関わらず、それら全てが ‘MVC’という名前で記述されている。もしそれで混乱しないようなら、あなたも伝言ゲームによるMVCの誤解の犠牲者の可能性がある。

http://martinfowler.com/eaaDev/uiArchs.html2012年2月23日木曜日

Page 21: Next Generation Web Application Architecture

現在のWebアプリケーション開発でよく耳にするMVC

http://www.flickr.com/photos/indigoskies/6523275513/

2012年2月23日木曜日

Page 22: Next Generation Web Application Architecture

http://www.flickr.com/photos/indigoskies/6523275513/

MVC Model 2“当時”のWebアプリケーションにMVCアーキテクチャを当てはめたもの

2012年2月23日木曜日

Page 23: Next Generation Web Application Architecture

MVCのオリジナルではない

2012年2月23日木曜日

Page 24: Next Generation Web Application Architecture

もういちどMVC

2012年2月23日木曜日

Page 25: Next Generation Web Application Architecture

http://www.smalltalk-users.jp/Home/gao-zhi/dai30kaismalltalkbenkyoukai

30 Smalltalk

MVC

2011 3 30

2012年2月23日木曜日

Page 26: Next Generation Web Application Architecture

http://www.smalltalk-users.jp/Home/gao-zhi/dai30kaismalltalkbenkyoukai

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

•••

2012年2月23日木曜日

Page 27: Next Generation Web Application Architecture

http://www.smalltalk-users.jp/Home/gao-zhi/dai30kaismalltalkbenkyoukai

Model-View-Controller

•• 1987• (FXIS)

• 3• 1988 OJT

2012年2月23日木曜日

Page 28: Next Generation Web Application Architecture

http://www.jac-net.com/~tarzan/smalltalkers/mvc/mvc.html2012年2月23日木曜日

Page 29: Next Generation Web Application Architecture

http://www.smalltalk-users.jp/Home/gao-zhi/dai30kaismalltalkbenkyoukai

Model-View-Controller

• MVC– Smalltalk–

••

2012年2月23日木曜日

Page 30: Next Generation Web Application Architecture

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

Page 31: Next Generation Web Application Architecture

http://www.smalltalk-users.jp/Home/gao-zhi/dai30kaismalltalkbenkyoukai

MVC

• MVC• MVC• MVC

2012年2月23日木曜日

Page 32: Next Generation Web Application Architecture

http://www.smalltalk-users.jp/Home/gao-zhi/dai30kaismalltalkbenkyoukai

MVC

••••

2012年2月23日木曜日

Page 33: Next Generation Web Application Architecture

MVC••

– changed:

– update:

––

••

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

Page 34: Next Generation Web Application Architecture

http://www.smalltalk-users.jp/Home/gao-zhi/dai30kaismalltalkbenkyoukai

MVC• (VC)

• M VC– ( )

( )• on:aspect:menu:•

2012年2月23日木曜日

Page 35: Next Generation Web Application Architecture

Martin Fowler said

photo by pragdave2012年2月23日木曜日

Page 36: Next Generation Web Application Architecture

“率直に言って、古典的なMVCは今のリッチクライアントに対してはあまり用をなしません。

http://martinfowler.com/eaaDev/uiArchs.html2012年2月23日木曜日

Page 37: Next Generation Web Application Architecture

対話型システムのMVC系アーキテクチャの系譜

2012年2月23日木曜日

Page 38: Next Generation Web Application Architecture

MVC系アーキテクチャパターン

✓ Presentation Model✓ Application Model✓ MVVM✓ MVP

2012年2月23日木曜日

Page 39: Next Generation Web Application Architecture

MVC系アーキテクチャパターン

✓ Presentation Model✓ Application Model✓ MVVM✓ MVP

2012年2月23日木曜日

Page 40: Next Generation Web Application Architecture

Presentation Model

✓ ドメインロジックとプレゼンテーションロジックをモデルの層で分離

✓ View は Model の手前に置かれた Presentation Model を監視する

2012年2月23日木曜日

Page 41: Next Generation Web Application Architecture

Presentation Model

View

Model

Controller

Presentation Model監視

2012年2月23日木曜日

Page 42: Next Generation Web Application Architecture

古典的なMVCが持っていた問題を

解決しようとしたもの

2012年2月23日木曜日

Page 43: Next Generation Web Application Architecture

古典的なMVCが持っていた問題

✓ システムに存在するロジックはビジネスロジックだけじゃない

✓ プレゼンテーションロジックの置き場が問題

✓ MVC では View か Model におくしか無い

2012年2月23日木曜日

Page 44: Next Generation Web Application Architecture

Presentation Model

View

Model

Controller

Presentation Model監視

2012年2月23日木曜日

Page 45: Next Generation Web Application Architecture

Presentation Model

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

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

2012年2月23日木曜日

Page 46: Next Generation Web Application Architecture

MVC系アーキテクチャパターン

✓ Presentation Model✓ Application Model✓ MVVM✓ MVP

2012年2月23日木曜日

Page 47: Next Generation Web Application Architecture

Model View Presenter

✓ 入力制御はOSさんがやってくれるのでコントローラさんが退場

✓ 直接 View 側を操作したいプレゼンテーションロジックもあった

✓ ロジックを持つ側で直接いじれる人が必要

2012年2月23日木曜日

Page 48: Next Generation Web Application Architecture

Model View Presenter

View(V/C)

Model

Presenter

監視

操作も可

2012年2月23日木曜日

Page 49: Next Generation Web Application Architecture

ポイント

2012年2月23日木曜日

Page 50: Next Generation Web Application Architecture

Controller とPresenter は

生い立ちの異なるもの

2012年2月23日木曜日

Page 51: Next Generation Web Application Architecture

整理

2012年2月23日木曜日

Page 52: Next Generation Web Application Architecture

MVC系アーキテクチャパターン

✓ Presentation Model✓ Application Model✓ MVVM✓ MVP

2012年2月23日木曜日

Page 53: Next Generation Web Application Architecture

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

MVC系アーキテクチャパターン

2012年2月23日木曜日

Page 54: Next Generation Web Application Architecture

最近の JavaScript ライブラリ

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

2012年2月23日木曜日

Page 55: Next Generation Web Application Architecture

Rails の世界でも

✓ Cells✓ Draper✓ ...

2012年2月23日木曜日

Page 56: Next Generation Web Application Architecture

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

2012年2月23日木曜日

Page 57: Next Generation Web Application Architecture

Martin Fowler said

photo by pragdave2012年2月23日木曜日

Page 58: Next Generation Web Application Architecture

“MVCはさまざまな解釈をされてしまっているにも関わらず、それら全てが ‘MVC‘という名前で記述されている。もしそれで混乱しないようなら、あなたも伝言ゲームによるMVCの誤解の犠牲者の可能性がある。

http://martinfowler.com/eaaDev/uiArchs.html2012年2月23日木曜日

Page 59: Next Generation Web Application Architecture

クライアントMVC

2012年2月23日木曜日

Page 60: Next Generation Web Application Architecture

http://www.flickr.com/photos/indigoskies/6523275513/

MVC Model 2“当時”のWebアプリケーションにMVCアーキテクチャを当てはめたもの

2012年2月23日木曜日

Page 61: Next Generation Web Application Architecture

http://www.flickr.com/photos/indigoskies/6523275513/

MVC Model 2“当時”のWebアプリケーションにMVCアーキテクチャを当てはめたもの

ではなく

2012年2月23日木曜日

Page 62: Next Generation Web Application Architecture

MVC系アーキテクチャパターン

✓ Presentation Model✓ Application Model✓ MVVM✓ MVP

2012年2月23日木曜日

Page 63: Next Generation Web Application Architecture

まだ(僕が)しっくりきていないこと

✓ プレゼンテーションロジックにもドメインロジックにもうまくおけないようなロジックもあるような...

✓ クライアント側に何を置いてサーバ側に何を置いてそれらがどう協調すべきか

2012年2月23日木曜日

Page 64: Next Generation Web Application Architecture

Is this answer?

https://gist.github.com/13621102012年2月23日木曜日

Page 65: Next Generation Web Application Architecture

先人の知恵に学びつつさらなる実践と議論が必要そう

2012年2月23日木曜日

Page 66: Next Generation Web Application Architecture

続く

2012年2月23日木曜日

Page 67: Next Generation Web Application Architecture

その他の情報へのポインタ

✓ 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日木曜日

Page 68: Next Generation Web Application Architecture

しまだ こうじSHIMADA Koji

日本Rubyの会Ruby札幌

Next Generation Web Application Architecture.

2012-02-21 Ruby Sapporo Night vol.14アップルストア札幌

リッチクライアント時代のWebアプリケーションアーキテクチャパターンについて考える 

2012年2月23日木曜日

Page 69: Next Generation Web Application Architecture

ご清聴ありがとうございました

2012年2月23日木曜日

Page 70: Next Generation Web Application Architecture

Ruby Sapporo Nightvol.142012-02-23(Thu) Apple Store, Sapporo

2012年2月23日木曜日