Perl クックブック

Perl クックブック レビュー記事

[ ブックレビューコーナー 目次 ]

株式会社オライリー・ジャパン 様のご厚意により, 書籍 "Perl クックブック - Perl の鉄人が贈るレシピ集" を ブックレビューコーナー にご献本いただきました. この本のレビューをして頂くべく, Linux Users ML や本サイトにおいて 公募 を行い, これにご希望頂いた方々より感想などをレビュー記事にまとめていただきました.

ここに, レビューアの方々から寄せられたレビュー記事を公開します. (原稿到着順)

株式会社オライリー・ジャパン 様および レビューアの皆様のご厚意に感謝いたします.

なお, 以下のレビューは初版を対象としています.


Reviewed by 武藤健志 (kmuto@debian.org) さん

「質と量を併せ持つ非常に優れた Perl のテクニック集」

Linux の使用歴
7 年
UNIX の使用歴
9 年
Linux Box の主な用途
Illustrator と PageMaker と Excel 以外の PC OS でできることはすべて
Linux 以外に利用している OS
Windows 2000
Linux と Linux 以外の OS の使用頻度の比
9 : 1 (もっと極端かも)

入店

まずは表紙から見ていこう. オライリーの書籍で毎回注目の的となる表紙の動物には Perl のマスコットキャラクタとなりつつあるラクダではなく, オオツノヒツジが選ばれている (ちょっと頭でっかち). その下には, Perl 界において名を知らない者はいない, 鉄人 Tom Christiansen 氏の名前が燦然と輝いている (おっと Nathan Torkington 氏も忘れてはいけない). 彼の過去の執筆作品においての深い知識と正確な著述には定評があり, その秘密のレシピがここに一挙公開とあれば期待せずにはおれまい.

さらに奥付前には翻訳助言者の名前として日本の Perl の鉄人, 前田 薫氏の名前が入っている. 翻訳の技術的な面での信頼性がより高められていると期待できる.

本日のコース

では中身に入ろう. 各章の文書構造は一貫しており, まず概要を説明したあとにいくつかのレシピが紹介されている. 各レシピは, ある課題, その解法, 解説, そしてさらに深い知識を得るための参考文献の紹介で構成されている. 各章の冒頭にちょっとした格言があるのも, ミーハー的な楽しみをくすぐってくれる (今一ヒネリが足りないのが残念).

550 近くのレシピは, さすが鉄人によるもの. 質と量をここまで併せ持ったものはほかに類を見ない. よく見受けられる質問に対する解から 「こんなことまでできるのか」といった高度なものまで, Perl の無限の懐の深さを感じさせる. しかも, 下手なプログラマが書くとすぐに長くなってしまいがちなスクリプトを, 鉄人らしくきわめて簡潔にまとめているのが小気味よい. Perl プログラマを目指す人は, この域に達することを目標にされたい.

また, 翻訳物には珍しく, レシピ 6.18 では「マルチバイト文字にマッチさせる」と題して, 日本語を含めたマルチバイトの扱いも紹介している (それとも翻訳段階で追加されたものだろうか?).

原書は 1998 年の出版のため, 現時点で最新の Perl 5.6 ではなく, Perl 5.004 に基づいて記述されている. とは言え, ここに書かれていることはそのまま Perl 5.6, および今後登場する Perl 6 でも同様に利用できるものだし, 一字一句をなぞるのではなくレシピの底にある「考え方」を身につけることが本書の読者の心がまえとして重要であると思われる.

本日のシェフのお勧め

次に, 訳者やオライリー・ジャパンの独自性が発揮される部分について見ていこう. まず, 訳は幾分直訳ぎみで固いところはあるものの, オライリーっぽい文とも言えるし, (原書と照らし合わせてはいないが) おかしな訳と思われるところは特に見受けられなかった. これだけの分量を 1 人でこなされたということで, 訳者の田和 勝氏の相当な努力と深い知識がうかがわれ, 敬意を表したい.

