71
究極にして至高のWAF 第1次 MVC大戦 @hoto17296

究極にして至高のWAF

Embed Size (px)

DESCRIPTION

勢いだけで作った 参考文献: やはりお前らのMVCは間違っている http://www.slideshare.net/MugeSo/mvc-14469802

Citation preview

Page 1: 究極にして至高のWAF

究極にして至高のWAF

第1次 MVC大戦 @hoto17296

Page 2: 究極にして至高のWAF
Page 3: 究極にして至高のWAF

モヒカン野郎の 登場です

Page 4: 究極にして至高のWAF

今までに触ったWAF •  (自作フレームワーク) •  CakePHP •  FuelPHP •  Symfony •  Sinatra •  Ruby on Rails •  Amon2

Page 5: 究極にして至高のWAF

やはり

Page 6: 究極にして至高のWAF

お前らのMVCは

Page 7: 究極にして至高のWAF

間違って いる

Page 8: 究極にして至高のWAF

まずは

Page 9: 究極にして至高のWAF
Page 10: 究極にして至高のWAF

そもそもが

Page 11: 究極にして至高のWAF

おまえは

Page 12: 究極にして至高のWAF

MVC ではない

Page 13: 究極にして至高のWAF

Teng

Text::Xslate

Dispatcher

Controllerっぽいナニカ

Viewっぽいナニカ

?????

Amon2 初見のイメージ

Page 14: 究極にして至高のWAF

Teng

Page 15: 究極にして至高のWAF

人人人人人人人人< Tengじゃ、   >< Tengの仕業じゃ!>YYYYYYYY////<_ノ ヽ_ノ\///// (○) ッ(○) |//| (( ノ ヽ ))+|//| + ))Г ̄|(( |//|+ U |WWW| U |//∧   |WWW|  //////\__`ーイ_////

Page 16: 究極にして至高のWAF

Modelではない

Page 17: 究極にして至高のWAF

Teng::Iterator Teng::Row

Page 18: 究極にして至高のWAF

Modelっぽい扱いに されているのが

Page 19: 究極にして至高のWAF

紛らわしすぎ

Page 20: 究極にして至高のWAF

Teng

Text::Xslate

Dispatcher

なにも考えずに Amon2 を使った場合

Page 21: 究極にして至高のWAF

Teng

Text::Xslate

Dispatcher

なにも考えずに Amon2 を使った場合

Fat Dispatcher!

Page 22: 究極にして至高のWAF

Teng

Text::Xslate Dispatcher

なにも考えずに Amon2 を使った場合

Fat Dispatcher!

Fat Dispatcher!

Page 23: 究極にして至高のWAF

Teng

Text::Xslate Dispatcher

なにも考えずに Amon2 を使った場合

Fat Dispatcher!

Fat Dispatcher!

Fat Dispatcher!

Page 24: 究極にして至高のWAF

すぐに Dispatcher を太らす

Page 25: 究極にして至高のWAF

そもそも

Page 26: 究極にして至高のWAF

なぜ MVC は MVC というのか

Page 27: 究極にして至高のWAF

Model > View > Controller

Page 28: 究極にして至高のWAF

軽量WAFで似非MVCをしたときに 陥りがちなミス

Page 29: 究極にして至高のWAF

Controller > View > Model

Page 30: 究極にして至高のWAF

正しい Amon2 の使用例

Teng

Text::Xslate

Dispatcher

自作 Model

RDB Redis とか

Page 31: 究極にして至高のWAF

ビジネスロジックは 自分でなんとかする

Page 32: 究極にして至高のWAF

これができない もしくは

Page 33: 究極にして至高のWAF

ここまでやってもまだ太る ような規模なら

Page 34: 究極にして至高のWAF

Rails を使おう

Page 35: 究極にして至高のWAF
Page 36: 究極にして至高のWAF

まずはこちらを ご覧ください

Page 37: 究極にして至高のWAF

Model

View

Controller

FuelPHP のアーキテクチャ

ViewModel

???

Page 38: 究極にして至高のWAF

Model

View

Controller

更新処理と取得処理の分離

ViewModel 更新処理

取得処理

Page 39: 究極にして至高のWAF
Page 40: 究極にして至高のWAF

名前がとても紛らわしい

ViewModel

Page 41: 究極にして至高のWAF

名前がとても紛らわしい

MVVMC?

MVVM? ※ まった

くの別物

Page 42: 究極にして至高のWAF

紛らわしいから改名します!!!!!

ViewModel ↓ (1.7.2以降) Presenter

Page 43: 究極にして至高のWAF

名前がとても紛らわしい(2)

MVPC?

MVP? ※ まった

くの別物

Page 44: 究極にして至高のWAF

FuelPHP まとめ

紛らわしい

Page 45: 究極にして至高のWAF
Page 46: 究極にして至高のWAF

ActiveModel

ActionController

Ruby on Rails のアーキテクチャ

ActionView

ActiveRecord

RDB Redis とか

Page 47: 究極にして至高のWAF

ありがちなDisられポイント

•  柔軟性がない •  ActiveRecord が宇宙 •  学習コストが高い

Page 48: 究極にして至高のWAF

柔軟性がない?

そんなことはない

Page 49: 究極にして至高のWAF

設定より規約

•  単純にするが柔軟性は失わせない

•  「いつも通りではない場合」のみ 設定を記述する – 変態的なルーティング

– NoSQL 余裕

– レスポンスフォーマットもなんでもアリ

Page 50: 究極にして至高のWAF

ActiveRecord が宇宙?

はい

Page 51: 究極にして至高のWAF

ActiveRecord とは

•  「レコード1行につき1オブジェクト」 •  デザインパターン – Ruby だけのものではない

Page 52: 究極にして至高のWAF
Page 53: 究極にして至高のWAF

ActiveRecord は宇宙だが

Page 54: 究極にして至高のWAF

コードは読める

Page 55: 究極にして至高のWAF

何も恐れることはない

Page 56: 究極にして至高のWAF

( ◠‿◠ )

Page 57: 究極にして至高のWAF

学習コストが高い?

はい

Page 58: 究極にして至高のWAF

逆に訊くが

Page 59: 究極にして至高のWAF

軽量WAFは学習コストが 低いのだろうか?

Page 60: 究極にして至高のWAF

軽量WAFは学習コストが低い?

•  「それっぽいものを作れるように  なるまで」はとても速い

•  「正しく使えるようになるまで」は  同じように時間がかかる

•  積み上がる負の遺産

Page 61: 究極にして至高のWAF
Page 62: 究極にして至高のWAF

「はじめからみんな正しく  使えればいいのでは?」

Page 63: 究極にして至高のWAF
Page 64: 究極にして至高のWAF

無理

Page 65: 究極にして至高のWAF

「自由なWAF」 とは

「そう書くべきでないコードでも 動いてしまう」 ということ

Page 66: 究極にして至高のWAF

「チームのルールとか運用方針を  ちゃんと決めれば大丈夫だし!」

Page 67: 究極にして至高のWAF

┓(́ー`)┏

Page 68: 究極にして至高のWAF

「だいたいいつも通り」 なのになぜ

何度も同じレールを敷く 必要があるのか

Page 69: 究極にして至高のWAF
Page 70: 究極にして至高のWAF

先人たちが積み上げてきた

“王道“ がここにある Ra i l

Page 71: 究極にして至高のWAF