分12ドキュメントが少ないというのは本当?Perlは,歴史が長いわりに有用なドキュメントが少ない,という声を耳にすることがあります。ネット上に落ちている情報は断片的すぎるとか,古いものが多すぎるという苦情も聞こえてきます。まわりを見回してみれば,たしかにいまさらこれはいかがか,という情報もたくさん見受けられますし,そのような世代間ギャップを埋めるのがこの連載のひとつの目的でもあります。その一方で,見るべき場所が違うんじゃないか,という気もするのです。Perlの情報は,そんなところには落ちていませんよ,と。今回は,そのようなPerlのドキュメントまわりの話にスポットを当てていきましょう。たしかに書籍の数は減っていますがPerlの情報がない,古い,といわれる背景のひとつに,当今の出版事情が大きく関与しているのは間違いありません。15歳)に29冊もの単行本が出たのを最後に,出版点数は長らく減少傾向が続いてきました(※1⁠)⁠。Type関連本などが何点か出ていますが,ここでは勘定に入れていません。これがそのままPerlの人気と連動していたかというと,そうとも言い切れないのがむずかしいところ。Typeの日本語化パッチが出回り始めた年でもあります⁠)⁠,等々の問題の方が大きかったようにも感じられます。単行本10冊分のドキュメントただし,Perlの情報が断片的なものになってしまう(ように見える)のは,そのような出版界の事情ばかりが原因ではありません。わかっている人にしてみれば,Perlにはすでに膨大なドキュメントの蓄積があるから屋上屋を架す必要がないだけ,でもあるのです。これもまた忘れられがちなことですが,CPANというのは,ソースコードだけでなく,ドキュメントの集積地でもあります。個々のモジュールのドキュメントについてはふだんよく見るCPAN検索サイトから確認できることをご存知の方も多いでしょうが,CPANに集まっているのはそれだけではありません。いわゆるPerlのコアドキュメントと呼ばれるものや,各モジュールのクックブックのようなものも結構登録されているのです。これらのドキュメントは,ネット上だけの存在ではありません。みなさんが使っているコンピュータのなかにもどんどんインストールされていきます。試しに,お手元のマシンで下記のコマンドをタイプしてみてください。perltocこれはインストールされているコアドキュメントの目次一覧を表示するものですが,実はこれだけですでに400KBほど,英単語の数に直して5万6000語強の分量があります(※2⁠)⁠。※2と言われてもピンとこないかもしれませんが,これは,一般的な(200ページほどの)単行本1冊分くらいの分量に相当します。日本語に直せば400字詰め原稿用紙450枚分くらい――目次だけで,ですよ?実際にどこにファイルが格納されているか確認したい方は,下記のコマンドを実行するか(lオプションはファイルの位置を教えてくれるものです⁠)⁠,あるいはCPAN検索サイトでperlのソースを確認してみるとよいでしょう。5.10.0の場合で,ファイル数が117個,総単語数は75万語弱(Perlのコード例を除いた正味の英単語数で64万語⁠)⁠。単行本にして優に10冊分のドキュメントが,困ったときの味方として同梱されているわけです。個別のモジュールにしても,そう。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にあがっているとは限りません。よくできたモジュールであれば,かならず外部の(厳選された)ドキュメントへのポインタが用意されています。そのようなポインタがない場合はモジュールの不備ですからぜひパッチを送ってあげてください。JPA著者プロフィール石垣憲一(いしがきけんいち)あるときは翻訳家。あるときはPerlプログラマ。先日『カクテルホントのうんちく話』(柴田書店)を上梓。最新刊は『ガリア戦記』(平凡社ライブラリー)。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。