それほど数は多くないが, ときどき入っている訳注 (これは前田氏によるもの?) は本文で引っかかる部分をしっかりカバーしており, 好感が持てる. 日本語の処理において発生する問題やその対処方法などがもっと入っているとなおよいが, これは贅沢な要望かもしれない.

サンプルスクリプトのタイトル目次が別に設けられていたり, 索引が比較的充実しているのも嬉しいところだ. 特に索引がないがしろにされやすく, 的外れな単語ばかり抜き出されていたり, さらには索引がなかったり, といった書籍も多いが, 本書はまずまず十分なレベルにあると思われる.

味はいいんだけど…

さて, ここまで誉めてきたが気になった点も述べておきたい. まず, 本文でのフォントの使い方が挙げられる. これは原書の手法をそのまま持ってきたのかもしれないが, きわめて読みにくい. たとえば, 次のような文がある (Mozilla などで見ていただきたい).

perlfunc(1) および『プログラミング Perl 改訂版』の「3.2 Perl の全関数」のreverse関数, 本書の「レシピ 4.10」, 「レシピ 1.6」.

コマンド名 perlfunc は斜体, 参照先には太字, 関数名 reverse にはタイプライタ体が使われている (このほかコマンドの実行結果には太字斜体が使われる).

まず, 斜体は「コマンド / ファイル名 / URL / メールアドレス」に当てられているようだが, 英文の中に埋め込まれている場合と違い, 日本語の中に斜体英字を使うのは可読性を損い, 強調の意味があるのに「大事なところに限って読みにくい」ということになってしまう. ここはタイプライタ体でも十分ではないだろうか.

さらに論外なのが太字である. 太字は通常, 読者に強く注意を喚起するために使われるが, 多発する参照に使ってしまっているため目にうるさい. その上「本文中の技術用語や概念, 参照事項などを強調するときに用いる」と本書の表記規則に書かれている. 全体を見渡して参照以外で太字になっているところは見当たらないとは言え, あまりにもまずい. また, ほかの書籍の参照にまで太字を使っているので, 本書の章との区別も付けにくい. 太字を, 語句の明示的な区切りのほか強調の意味もある「」で囲んでいるのも混乱する.

全体を通して 「体裁に凝りすぎる人によるやたらとフォントを使っている文章」 を見ているような感じで, 装丁と文章の内容が豪華な分, 可読性の悪さが目に付いてしまう.

雰囲気が今ひとつ

もう 1 つの気になった点は, 「クック」「レシピ」という言葉を使いながら, それを漂わせる雰囲気に乏しいところだ. たとえば「調理時間」で難易度を表す (実世界では長いほど難しい料理ということはないが), サンプルの例文に Hacker の食生活をパロディ化した文章を使う, といった遊び心が欲しい気がする. とは言え, 余計なものは見たくないという人にとっては無駄な情報なので, 好みの分かれるところだろう.

食後に

まとめると, (フォントの使い方にさえ目をつぶれば) 非常に優れた Perl のテクニック集であると言えよう. 頭からじっくり見ていくような読み物としてはあまり向かないが, 本書で参照されている『プログラミング Perl 改訂版』や『初めての Perl』 (共にオライリー・ジャパン) を使って Perl を勉強しているなら必携の本だ.

特に『プログラミング Perl 改訂版』を持っているなら, 迷うことはない. 今すぐ本屋に走ろう.


Reviewed by 佐藤喬 (satou-t@spa.is.uec.ac.jp) さん

「Perl を今よりも上手に使いたい人にお薦め」

Linux の使用歴
6 年
UNIX の使用歴
6 年
Linux Box の主な用途
Web ブラウジング, mail の読み書き
Linux 以外に利用している OS
IRIX, NetBSD, Solaris
Linux と Linux 以外の OS の使用頻度の比
1:9

はじめに

Perl の基本的な文法を入門書などで一通り理解しても, 実際にプログラミングしようとして戸惑った経験はありませんか? 例えば,

といったことをやりたいが, どのようにプログラムを書けば良いのかわからないという状況です.

