― Web Technology and Life ―

CPAN本には入っていないけど、抑えておきたいフレームワークモジュール群

2011-05-28
今さらながらtomitaさんが執筆された通称CPAN本『Perl CPANモジュールガイド』の感想を、CPAN本自体の感想と、CPAN本に触発されてという感じでメモしたと思います。

CPAN本自体の感想

非常にたくさんのモジュールが紹介されていて大変勉強になります。半分以上が使ったことがないです。なので、使ったことがないモジュールをやりたいことに沿って探して使用するというベタな使い方いいです。

あと、ぼくがいいなと思ったのは、使ったことがあるけどマジメにドキュメント呼んでいないモジュールの解説を読んでより理解を深めるという使い方です。

個人的に、CPANモジュールは、モジュール名で検索して出てきただれかのブログ記事を参考にぱぱっと書いたり、ドキュメントのSYNOPSISをぱっと動かしてみて適当に使うということが多いです。それに加えて、英語のドキュメントはなかなかしっかり読むには腰が重くて細かく追うのは大変です。

例えば、Path::Classの以下のような使い方は知りませんでした。

my $source = $file->slurp(iomode => '<:encoding(utf-8)');#utf8デコード済みのデータを一発で変数に入れる
$file->stat->size;#ファイルのサイズをとる

あるいは、Regex::Assembleのnew時に正規表現オプションを渡したりすることができるのを知りませんでした。

my $re = Regexp::Assemble->new(flags => 'i');

$re->add(map {quotemeta($_)} @$strings);

if($re->match($target)){
    print 'match';
}else{
    print 'unmatch';
}

あー、こんな使い方出来るんだー!!と新しい発見があってとてもいいですね!!

フレームワークモジュール群

CPAN本には気軽に使えるモジュール群が載っていて、あまりフレームワーク系のモジュールは紹介されていません。tomitaさんの『紙面の都合で見送ったものコーナー』という記事にあるように多くの紙面を割くことが必要とされる大規模モジュールに関してはあまり載せていないようです。WAFやO/Rマッパーなどは、ジャンルとしてのみ紹介されていて具体的なモジュール名が載っていないものが多いです。

しかし、今後のトレンドを追っていくうえでも、具体的なモジュールがどのように進化して変遷をとげているのかを押さえておきたいです。そんなところで参考になるのが、charsbarさんのgihyo.jpの連載『モダンPerlの世界へようこそ』でしょう。

『モダンPerlの世界へようこそ』もいいですが、ここでは今後触ってみたいものなど、個人的にWatchしておきたいジャンルと具体的なモジュール名を整理して列挙しておきたいと思います。

ジョブキューシステム

非同期である処理を行うことを実現するシステムです。用途としては、重たい処理を特定のサーバで行わせる、書き込み処理の安定化/コントロール化、バッチ処理の安定化/実行管理という感じでしょうか。以下のモジュールが代表的かつ個人的にWatchしていきたいものです。

  • Gearman
  • TheSchwartz
  • Queue::Q4M(Q4M)
  • Jonk

O/Rマッパー

MySQLに代表されるRDBMSをオブジェクト指向に扱い、プログラム上で扱いやすくするツールです。オブジェクト指向に扱うといってもピンときませんが、若干要件としてはそれくらい曖昧なもので、それぞれのツールによってサポートしているところが違うのではないでしょうか。以下のモジュールが代表的かつ個人的にWatchしていきたいものです。

  • DBIx::Class
  • Data::Model
  • DBIx::Skinny
  • Teng

Web Application Framework

動的なWebサイトを構築するときに必要な要素/機能を網羅しているツールです。Perlの場合は、これと言ってオススメされるWAFがないと言われており、今後に期待されるところです。CPANに上がっているのが以下です。

  • Catalyst
  • Mojolicious::Lite
  • Pickles
  • Amon2

バリデーター

バリデーターとは、引数の明示と型(数字か、文字列か、ハッシュリファレンスか、URLか、メアドか)をチェックしてくれるツールです。CPAN本ではFormにバリデーションをかけるFormValidator::Liteが紹介されていますが、LL系のプログラム言語でクラスを開発しているときにはメソッドにバリデーターをつけるとコードの可読性があがります。以下大まかに紹介します。

  • Params::Validate
  • Moose/Mouse
  • FormValidator::Lite(CPAN本に載っている)
  • HTML::Shakan
  • Data::Validator
  • Sub::Args
  • Smart::Args

このジャンルに関して『引数の明示という観点からのPerlモジュール群』と題して、コードの可読性という観点から詳細にまとめました。

コンテナー

オブジェクトをキャッシュしていろいろなクラスで利用しやすくするツールです。オブジェクトをコンストラクションするときに様々な設定をするけれども、それをいろいろなクラスで使いまわしたいとき、いちいち同じ設定をしてコンストラクションするのはコードに無駄がありますので、それを節約することができるというメリットがあります。ぼくもあまりわかっていません・・・。バリデーターはクラス内で完結するクラス開発の補助ツールですが、コンテナーはクラス間の開発の補助ツールという切り分け認識です。具体的に一つのディストリビューションとして切り出されているのは、Object::Containerくらいでしょうか?KamuiやPicklesのようにWAFに内在されいるケースもあるようです。

  • Object::Container
  • Pickes::Container
  • Kamui::Container

【追記:2011-12-10】このジャンルに関して『Containerという名のPerlモジュール群』として、詳細にまとめました。

最後に

以上、思うがままに列挙してみましたが、よくわかっていない点も多いので、ご指摘いただける箇所も多いと思いますので、ご一読して頂けて何か思うことがあれば気軽にコメント等頂ければ幸いです。今後、追記していったり、別の記事に切り分けてメモを厚くしていきたいと思います。

Perl update_at : 2011-12-10T18:15:23
hirobanex.netの更新情報の取得
 RSSリーダーで購読する   
blog comments powered by Disqus