Perl データマンジング

Perl データマンジング レビュー記事

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

(株)ピアソン・エデュケーション 様のご厚意により, 書籍 "Perl データマンジング" を ブックレビューコーナー にご献本いただきました. この本のレビューをして頂くべく, Linux Users ML や本サイトにおいて 公募 を行い, これにご希望頂いた方々より感想などをレビュー記事にまとめていただきました.

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

ピアソン・エデュケーション 様および レビューアの皆様のご厚意に感謝いたします.

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


Reviewed by 赤星 柔充 (yasumichi@users.sourceforge.jp) さん (HomePage)

「データの移植・再利用・設計のための参考書」

Linux の使用歴
1 年
UNIX の使用歴
3 年
Linux Box の主な用途
Web サーバー, C 言語によるプログラム
Linux 以外に利用している OS
Windows, Solaris
Linux と Linux 以外の OS の使用頻度の比
70:30

はじめに

私は C 言語でプログラミングすることが殆どで CGI や即席のデータ処理ぐらいでしか, Perl を利用した事がありません. 他の言語のプログラマの視点で書いている事をお断りしておきます.

本書は前書きにも書かれていますが, 最低, 入門書程度の Perl の知識を持っていないと読み進めるのが辛いです. しかし, 他の言語でプログラミングの経験があれば, 付録 B の知識で事足りるのでそれほど大きな問題ではないでしょう.

装丁について

どのくらいの読者に受けるか分かりませんが, 各部の扉にショートストーリーがあります. プログラマを英雄, データマンジングを怪物と喩えた有りがちなストーリーかも知れませんが, 昔, RPG が好きだった私にはちょうど良い仕掛けでした.

また, データを視覚化するなどアルゴリズムの理解には欠かせない工夫もきちんと行われていました.

欲を言えば, ソースとその説明の連携にもう一工夫欲しいところです.

単なるサンプルソース集に終わっていない

題名が壮大な割に単なるサンプルソース集に終わっている本が多い中, 比較的, 踏み込んだ内容になっています. データマンジングを体系立てて説明することに成功しており, その考え方は Perl 以外のプログラマにも参考になると思います.

また, 枝葉のアルゴリズムにとらわれず, CPAN のモジュールを積極的に利用している点が評価できると思います. 車輪の再発明をせずにモジュールを再利用する事の利点も書かれていて多くのプログラマに参考になるでしょう.

残念なのは, コードに Perl 特有の省略形が多くなっていることです. 紙面の都合上か Perl プログラマの性かわかりませんが, もう少し可読性の高いコードを利用した方がよいのではないかと思います. コードのコンパクト化は読者に任せればいいでしょう.

分かりやすい体系化

データフォーマットを大きく, 構造化されていないデータ, レコード指向データ, 固定長データとバイナリデータ, 複雑なデータフォーマット (主に木構造のデータ) の 4 種類に分けてその利用方法を体系付けています. (目次参照)

すべてのデータ形式を紹介するのは不可能でしょうが, これだけで抽象的なモデルケースとしては十分, 網羅されており, 汎用性も高いと思います.

また, 既存のパーサにとどまらず, 独自のパーサの構築について述べられているのは, 興味深いです.

まとめ

データマンジングは突き詰めれば, データの移植・再利用であると思います. また, これらの知識が有れば, 新しく作るソフトウェアのデータフォーマットの設計に役立つと思います.

データの移植・再利用・設計は何も Perl だけの問題ではないので他の言語のプログラマにも本書を読む価値があります. ひょっとすると, CGI 以外の分野に Perl を利用する事の価値を見出せるかもしれません.


Reviewed by 山内 浩和 (yamauchih@nttdata.co.jp) さん

「業務/趣味に活かせる実用的なコードが満載の良書」

Linux の使用歴
約 3 年
UNIX の使用歴
約 5 年
Linux Box の主な用途
Web/ファイル/メールサーバ, メール, Web 閲覧
Linux 以外に利用している OS
Windows 98/2000/XP, FreeBSD, Solaris
Linux と Linux 以外の OS の使用頻度の比
Linux : Others = 70 : 30

1. はじめに

「データマンジング」とは, 本書の表現を引用して説明すると, 「あるフォーマットのデータを受け取り, その他のフォーマットに変換することすべて」ということらしい. このようなデータの変換は, コンピュータシステムの至るところで当然のように行われていることであり, 日頃の私の仕事においても, データ変換を要する作業に遭遇する機会は多い. そこで「本書は, 日々の業務を効率よく進めるための一助となれるか」 という観点でレビュー記事を執筆することにした.

結論からいうと, 日々の業務はもちろん, 趣味の分野でも役立つ, ぜひ持ち歩きたい一冊である, と私は考えている.

2. 本書の良い点