こういうときは他人のプログラムが役に立ちます. つまり似たようなことをしているプログラムを探し, 必要な部分を真似するのです. Perl に限らず他の言語でも他人の書いた上手なプログラムは良い参考書となります. 自分の知らない技術や定石, 作法を学べるからです.

本書の特徴と使い方

しかしプログラム中から必要な部分を見付けることは慣れないと大変ですし, 参考になるプログラムを探すこと自体労力を必要とします.

本書『Perl クックブック』は 簡潔なサンプルプログラムと解説をレシピという形で豊富に収録しています. レシピの一覧は目次から参照できるので, 自分の疑問に思っている (もしくはそれに近い) ことの解決策を比較的容易に得ることができるでしょう.

レシピは解決したい問題とそれに対する解法で構成されています. 解法は複数用意されているものもあり, 解説ではそれぞれの解法に対して仕組みや特徴 (速度面やどのモジュールが必要かなど) が記述されています. Perl の入門書を理解できる人ならば解説も理解できます. またレシピの最後には参考となる別のレシピやオンラインマニュアル, 書籍があげられています. 電子化されている情報は便利ですから, 特にオンラインマニュアルは適宜参照することをお勧めします.

本書は最初から順に読んでいく必要はありません. 目次で興味のあるレシピを選んで読み, 参考となる他のレシピやオンラインマニュアルを読んでいくのが面白いでしょう.

おわりに

本書を読むうち, 昔書いたプログラムを書き直したくなる場面がたびたびありました. 実際に書き直してみると, すっきりとしたプログラムになり, 中には実行時間が約 1/3 程度に短縮されたものもあります. 他にもレシピから新しいプログラムのアイディアが生まれるなど, Perl プログラミングの活力剤として役立っています.

本書は分量も多く, 値段もそれなりにしますので購入をためらう場合があるでしょう. そんな時はちょっと立ち読みしてみてください. 今疑問に思っている, もしくは疑問に思っていたけどあきらめてしまった問題が目次の中にあるかもしれません. そしてそのレシピの内容が目から鱗が落ちるほど素晴らしいものかもしれません. 本書は値段に見合った内容をもつ良書だと思います.


Reviewed by 八田真行 (mhatta@po.airs.net) さん

「『プログラミング Perl』と並ぶ Perl の定番」

Linux の使用歴
4 年
UNIX の使用歴
4 年
Linux Box の主な用途
レポート書き, メール, Web ブラウジング, Debian パッケージ管理, プログラミング
Linux 以外に利用している OS
Solaris, Windows NT 4.0, Windows2000
Linux と Linux 以外の OS の使用頻度の比
9:1

概要

この本は, Perl の標準的教科書である通称「青ラクダ」こと 『プログラミング Perl』の姉妹本という位置づけで, いわば Perl にできることのエキシビション (展示会) といった趣である. サンプルコード集に説明がついたもの, とでも言えば分かりやすいだろうか.

構成

「クックブック」だけに各項目は「レシピ」と呼ばれており, 各章 10 個から 20 個程度が ごく簡単なものからいくらか複雑なものへと配列されている. 章の最後にはサンプルとしてある程度まとまったプログラムも掲載されている. 「ディレクトリとその中身を削除する」「メールをソートする」という具合に 各レシピ/プログラムのタイトルは目的指向で明快そのものなので, 自分に必要な内容は目次をちょっと眺めれば容易に見つけ出すことができるだろう.

内容

各レシピでは最初に解決すべき問題が提示され, 続いてそれに対する解法と解説が与えられている. 挙げられた問題は十分に一般性のあるものだし, 解法はシンプル, 解説も明快である. 個人的には一部のフォントの使い方に違和感があるが, レイアウト的には十分な行間が取ってあるし, この手の本には珍しく印刷されたソースコードが読みやすいのも評価したい. 各レシピには参考文献も挙げられているが, 邦訳だけではなく原著のタイトルも載っているのはありがたいところだ. 『プログラミング Perl』の関連するトピックへのポインタも示されているので, 不明な点があればそちらを当たるのも容易だろう. 索引も充実している.

