ドキュメントが少ないというのは本当?
Perlは,歴史が長いわりに有用なドキュメントが少ない,という声を耳にすることがあります。また,ネット上に落ちている情報は断片的すぎるとか,古いものが多すぎるという苦情も聞こえてきます。なるほど,まわりを見回してみれば,たしかにいまさらこれはいかがか,という情報もたくさん見受けられますし,そのような世代間ギャップを埋めるのがこの連載のひとつの目的でもあります。
でも,その一方で,見るべき場所が違うんじゃないか,という気もするのです。Perlの情報は,そんなところには落ちていませんよ,と。
今回は,そのようなPerlのドキュメントまわりの話にスポットを当てていきましょう。
たしかに書籍の数は減っていますが
Perlの情報がない,古い,といわれる背景のひとつに,当今の出版事情が大きく関与しているのは間違いありません。筆者が把握できた範囲内で過去10年間に国内で出版されたPerl関連の本の数を数えてみると,Perl 5.8が登場した2002年(Perl 15歳)に29冊もの単行本が出たのを最後に,出版点数は長らく減少傾向が続いてきました(※1)。
| 2009年 | 3冊 |
|---|---|
| 2008年 | 3冊 |
| 2007年 | 4冊(Perl 5.10登場) |
| 2006年 | 8冊 |
| 2005年 | 7冊 |
| 2004年 | 10冊 |
| 2003年 | 19冊 |
| 2002年 | 29冊(Perl 5.8登場) |
| 2001年 | 24冊 |
| 2000年 | 10冊(Perl 5.6登場) |
- ※1
実際にはさらに(Perlベースの)Movable Type関連本などが何点か出ていますが,ここでは勘定に入れていません。
もっとも,これがそのままPerlの人気と連動していたかというと,そうとも言い切れないのがむずかしいところ。2005年以降の退潮にバブル的な人気を誇ったRuby on Railsの影響があったのは間違いないでしょうが,内外から500人近い参加者を集めるYAPC::Asiaのチケットがわずか3日で売り切れてしまうくらいの需要はあるのですから,これまで「モダンな本」がなかなか出てこなかった原因は,むしろ20世紀末から続く出版界の不況とそれによる出版傾向の変化や,日本のPerlユーザがブログという個人メディアで旬の話題を消費することに慣れてしまった結果,最低でも2~3ヶ月のタイムラグが生じてしまう出版コストに不満を感じてしまうようになった(2002年というのはMovable Typeの日本語化パッチが出回り始めた年でもあります),等々の問題の方が大きかったようにも感じられます。
単行本10冊分のドキュメント
ただし,Perlの情報が断片的なものになってしまう(ように見える)のは,そのような出版界の事情ばかりが原因ではありません。わかっている人にしてみれば,Perlにはすでに膨大なドキュメントの蓄積があるから屋上屋を架す必要がないだけ,でもあるのです。
これもまた忘れられがちなことですが,CPANというのは,ソースコードだけでなく,ドキュメントの集積地でもあります。
個々のモジュールのドキュメントについてはふだんよく見るCPAN検索サイトから確認できることをご存知の方も多いでしょうが,CPANに集まっているのはそれだけではありません。いわゆるPerlのコアドキュメントと呼ばれるものや,各モジュールのクックブックのようなものも結構登録されているのです。
しかも,これらのドキュメントは,ネット上だけの存在ではありません。みなさんが使っているコンピュータのなかにもどんどんインストールされていきます。
試しに,お手元のマシンで下記のコマンドをタイプしてみてください。
> perldoc perltoc
これはインストールされているコアドキュメントの目次一覧を表示するものですが,実はこれだけですでに400KBほど,英単語の数に直して5万6000語強の分量があります(※2)。
- ※2
と言われてもピンとこないかもしれませんが,これは,一般的な(200ページほどの)単行本1冊分くらいの分量に相当します。日本語に直せば400字詰め原稿用紙450枚分くらい――目次だけで,ですよ?
実際にどこにファイルが格納されているか確認したい方は,下記のコマンドを実行するか(lオプションはファイルの位置を教えてくれるものです),あるいはCPAN検索サイトでperlのソースを確認してみるとよいでしょう。
> perldoc -l perltoc
これらのコアドキュメントはディストリビューション内のpodディレクトリにまとまっているのですが,Perl 5.10.0の場合で,ファイル数が117個,総単語数は75万語弱(Perlのコード例を除いた正味の英単語数で64万語)。単行本にして優に10冊分のドキュメントが,困ったときの味方として同梱されているわけです。
個別のモジュールにしても,そう。たとえば前回紹介したように,MooseチームはPerl Foundationの助成金を受けてドキュメントの整備を行いましたが,その結果,Mooseのドキュメントは,podファイルにまとめられているマニュアル類だけで3万5000語(用例含めて4万5000語)。API仕様書ともいえるモジュール本体のドキュメント類を含めると5万語(用例込みで6万語)を越えるほどになりました。
Catalystにしても,4万4000語ほど(用例込みで6万語)のマニュアルに,1万3000語(同1万5000語)ほどのAPI仕様書が用意されていますし,DBIx::Classもマニュアル,API込みで2万8000語(同3万6000語)くらいの説明は書かれています。
たしかにこれらの大きなフレームワークについては,これでもまだ書かれていない部分はたくさんありますし,ソースの変更が速すぎてドキュメントが追いついていない部分も見受けられますが,このように基本的な説明はそれぞれすでに単行本1冊分くらいは存在しているのですから,ブログなどに書かれるネタはどうしても,そこから外れた枝葉末節や,マニュアルを読むよりソースを読んだほうが早いようなディープなネタ,バッドノウハウの類に限定されてしまいがちになりますし,また,そうでなければ,その人は(プログラマの三大美徳とされる)怠惰さが足りない,ということになるでしょう。
一般に,プログラマの世界ではわからないことがあったらまず検索をかけてみなさい(汚い言葉を使うなら「ググレカス」)と言われるわけですが,Perlの場合,Googleのような検索エンジンに頼るのは本当に最後の手段でしかありません。困ったらCPANに聞け,というのがPerlユーザの合い言葉であり,必要なものは全部インストールしておくから,あとは必要なときに自分の読みやすい形に整形して読んでね,というのがPerlユーザの怠惰のあり方。メーテルリンクの童話ではありませんが,幸せの青い鳥はもっと身近なところにいるのです(※3)。
- ※3
もちろん本当にすべてのドキュメントがCPANにあがっているとは限りません。ただし,よくできたモジュールであれば,かならず外部の(厳選された)ドキュメントへのポインタが用意されています。そのようなポインタがない場合はモジュールの不備ですからぜひパッチを送ってあげてください。

