@hsksyuskさんのエントリにこう書かれていましたので僕もつい乗っかってみたくなりました。PerlのWAFは何がいいの?@ytnobodyさんはKossy推し。ぼ、ぼ、ぼ、僕はMojolicious推し!!!ということでなぜ僕が今、Mojolicious推しなのかを探るためにその「いい点」と思っていること列挙してみました。それと同時に悪い点も見えてきて、かつバッドノウハウもあるなーって感じなのでまとめてみます。残りは自前で実装しています。いうことは起こらないですね。(とはいえモデル層で他のモジュールに依存しがちですが!)。一つのファイルでコントローラもビューも書けて簡単だぜ!というのがPRとして売りになってる気がします。hoge.plとかして作ります。Liteで作ったアプリがどんどん大きくなっていくとしましょう。hoge.pl内のデータセクションに書いていたビューを切り離すことができます。Liteでは対応できません。そこでコマンドを打ち込みます。Hogeすると以下の構造で「普通の」Mojoliciousアプリの雛形を作ってくれます。僕はこちらの「普通の」Mojoliciousアプリを使うケースが多いですし、そこそこの大きさのアプリにも耐えられます。Mojo::Templateが柔軟Text::MicroTemplateの元になったというMojo::TemplateがPerlそのまま書けるので、一人でやる分には柔軟でよいです。気に入っているのはテンプレート内で使える「layout」という関数。</body></html>「templates/root/index.html.ep」でこのレイアウトを使うには冒頭にでもlayout関数を使います。Hoge</h1>レイアウトを変えることもテンプレートファイル内で容易にできるのがいいのです。$selfだけコントローラではコンテキストオブジェクトを扱わずに「$self」だけでごにょれるのがいいですね。$self->render('message');}VCだけMojoliciousはモデル部分は後述するアクセサ的の提供のみを行ってビューとコントローラのみを提供しています。最近の薄いWAFはだいたいそうですが、簡素でよいですね。Mの登録、ディスパッチの記述さて、モデルの登録には遅延させるために上記の例だと「Hoge.pm」にこうやって記述します。);}至って簡単です。"root#index");なんてできて楽でかつ柔軟ですね。いう時に依存がないMojoliciousのLiteを使ってCGIにしちゃうのは結構便利です。Liteのアプリを「hoge.cgi」などの拡張子にすればそのままApache経由のCGIとして動いたりしますからね。ドキュメントがしっかりしているさすがにMojoliciousはドキュメントがしっかりしています。だいたい「Mojolicious::Controller」を見ることが多いですね。公式のWebページがよくデザインされてかっこかわいいです。最新版のMojoliciousを使っていて、かつ開発モードで立ち上げてるとこのようにルーティングパスまで表示してくれて洒落てます。Riedelがリーダーになって複数人いて開発が活発です。Mojoliciousのイケてない点さて、Mojoliciousのよい点ばかりを挙げてきましたが個人的に思うイケてない部分もあります。5.10以上が必須でかつ5.12が推奨されています。ポータブルなコンセプトのMojoliciousが入らないと萎えます。セッションの扱いデフォルトのセッションは非常に貧弱で、暗号化した文字列をcookieに入れるだけのサポートです。Plack::Middleware::SessionとPlack::Sessionを組み合わせたセッション管理を行うことが多いです。$app;};とします。...;}などとしてセッションの値を取得します。Plackのミドルウェアを使うってのはいいんですけどね。redirect_toがたぶん相対パスを表すこういう細かいちょっとした変なところがあるのでたまにストレスが溜まります。本番環境だとおかしくなったりします。);とか長ったらしい記述をして回避しがちっす。他にも軽くはまるところがいくつかあった気がします。今、再現できないのですがLocationヘッダの中身がおかしかった気がするす。ほんとWAFは何を使ってもいいと思います。最近はAmon2とかKossyとか!薄くて使い勝手がよいWAFがたくさんありますしね。僕はMojolicious推しですよーというエントリでした。次回28日(火)に発行です。よろしければチェックしてください。