本書の読み方

本文は 779 ページに達し, 見た目にも相当なボリュームがある. 通読というよりはおいしい部分を「つまみ食い」するのが適当だろうし, またそれが副題の「レシピ集」という趣旨にも合致していると言えよう. とは言え, 「文字列」「数値」という具合にテーマ別に 20 章に分かれていて, 一つ一つの章はそれほどの量ではないので, 一章ずつ読んでいくことも不可能ではない.

まとめ

あいにくレビューワは Perl は初心者もいいところなので, レシピで挙げられた解法がどれだけ妥当なものなのか判断はできないのだが, 書籍としては非常に読みやすいという印象を受けた. ロジカルな構成もさることながら, これは良くこなれた日本語訳にも多くを負っていると思われる. 5800 円という値段は決して安くないが, これだけ盛りだくさんな内容ならば納得できる線だ. しかし, 電車で立ち読み, にはかなり厳しいサイズではある...

Perl 初心者ならば常に手元に置いておきたい座右の「定番」と言って良いと思うが, 反対に, それほど突っ込んだことが書いてあるわけではないので, ある程度「小ワザ」を身につけた Perl 中級者から上級者には物足りなく思えるのかもしれない. 個人的には, 「2 章 数値」や「20 章 Web オートメーション」のあたりが興味深かった.

いかにもオライリーらしい, かっちりした一冊というのが一読後の感想である. 買って損はないだろう.


Reviewed by 山本 浩 (hiroshi@246.ne.jp) さん

「最初から本書で学べる人は幸せです」

Linux の使用歴
4 年
UNIX の使用歴
15 年
Linux Box の主な用途
Linux およびそのアプリケーションの検証
Linux 以外に利用している OS
Windows98
Linux と Linux 以外の OS の使用頻度の比
1 : 9

本書との因縁

この本には, 悔しい思い出があるんです. それは去年の初めのこと, "Perl in a Nutshell" (邦題「Perl クイックリファレンス」) の翻訳完了後, 仕事が途切れて困っていた私は, オライリーの担当者にメールしました.

私「早速ですが, "Perl Cookbook" は翻訳中もしくは予定済みでしょうか? もしまだでしたら, ぜひぜひ翻訳させてください」.

オ「あー, 申しわけありません. すでに別の担当者によって作業が進んでおります. 去年からやっているのですが, まだ技術チェック等に時間がかかっているようです」.

私「がびーん (ToT)

それからさらに 1 年を経た今ようやく登場した本書ですが, 以上のような事情から個人的にも出来が非常に気にかかっていたので, 脊髄反射的にレビューに応募してしまった次第です.

本書の位置付け

『プログラミング Perl 改訂版』, 通称「青ラクダ本」は, C 言語の K&R に相当する, Perl ユーザーにとってのバイブルですが, その前の「赤ラクダ本」に比べて, いくつかの欠点を持っていました. その 1 つが, 具体的かつ実用的なサンプルが大幅に削減されてしまったことです. 正直言って, 青ラクダ本だけでは良く分からないことが数多くあり, インターネット上の情報をもとに試行錯誤を重ねたことを思い出します (内容に誤りが多かったのも原因の 1 つですが).

これは, Perl 自体が 4 から 5 に変わったことで, カバーすべき項目が飛躍的に増えたため, 赤ラクダ本と同じ密度, 同じ構成ですべてを記述するには, あの大書をもってしても, なお 1 冊では足りなかったということでしょう. そのため, 巷では増補版ないし第 3 版を望む声が少なくありませんでした.

実はこの点は著者たちも承知の上のことだったようで, 本書のまえがきの中で, 次のように述懐しています:

