昨日行われた Catalyst Conference #1 に行ってきました。
ここで言う Catalyst とは Perl の Web Application Framework なんですが、
発表者のうち Yappo さんだけが Cisco のルータスイッチの話をしようとしててびっくりしました。
それはさておき、Talk の内容は以下のようなものでした。
- id:dann のCatalystとMVC論 (15min)
- id:ikasam_a によるCatalyst::Controller::Resources (15min)
- $c <3 C (charsbar) (15min)
- コピペをしないための10の方法 (typester) (5min)
- Model::Adaptor的な話 (@hidek) (5min)
- yappo 2924あたりでも持ってきます (5min)
- Catalyst☆Complex tokuhirom (5min)
皆さん Catalyst Conference の癖に Catalyst を DIS りつつ、それを解決するためのそれぞれの方法や考え方を提案というパターンが主で、非常に面白かったです。 特に id:dann さんと id:ikasam_a さんはブログで Catalyst のネタを結構書いているのですが、今回実際にリアルの場での発表で、それぞれの考えを知ることができてよかったです。id:ikasam_a さんの Catalyst::Controller::Resources 、今まで触ったことがなかったのですが、発表聞くとかなりよさげなので使ってみたいと思います。
自分が Catalyst を使うケースって、仕事の受託開発ではほとんどなくて、pulpsite.net などで公開している yusukebe products が主です。 よって、全くの個人で開発していることと、サービスが小規模であるという点で、今回発表された方々とは多少違ったコンテキストで Catalyst を使っているのかなぁと感じました。 それを踏まえていい機会なので、Catalyst を今まで触ってきて、多少工夫しているところ、思っていることを(ほんの少し&よく知られているものですが)挙げてみました。
- Controller にロジックを書くのはよくない
- 少量のメソッドだったら MyApp.pm ?
モジュール化できるものはモジュール化(POPO)させる+ Model::Adaptor
例: Web API / fetch して parse する / WebService::Simple
Logic を扱う名前空間を作ってそこに置く
→再利用性、テストがやりやすい - script/myapp_create.pl model ...
- 自前で DBIx::Class::Schema::Loader::make_schema_atを呼び出すスクリプトを作った方がいい
- 運用の時、アクセスの多い静的ファイルを Catalyst でサーブするのはマジ無い
- mod_perl で処理する必要の無い静的コンテンツは mod_perl で扱わない
- Config の YAML を環境によって書き換えてる
- myapp_local.ymlを使う、最近はじめて知った
- CLI から model というか DBIC を呼ぶ時にどうするか
- CLI スクリプトに Catalyst の myapp.yml で定義した情報をコピペしがち、DRYじゃない><
ベストな解決策はなんだろう
昔のコードとか今見返すととりあえず動けばいいや的にテラひどいコードになってるんですが(今もひどいが)、 最近になって再利用性とか URI の設計とか気にしだしました。 今回の発表内容や皆さんのブログの記事などで、もっと勉強していきたいと思います。
あーあと、補足として感じたことは、今回来れなかった人を含めどのくらいの人がどのように Catalyst を使っているのかもっと知りたいと思いました(ルータスイッチも含めるとYappoさんは自宅で Catalyst を使っているということで興味深い)。
第2回もあるかもしれないということで、とりあえず 発表者の皆さん、お疲れさまでした!&会場を提供してくれたサイボウズラボに感謝!