本書の良い点を以下に列挙した. 上述の結論に至った主な理由である.

・実用的なサンプルプログラム
本書は, 1) やりたいこと, 2) サンプルコード, 3) コードの解説, という順で記述されている. このサンプルコードが非常に実用的であり, 本書の最大のウリだと考える. やりたいことが多少変わっても, サンプルコードを参考にして必要なコードを書くことができる. 実際, サンプルコードをベースにいくつかのデータ変換プログラムを作成して, 業務に役立てることができた.
・初級者にもやさしい
本書のサンプルコードの多くは, 効率を重視して書かれている. よって, 一読すれば誰でも理解できる, というわけにはいかないが, 十分な解説がなされているので, 読み進める上で特に苦痛を感じることはなかった. 理解を助けるため, 非効率だが直感的なコードが併記されている場合もある. また, 本書を読む上で必要となる Perl の基本的な知識/文法について, 付録でまとめられているのもありがたい.
・持ち歩いても苦にならない
データ変換に焦点を絞っているので, ページ数は 300 ページ程度に収まっている. しばらく持ち歩いてみたが, 特に苦にならなかった.
・いろいろなデータフォーマットの扱い方が取り上げられている
テキスト/バイナリデータ, 構造的/非構造的なデータ, PNG, MP3 等の一般的なフォーマットなど, 考え得るひととおりのデータフォーマットに関して, 扱い方が解説されている. XML や HTML, MP3 などの一般的なフォーマットについては, CPAN が提供する有用なモジュールの使い方が紹介されていて, 非常に参考になった.

3. 改善が望まれる点

1 つだけ気になった点を挙げておく.

・マルチバイト文字の扱いに関する記述がない
翻訳も秀逸で, 洋書であることを特に意識することなく読めるのだが, 冷静に振り返ると, 日本人なら当然遭遇するであろうマルチバイト文字列の扱い, 文字コード変換等に関する記述が全くないことに気づいた. 他の情報ソースで十分に補えるので欠点とまで言わないが, 改善ポイントとして挙げておく.

4. まとめ

繰り返しになるが, 本書のウリは実用的なサンプルコードである. 本書のサンプルコードをベースに, 各自の要望に応じたツールを作成して, 作業を効率的に進めることができる. 手作業で行うには面倒で退屈な作業であっても, ツールを作りながらであれば楽しく進められるだろう. 楽しみながら業務が進む/勉強できるので, この点からも, 初級者におすすめできる. また, 効率的なサンプルコードは, 中級を自認する方にも大いに参考になるだろう. データ変換に携わる方は, ぜひ本書を読んで, Perl によるデータマンジングを楽しんで頂きたい.

最後に, 今回レビューの機会を与えてくださった皆様, 執筆にあたりご助力頂いた皆様に感謝する.


Reviewed by 早川 祥 (sho_h@pop02.odn.ne.jp) さん

「データの扱いを学ぶことができる好著」

Linux の使用歴
3 年
UNIX の使用歴
6 年
Linux Box の主な用途
ウェブおよびアプリケーションサーバ
Linux 以外に利用している OS
Windows98/Me/XP
Linux と Linux 以外の OS の使用頻度の比
1 : 9

はじめに

本書で取扱っている「マンジング」というのは, データを加工し, 別フォーマットにして出力することを指すそうだ. これは広義に取れば, プログラムと呼ばれるものが基本的に行っていることとなり, すなわち特定業務というよりは, プログラマーとしての基本スキルに属するものといっていいだろう.

第I部:基礎

より具体的にマンジングというのがどのような操作を指しているのか, それになぜ Perl が向いているのかが, まず書かれている.

続いて基礎編ということで, マンジングの基本志向, Perl イディオムなどが紹介される. 基本概念から, 作業の際によくつかわれる基礎テクニックへと順に進むため, 素直に読みやすい. Perl イディオムは特に便利な小技を教えてくれ, 有用である.

一方で, パターンマッチングはマッチング演算子の説明から正規表現まで一通り解説される. 本書が Perl を扱ったことのある人向けで, それまでのソース例にもリファレンスを多用した少々複雑なデータ定義をしていたことに比べると, なぜここまで詳細な解説があるのか若干の疑問が残る. この章のみ, 本書のなかで位置付けがわかりにくく感じた. 解説そのものは平易で理解しやすい.

第II部:マンジング

生テキスト, 行指向, CSV, 固定長, バイナリと, 様々なケースでのデータ変換について解説されている. これらの章を通じて, どのようにデータを取得し, 変換をかければいいかという概念はつかめるだろう.

各フォーマットからのデータ抽出については, 可能な限り CPAN のモジュールを利用して説明をしている. すでに存在しているコードの再利用を促すという意味で, 無駄もなくいい方向だろう.