本書は, 『Programming Perl 1st ed.』の 2 つの章に端を発している. 「5 章 Common Tasks in Perl」と「6 章 Real Perl Programs」の 2 つだ. …<中略>…『Programming Perl 2nd ed.』の編集をするうち, 「これは相当分厚い, あるいは複数ボリュームの新しい本を書き下ろさないと とてもあの 2 つの章に相当するものはできない」ということがわかってきた. 本書は『Programming Perl 2nd ed.』の 2 年後に発行されたもので, 上記の 2 つの章に匹敵する本を作ろうとした結果だ. 2 年待っただけの価値はあるものと信じている.

まさに, すべての Perl 5 ユーザー待望の書というわけです.

内容について

Perl 5 の定石を集めた本としては, これまでにも『Perl 5 パワフルテクニック大全集』 (インプレス) がありました. 内容, 翻訳ともに良く出来た, とても実用性の高い本ですが, それと比べたとき, 本書の最大の特徴の 1 つとしてその「オフィシャル」性があります. 何と言っても, 青ラクダ本の共著者の一人であるトム・クリスチャンセンが書いているのですから, それだけでも類書とは格が違うと言ったところでしょう.

内容的な特徴としては, その網羅性があげられます. 『パワフルテクニック』が実用性を最重視し, 現実に出くわしやすい問題に絞って, 代表的な解だけを示しているのに対し, 本書では, かなり瑣末な内容にまで踏み込んだ解説が行われています. また, 解もワンパターンではなく, 色々なプログラマの手による様々なスタイルのコード例が含まれています.

たとえば, 『パワフルテクニック』では, ファイルのオープンについては特に項を設けず, ファイルの読み込み方法の中で, open の使用法を説明しています. それに対して本書では, オープンだけを独立した項として取り上げ, かつ open だけでなく sysopen についても言及しています.

それぞれの項目について, 末尾に青ラクダ本での参照先が明記してあるのも便利です.

実際にコードを書く際にどちらが役立つかは場合によりけりですが, リファレンスという面で, 本書の持つ意味は大きいでしょう. 読み物として面白いのも (時に鬱陶しいのも) 本書です. 後は, 『パワフルテクニック』に見られる, Perl 4 との互換性やプラットフォーム別の対応に関する記述があれば完璧だったかも知れません. CD-ROM も, 付いていればカットペーストに便利だったと思いますが, 本書の性格上, それほど大きなスクリプトが含まれているわけでもないので, この点も問題にはならないでしょう.

翻訳について

さて, 評者にとって最大の関心事だった翻訳の質ですが, 変に奇をてらったところのない, 読みやすい文体です. そのおかげで, 著者ら一流のもったいぶった言い回しやジョークも, ラクダ本の場合ほど鼻につかなくなっています. 数学関連の項目で, 「求める」と言うべきところをすべて「とる」と訳しているところや, 一部訳語の選定など, 気になる部分も皆無ではありませんが (先ほど引用した個所でも, 「相当」という語の重複や, 「ボリューム」という訳語に, 配慮の不足を感じます), 全体として見れば (特に, 抑制の効いた文体を好む評者の立場からすると) 良い訳だと思います. これなら, ラクダ本にイラついた人でも許容範囲なのではないでしょうか.

結論

以上のように, 内容, 翻訳ともに非常に優れた本であり, つきなみですが, すべての Perl 5 ユーザー必携の書だと思います. 最初から青ラクダ本に加えて本書で Perl 5 を学べる人は幸せです. 誇張ではなく, 青ラクダ本だけで学ぶ場合の半分以下の労力で 倍以上の知識と経験を得ることができるでしょう. また, すでに Perl 5 をマスターした人にとっても, 本書は充実したリファレンスの役目を果たすに違いありません. TMTOWTDI を地で行くバラエティー豊かなサンプルから, きっと何か新たなヒントが見つかるはずです. 間違いなくお勧めの一冊です. 唯一心配なのは, 本書を読了する前に Perl 6 が出てしまうのではないかという点だけですね. (^^)


[ ホーム | マップ | ニュース | 検索 | ドキュメント | リンク | プロジェクト ]
このサイトに関するご意見・ご要望は Webmasters までお願い致します.