CPANの漁りかた

CPANの漁りかた

Perlの学習コスト高いよね、て感じのエントリが目立つのでふと思い返してみると、ぼくは1年前は 救命病棟でいうところのレベル4くらいでした。変数に our をつけると何がどう違うのかわかなかったりしたのを覚えてます。

その後1年、今はレベル8弱ってとこでしょうか。バグレポートはなるべく出すようにしていますが、車輪になりそうで、モジュールはまだ上げてません。

この1年どうやってレベルを上げてきたかなといえば、CPANあさり、これに尽きます。で、これから Perlやるぞって人にもしかして参考になるかもしれないので、ぼくがやってきた自己流の漁りかたを書いておきます。

1. まずはPerlStyleを読み直す

miyagawa さんが以前 WEB+DB PRESS で連載していた Perl Style というのを、総集編マガジンで今も入手可能です。これはロギングとか OR マッピングなどの基本的題材を、最初に“スクリプトっぽい”Perlで書いたのち、少しずつ現代 Perl コード的に書き換えていくというわかりやすい良記事です。時期が古いこともあって使われているモジュールは必ずしも今風ではないのですが、CPAN モジュールの使い方(置き換え方)のコツがつかめます。

2. 基本モジュールをおさえる

プログラミングPerl volume2の31章にあるプラグマモジュール(strict, warnings, lib, base など)をおさえ、32章にある標準モジュールの主だったものをおさえる。

3. search.cpan.org に慣れる

これかな?というモジュールを開いてするのは、

  1. SYNOPSIS をチェック →
  2. パンくずリンクを一つ上に行って、そのモジュールの更新頻度を見 →
  3. さらにもう一つ上に行ってその作者のモジュール一覧を見る →
  4. もどってPODの下の方まで見 →
  5. Source をクリックして実装をながめる →
  6. 気に入ったら入れてみる、

という感じ。このあたりで気づきたいのは、Perl の世界の公用語は英語であるということ。例えばウェブアプリのバックエンドを作ってるプログラマが、自分で書かなくても HTML や CSS を読めた方がよいのと同じ。

ドキュメンテーションやバグレポートの公用語として英語が使われる。話せなくていいし英辞郎片手でよいから、英語を読むことをあきらめない。というか CPAN モジュールの英語は基本ソースの説明なので、そんなに難しくない。書いているのもみんながみんなネイティブの人じゃないしね。

4. 達人から知る

で search.cpan.org に慣れてくると、けっきょくどれがベストプラクティスなのかわからないよ、ってことになってくると思うので、そこは先人の結論をいただく。

Perl Advent Calendar というページがあって、そこで紹介されているモジュールはPerlハカーの間で評価が高いものということみたい。(けっこうここで面白いのみつけたんだけど、なんか今見れない。キャッシュ探して見てください)

The Phalanx 100 これは質の高いモジュール100ということらしい。

Perl Best Practices は、読まなきゃ損。洋書だけどだいじょうぶ。細い字がだめなコードで、太い字が良いコード。そんだけ。巻末にレコメンドモジュール集が付いてる。ただし筆者 Damian 先生の好みがだいぶ反映されてる。

5. トレンドを知る

*.perl.org の サブドメインをもって大々的に開発し始めたものは今後の主流になっていくモジュールらしい。例えば、DateTimeImager とか。Imager、0.46以降 EXIF サポートしてすごい良い感じ

Shibuya.pm とかでスピーカーをやったりする人のブログや、Bookmark を RSS リーダに登録する。そうすると必然的に、Catalyst や Plagger が盛り上がっているのがわかるので、そういったコードを読んでどんなモジュールをどんな風に使っているのか知る。

リンクは貼らないけど、個人のリポジトリを公開している人がけっこういるので、そういうのを拝見するのも参考になります。

6. 自分で見つける

CPAN Recent の RSS を登録する。自分が使っているモジュールのUPDATEはもちろんチェック。あと知ってる author のモジュールはチェック。特に YAPC でスピーカーやっていたような人のは要チェック。

そして見ず知らずのモジュールについては、ジャケ買いならぬ、単語買いをする。どんな単語がおすすめかというと・・

Perl界では「かっこよい」とされる英単語が Java とか Ruby とかとはちょっと違う気がする。ある構造なり機能そのものを正確に表現した単語より、短くてウィットに富んだ単語が好まれる(と思うのはぼくだけかなあ?)。そんな単語を見つけたら要チェック。例えば Sweet とかそういう単語

あと、「簡単」という意味の単語をつけてくる奴も使えるモジュールが多い。具体的には、SimpleEasyLiteFast、そういうのを見つけたら要チェック。

最後にこれはちょっと難しいけどトップレベルで繰り出してくる奴には、とんがったモジュールが多い。なんとか::なんとか じゃなく Plagger とか Catalyst とか。まあ当たりはずれあるけど。

Elementary, ...

Naoki Tomita