また, 変換の際によく問題となる数値や日付のフォーマット, それに文字コードについてもわかりやすく解説されている (文字コードは日本語にフォーカスされているわけではない. そのため, 説明不足気味に感じるかもしれない).

最初からこの章まで読めば, 基本的な「データマンジング」については困ることがなくなるだろう.

第III部:シンプルなデータパージング

HTML, XML について, いくつかの CPAN モジュールを用いて解析する方法を説明している. 最後に, 一歩進んで Parse::RecDescent というモジュールを用いて独自パーサを設定する方法について解説している.

基本的にはモジュールの使い方の簡単な説明に終始しているが, HTML でも XML でもデータを読めるようになるわけで, 本書のターゲット層からすると十分な説明といえるだろう.

惜しむらくは, XML の DTD を利用したパージングについては触れられてなかったことだ. 構造の複雑さを考えれば致し方ないが, 個人的には少々残念だった.

第IV部:全体像

付録 A のモジュールリファレンスは, 一部とは言え, 書籍で日本語訳されたものが増えたということを喜びたい. 付録 B の Essential Perl も概観が目的とはいえ, Perl の基礎について非常にわかりやすく, かつコンパクトに説明されているところがよい. 自分の Perl スキルに自信がない人は, この付録 B から先に目を通すと, 本書の理解もしやすくなるだろう.

総評

本書の取扱う範囲が「マンジング」という, 元々広範に渡るものではあるが, 使われるであろう多くのケースについて網羅できているのではないか. 具体的なデータパターンとソースコードも豊富で, なによりほとんどのソースが短く, 理解に一役買っている. 翻訳も丁寧で, 章の構成もわかりやすい.

価格は少々高いが, Perl 使いの初心者〜中級者には文句なく薦められる好著と言える. また, プログラムの初心者にも, データの扱い方を学ぶために読ませていい一冊だろう.

余談だが, 近年の新人は意外とデータ構造については考えたことがなかったりするため, 彼らにもぜひ読ませたい.


Reviewed by 古本 尚 (hisashi-komoto@ma.dic.co.jp) さん

「Perl を『肥後の守』に」

Linux の使用歴
9 年
UNIX の使用歴
0 年
Linux Box の主な用途
メール, インターネット
Linux 以外に利用している OS
Mac, Windows
Linux と Linux 以外の OS の使用頻度の比
2(Linux):4(Mac):4(Windows)

全体の感想

本書は, Perl 本来の得意分野である, データマンジング (浅学にも本書で初めて見た用語でしたが…) に, 絞って解説しています. WEB プログラミングに偏らず, 本来の Perl の強みであるテキスト加工を中心に, 非常にわかりやすい文体で説明された良書だと思います.

対象者

読みやすく面白い文書ですが, 基礎的な Perl の文法の解説は省かれています. またオブジェクト指向プログラミングなど, 煩雑になりがちな概念についても, ポインタを示すのみにおさえ, 中級者を強く意識した内容です.

余談ですが, ポインタとして示される書籍や URL が, 非常に的を射たものである点に, 大変好感が持てます. 初心者を卒業したい人への, よき指針になっていると思います.

第一部 基礎

データマンジングの概念から, 基礎となる構文上のテクニックまで, 簡潔に説明されています. テクニックそのものは特にオリジナリティの高いものではないので, Perl に慣れている人は, 読み飛ばしても良いかもしれません.

第二部 データマンジング

各種のデータフォーマット毎に, 効率良くデータを抽出, 加工するテクニックが記述されていますので, 自分が取り扱うデータの種類に応じて, リファレンス的に読むのに適しています. 古いホストが吐き出す, みっともない固定長データに苦しんでいる人にお勧めです.

但し, バイナリデータの取り扱いについては, 例示的で, 踏み込み不足と感じました. 本書のスコープ外として削ってしまう方が良いのではないでしょうか.

第三部 シンプルなデータパージング

かなり複雑な構造を持つ, HTML や XML を, 既存のモジュールを活用した簡潔な解法で解析しており, 大変参考になります. 第三部に限らず, 本書全体を通じて多くの役立つモジュールが紹介され, Perl らしい「不精さ」が強調されています.

第四部 全体像

簡単なまとめ.

うれしいオマケ

英語嫌いな私には, 「モジュールリファレンス」は, ありがたいオマケでした. また, 「Essential Perl」として Perl の基礎的な文法が収録されており, 初心者が本書を理解する手助けになると思います.

まとめ

Perl を, 日常的なデータ処理に使っている人にとって, 貴重な記述を含む良書といえます. 鉛筆を削ったり, 竹とんぼを作ったりしたように, Perl をデータ処理の「肥後の守」として, 自由自在にあやつりたいものです.


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