JPAセミナーに参加してきた
有用なレポートは他の人が書いてるからそっち見たらいいと思うよマジで!
なのでここでは主に口頭であったことのメモ書きを。でもこのメモすら他の人と被ってる上にメモ間違いが含まれてるから。
不完全な走り書きのようなものです。
会場では先着順でリアルタイム通訳を受けるための受信機が借りられた。
借りられてよかった。が、このイヤホン、付けてると耳が痛くなる。キーンという音が悪いのか、イヤホンがでかいのかは不明。多分両方。というわけで、耳穴拡張されつつ聞いてきた。
通訳の人は、「こういうのは慣れてないからちゃんとできないかも」と言われてたけど、全然問題なく聞けました。
スライドを映しながら解説。スライドを印刷し、日本語で解説が書かれた資料も事前に配られた。
んが、資料とスライドがたまーに地味に少しだけ違ったりした。
資料には目を落とさず、前を向いて、口頭で言われた事をメモってた。
資料に書いてる事まんまメモってたら俺阿呆。スライドには書いてないことをメモったつもりではある。
資料はそのうちアップされるとのことなので(http://mt.endeworks.jp/d-6/2009/04/jpa-01.html)そちらを見た方が。資料の丸写しとかはやらないです。
で、スライドを見ながら通訳を聞いて、ってのは割と大変で。資料に書いてあることを喋ってるんだから、ってことでほとんど資料は見ずにメモってます。ので資料と被ってる個所もありまっせ。
第一部「Better Perl Practices - 最新Perl開発手法のススメ」
開発の心得のようなもの。perlだけではなく言語を問わず通じると思う内容。
- 失敗したら、どこが失敗だったのかを見つけろ
- 開発で目標設定は大事
- リファクタリングは何も最後にやるものだけではない。開発真っ最中にでもやれる
- バージョン管理しよう。でもcvsはやめよう。gitかsvnで
- 1プロジェクトで、1個でも次に改良できるところが見つかれば成功
- podテストとかは誰でも無料で使えるし、スモークサーバも1時間あれば作れる
- gem < cpan
- テストが書き辛いAPIは駄目なAPIだ
- テストが通ったからコードが大丈夫、っていうのは駄目
- cpanモジュールに入ってるテストが参考になるよ
- コードが変だったら、大抵ingyのせい
- strict無しにperlは無い
- シンプルな問題に複雑な解決をするな
- Test::Classの話をすると、それだけで3,4時間はいける
- ソースを減らせ
- Mooseは開発ペースが上がるよ
- perlへの貢献は簡単にできるよ。パッチ書いてくれるだけでもいい
- Catalystはクッキー周りが不完全だから、ここやってくれると嬉しい(多分このメモの中で最も価値のある個所)
- パッチくれたらビールあげるよ
スライドの最後までいったところで
- 「まだ10分あった、Mooseの話ができる」
休憩
上司が色んな人と話してた。毎度思うが上司凄い。宮川さんとも話してるし。
上司のおかげで牧さんとZIGOROuさんと、挨拶と名刺交換してお願いできた。ネットでしか知らない人と交流出来てテンション上がりました。感激です。
上司が辛そうなので尋ねると、昨日1時間しか寝てないとの事。死なないでくださいね!
第二部「Catalyst Guts - 高機能WebフレームワークCatalystを最大限に使う方法」
めっさ集中してたのでメモは疎かに。いいもん資料に書いてあるから!
モダンPerl入門を読んで無かったら微塵も分からなかったと思う。
- プラグインは使うな。マジで。
- プラグインはコノトローラの支援をするためのものではない
- AuthenticationやSessionはプラグイン足り得る十分な理由がある
- Catalyst::Plugin::FormBuilderとか駄目な例
- プラグイン上げたらmstに嫌われるよ(資料では「mstが悲しみます」って書いてた)
- perl510の不完全なエラーメッセージのパッチはある。が、一般公開してない
- FastCGIいいよ
- Configとselfの使い方指南
- Chainedいいよ
- サンプルをgithubで公開してるよ(http://github.com/jshirley/catalystx-example-chained/tree/master)
- sub hoge :Local {} とかイケてない。何でこれが広まってるのか分からない
(だってcookbookに載って…)
質問タイム。
$cに生えているメソッドのテストは、Test::WWW::Mechanize::Catalystでするしかないのか、サーバを立てずにやる方法は無いのかな、ということを質問してみた。
自分が主に使うのはauthenticateとCatalyst::Plugin::Session::Store::DBIC->delete_session_dataだけど、こいつらテストするのにMechanize使うか、ブラウザ叩くしか知らなかったので。
特に後者。定期的にcronでwget/LWP::UserAgent->getさせるしか思い付かない。それでも別に悪くは無い気がするけど。
ざっくり回答。Mechanize使いましょうでFA。
あと、テストをどこまでやるかは、やろうとしてることによる。例えばCPANモジュール作るってのならちゃんとテストすべきだし、自分でちょっとアプリ作るくらいならそこまでしなくてもいい。
Mechanizeは色んなケースのテストが出来るよ!とのこと。
終了後、牧さんへ質問。
MyApp::Web::Modelっていう名前空間は、MyApp::Modelであるべきじゃないかな、と以前から思っていた事を伺ってみた。
応えは、「Catalystにモデルを読ませるためだけにそうなってるのであって、モデル本体はCatalyst::Model::Adaptorを使って、例えばMyApp::API以下に置くようにできる」とのこと。
非常に緊張しながら早口で落ち着き無く、捲くし立てて質問してた気がする…そんな自分相手にありがとうございました。
雰囲気も良いし、参加して良かったと思えるセミナーでした。
近いうちに次は大阪でセミナーをやる予定とのこと。さすがに大阪は厳しいけど、JPAのセミナーは今後も出たいな。