究極にして至高のWAF 
第1次 MVC大戦 
@hoto17296
モヒカン野郎の 
登場です
今までに触ったWAF 
• (自作フレームワーク) 
• CakePHP 
• FuelPHP 
• Symfony 
• Sinatra 
• Ruby on Rails 
• Amon2
やはり
お前らのMVCは
間違って 
いる
まずは
そもそもが
おまえは
MVC 
ではない
Amon2 初見のイメージ 
Teng 
Text::Xslate 
Dispatcher 
Controllerっぽいナニカ 
Viewっぽいナニカ 
?????
Teng
人人人人人人人人 
< 
Tengじゃ、   
> 
< 
Tengの仕業じゃ!> 
YYYYYYYY 
////<_ノ 
ヽ_ノ\// 
/// (○) 
ッ(○) 
|/ 
/| (( 
ノ 
ヽ 
))+|/ 
/| 
+ 
))Г ̄|(( |/ 
/|+ U 
|WWW| 
U |/ 
/∧   
|WWW|  /// 
///\__`ーイ_////
Modelではない
Teng::Iterator 
Teng::Row 
が
Modelっぽい扱いに 
されているのが
紛らわしすぎ
なにも考えずに Amon2 を使った場合 
Teng 
Text::Xslate 
Dispatcher
なにも考えずに Amon2 を使った場合 
Teng 
Text::Xslate 
Dispatcher 
Fat Dispatcher!
なにも考えずに Amon2 を使った場合 
Fat Dispatcher! 
Teng 
Text::Xslate 
Dispatcher 
Fat Dispatcher!
なにも考えずに Amon2 を使った場合 
Fat Dispatcher! 
Text::Xslate Dispatcher 
Fat Dispatcher! 
Teng 
Fat Dispatcher!
すぐに Dispatcher を太らす
そもそも
なぜ MVC は 
MVC というのか
Model > View > Controller
軽量WAFで似非MVCをしたときに 
陥りがちなミス
Controller > View > Model
正しい Amon2 の使用例 
Teng 
Text::Xslate 
Dispatcher 
自作 
Model 
Redis RDB 
とか
ビジネスロジックは 
自分でなんとかする
これができない 
もしくは
ここまでやってもまだ太る 
ような規模なら
Rails を使おう
まずはこちらを 
ご覧ください
FuelPHP のアーキテクチャ 
Model 
View 
Controller 
ViewModel 
???
更新処理と取得処理の分離 
Model 
View 
Controller 
ViewModel 更新処理 
取得処理
名前がとても紛らわしい 
ViewModel
名前がとても紛らわしい 
MVVMC? 
MVVM? 
※ まったくの別物
紛らわしいから改名します!!!!! 
ViewModel 
↓ (1.7.2以降) 
Presenter
名前がとても紛らわしい(2) 
MVPC? 
MVP? 
※ まったくの別物
FuelPHP まとめ 
紛らわしい
Ruby on Rails のアーキテクチャ 
ActionController 
ActiveModel 
ActionView 
ActiveRecord 
Redis RDB 
とか
ありがちなDisられポイント 
• 柔軟性がない 
• ActiveRecord が宇宙 
• 学習コストが高い
柔軟性がない? 
そんなことはない
設定より規約 
• 単純にするが柔軟性は失わせない 
• 「いつも通りではない場合」のみ 
設定を記述する 
– 変態的なルーティング 
– NoSQL 余裕 
– レスポンスフォーマットもなんでもアリ
ActiveRecord が宇宙? 
はい
ActiveRecord とは 
• 「レコード1行につき1オブジェクト」 
• デザインパターン 
– Ruby だけのものではない
ActiveRecord は宇宙だが
コードは読める
何も恐れることはない
( ◠‿◠ )
学習コストが高い? 
はい
逆に訊くが
軽量WAFは学習コストが 
低いのだろうか?
軽量WAFは学習コストが低い? 
• 「それっぽいものを作れるように 
 なるまで」はとても速い 
• 「正しく使えるようになるまで」は 
 同じように時間がかかる 
• 積み上がる負の遺産
「はじめからみんな正しく 
 使えればいいのでは?」
無理
「自由なWAF」 
とは 
「そう書くべきでないコードでも 
動いてしまう」 
ということ
「チームのルールとか運用方針を 
 ちゃんと決めれば大丈夫だし!」
┓(́ー`)┏
「だいたいいつも通り」 
なのになぜ 
何度も同じレールを敷く 
必要があるのか
先人たちが積み上げてきた 
“王道“ がここにある R a i l
究極にして至高のWAF

究極にして至高のWAF