YAPC::Asia 1日目のまとめ
(ごめんなさい。途中です)一応続き書きました。
自分の聞いてきたセッションを軽くまとめました。
※あくまでも私の聞いた(つもりの)内容と私が書いたメモが元になっておりますので、実際のセッションや発言とは異なる可能性があります。今回は資料がアップされていることが多いので、資料も見てくださいね!
プラコアでは Catalyst をこう使っています! / Plucore way of using Catalyst
Daisuke Komatsu さん
資料(http://vkgtaro.jp/2009/09/11/yapcasia2009)
優しいモダンな WAF の作り方
dann さん
資料(http://dann.g.hatena.ne.jp/dann/20090910/p1)
- 表題のとおり、モダンな WAF(Web Application Framework)の作り方の話
- Angelos というフレームワークをベースに
- Pluggable(拡張性)/Testability/Full-State(ユーザビリティ)が重要
- Engine/Dispater/Conponent Manager があれば WAF は簡単に作れる
- Plugin
- コアは小さく
- 拡張箇所は限定する
- Hook Point は明確に
- Hook の仕方は通常下記の 2種類
- ライフサイクルに対する Hook
- メソッドを生やす系
- Hook Point は規約で(Angelos では大文字)
- 拡張のデフォルトセットを用意しておく
CPAN::Packager による RPM/Deb の自動生成
dann さん
資料(http://dann.g.hatena.ne.jp/dann/20090910/p1)
- Catalyst など、モジュールの依存関係の複雑なものを RPM/Deb でまとめるためのモジュール
- 既存ツールの問題
- ある程度は依存関係を自動追跡し、問題がある場合はコンフィグに修正内容を書けるようにした
- HTTP::Engine の RPM を作るデモ
=> 10 くらいの依存モジュールがある。これを解決しながら RPM を作成した
Q.A.
- 使いたいモジュールのバージョンを明示したい場合は?
=> ローカルに置くモジュールのパスを指定する
- local::lib との違いは?
=> Pure Perl のモジュールならあまり違いはないかも。XS 使うものや、ディストリビューションのパッケージと共用させたい場合は便利だと思う
- コンフィグの書き方がよく分からない
=> ドキュメント書きます
- モジュールのテストは?
=> Deb の場合はテストする。RPM については今後の課題
- このモジュール自体の依存関係が結構多い
=> CPANPLUS を使っているから。このモジュールのパッケージを置くとよいかも
Key Value Store with O/R Mapper
Kazuhiro Osawa さん
資料: http://yappo.ficia.com/#album/1E8DF4EE-9DB6-11DE-B1EE-7BD1A805B909
- Data::Model というモジュールの話
- 定義は普通の ORM っぽい感じ
- カラムはデフォルト VARCHAR で、定義の必要なものだけ書く
- データソースに DBI/memcached/(Perl の)hash が使える
- 1テーブル/1クラス以外も OK
- Web アプリの DB のクエリの性質を考慮したところ、既存の ORM に良さそうなものが無かったので作ったとのこと
- ほぼ index スキャン
- join しすぎない
- 透過キャッシュ
- memcached で検索に失敗したら、DB を fallback driver に
...で、MessagePack の話ぐらいから駆け足になったのもあってちょっとついていけなくなってしまった。。。
一日目のセッションはもうちょっとありましたが、また明日。。。
以下 2009/09/15 追記。
simple or mapper DBIx::Skinny
Atsushi Kobayashi さん
資料: http://nekokak.org/presen/yapcasia2009-dbix-skinny/
- DBI の薄いラッパーの ORM
- 簡単に使える
- Plugin がある
- DBIx::Class の問題
- DBIx::Class などの従来の ORM から良いとこ取りしつつ、スクラッチから作った ORM
- select/update/delete などは普通のORM っぽい感じ
- select などで、プレースホルダに名前を付けられる
- リレーションシップはあえて対応していない
- あると便利なので使ってしまう
- けれども効率の悪いクエリが生成されがちなので
MooseX::Tourism
Florian Ragwitz さん
資料: 現時点ではアップされていないようです
# 英語で通訳無しだったので、理解度的にはちょっと微妙。
# かなり間違っているかもしれません。。。
- MooseXに関するガイド
- MooseX::AttributeHelpers(MXAH)
- 「一つだけ MooseX のモジュールを選べ」と言われたらコレらしい
- 名前のとおり、アトリビュートを拡張する
- Autobox
- MXAH の Inside-Out(裏返し)
- TypeConstraints
- MooseX::Types
- 型(Type)を作りやすくする
- MooseX::Types
- MooseX::Types::Structured
- hash/array のような構造型を作りやすくする(?)
- MooseX::StrictConstructor
- コンストラクタの引数チェックができる
- MooseX::Params::Validate
- メソッドの引数チェックができる
- MooseX::Method::Signatures
- 引数チェックを宣言風に書ける
- MooseX::NonMoose
- Moose を使っていないクラスから継承しやすくする
- MooseX::Traits
- new_with_traits というメソッドが使える。生成時に Role を適用する
Perl database test using MySQL::Sandbox
Toru Yamaguchi さん
資料: http://www.art-code.org/presen/yapcasia2009/
LT
省略。miyagawanize が面白かったです