2008年06月20日 01:00 [Edit]

$this->get if $you->learn(slow) - 書評 - すぐわかるオブジェクト指向Perl

著者より献本御礼。

「すぐわかる」のタイトルに反して、「すぐにわからない人が、すぐではなくあくまで自分のペースでゆっくり学ぶ」のに向いた良書。ウサギタイプではなく、カメタイプの人が Perl を学ぶのであれば、本書が第一選択肢となるべきだ。


本書「すぐわかるオブジェクト指向Perl」を著者が著したのは、リャマ本およびアルパカ本では学べなかった読者がいるからだと著者は言う。

添え状より
Danさんはブログに「Perlを学ぶ最短ルートはリャマ本とアルパカ本を読むこと」と書かれています。同感ですが、ぼくの同僚などはリャマ本を読ませても飽きてしまいます(実験済み)。

そんな著者が、同僚のために書いたのが本書である。

目次 - 書籍案内:すぐわかる オブジェクト指向 Perl|gihyo.jp … 技術評論社より
■第1章 いきなりモジュールを使ってみる
1-1 本書のあらすじ
1-2 File::Find モジュールを使ってみよう
■研究コーナー1 一気読みモードでの文字列操作
■第2章 「参照」は小粒でピリリと辛い~スカラーリファレンス~
2-1 リファレンスとは何か
2-2 リファレンスのデリファレンス
2-3 デバッガーを使ったプログラムのステップ実行
2-4 名もないスカラー~無名スカラーリファレンス
■第3章 配列のリファレンス
3-1 配列のリファレンス
3-2 配列要素へのアクセスと矢印記法
3-3 2 次元配列
3-4 シンタックスシュガーが利かない場合
3-5 無名配列
■第4章 ハッシュのリファレンス
4-1 ハッシュの復習
4-2 ハッシュリファレンス
4-3 無名ハッシュ
4-4 2 次元ハッシュ
■第5章 サブルーチンのリファレンス
5-1 サブルーチンの復習
5-2 サブルーチンのリファレンス
5-3 無名サブルーチン
5-4 サブルーチンリファレンスの応用
■研究コーナー2 リファレンスのまとめとシュウォーツ変換
■第6章 ライブラリを取り込むrequire
6-1 サブルーチンライブラリの作成
6-2 ライブラリの格納場所と配列変数@INC
■第7章 名前空間を作るpackage
7-1 パッケージとは何か
7-2 package とライブラリ
7-3 パッケージ変数、my 変数、そしてour 変数
■第8章 モジュールを使うuse
8-1 モジュールとuse
8-2 import による名前の輸入
■研究コーナー3 本当にFile::Find を自作してみよう
■第9章 オブジェクト指向モジュールの活用
9-1 オブジェクト指向とPerl
9-2 CPAN の活用
■第10章 静的クラスの作成
10-1 クラスとメソッド
10-2 クラスの継承
10-3 現状での到達点
■第11章 オブジェクトクラスの作成
11-1 オブジェクトとは
11-2 オブジェクトクラスの作成
11-3 オブジェクトクラスの増強
■第12章 演算子のオーバーロード
12-1 オーバーロードとは
12-2 変換演算子のオーバーロード
12-3 四則演算子のオーバーロード
12-4 特殊演算子nomethod
■第13章 オブジェクトクラスの継承、デストラクタ、永続化
13-1 オブジェクトクラスの継承
13-2 デストラクタ
13-3 オブジェクトの永続化
13-4 コンポジション
13-5 CPAN モジュール
■研究コーナー4 対決!ベンチマーク~オブジェク
■第14章 オブジェクト指向モジュールを使ったCGI
14-1 CGIpm を使おう
14-2 レンタルサーバーへのCPAN モジュールのインストール
14-3 ユーザー入力の実装
■参考図書
本書のプログラムの使い方について
ActivePerl を入れる
ディレクトリを作り,プログラムを置く
テスト
コマンドプロンプトのコマンド
長い表示結果を見るには
ActivePerl のTips

まず、上級者におねがい。第7章の終わりまでは自重すること!なにしろここまではuse strict;もされておらず、とほほでK.NTなコードが続くからだ。告白すると、私もそこまでは「2008年にこれはありえん!しかも技術評論社で!」と誤爆しそうになった。

しかし、第8章からはコードがぐんぐんきれいになっていき、そして第10章に至って、Shibuya.pmでも発表できるレベルの、モダンでビューティフルなコードになるのだ。そこを過ぎれば、上級者も納得して読了できる。

次に、本書の主たる読者にお願い。もし本書をひもといたら、最後まで「やって」下さい。単に読むのではありません。必要なところは写経してください。特に第10章では、さみだれ式に書いた「とりあえず動く」コードを refactor = どんどん清掃していくので、この部分だけでも、最終コードではなく refactor の過程全体を手で追って下さい。後生なので第7章より前で放り出さないで下さい。本書を使う上で、それが最悪のパターンです。そこまでは著者はわざとださいコードで書いているのですから。

ただし、本書を使い終わった後で、コーディングスタイルにおいてuse strict;の直後にuse warnings;を書き加えて下さい。

本書の例
#!/bin/perl -w
use strict;
現在の業界標準
#!/usr/bin/perl
use strict;
use warnings;

という感じです。理由は、

をご覧下さい。

本書を読了後、少し反省した。何を反省したかというと、学習曲線について。というか、学習曲線の個人差について。

悪問だらけの大学入試」pp.156-157
 一つは私どもが「理解型」あるいは「肯定型」「予定調和型」とネーミングしているパターンであり、もう一つが「納得型」である。
 第一のパターンの理解型は教室で授業を受けるときや参考書を読むとき、すべてを頭から正しいものとして受け止め、肯定的に理解しようとする。たとえば先生がテスト問題を作り、問題に若干の誤りがあったとしても、「先生はきっとこういう問題を作ろうとしたのであろう」と肯定的に解釈し、素直に問題を解く。
 もう一つのパターンである納得型であるが、このタイプの人は一つ一つの事柄に対して、納得できないと気が済まない。大げさに言えば、森羅万象に照らして正しくなければ納得できない。
 問題にミスがあれば指摘する。授業中に疑問点があれば質問する。「こんな質問したら皆に変に思われないか」などの詮索はあまりしない。問題が解けないと、そこで膠着してしまってなかなか先へ進めない。所詮人間の作った問題だから予定調和的に......などという生活の知恵は働かない。
 しかしいったん納得できると喜びが体に満ち、勇気百倍して先へ進む。

Shibuya.pmのメンバーをはじめ、blogosphereで幅をきかせている Perl Mongers (私を含む)は、上で言うところの「納得型」に対して充分配慮してきたか、ということだ。

こういうのも何だが、YAPC::Asia の参加者、それもスピーカーたちはめっちゃ頭の回転が速い人々だ。この点において彼らは確かに talented で gifted である。彼らにも多かれ少なかれその自覚はあり、そうでない人々に対してはテンポを変えなければならないことも知識として知ってはいる。しかしあの高密度の Lightning Talks の快感を知ってしまうと、どうしてもテンポをあわせなおすのはかったるくなる。視点がサイヤ人だったりハンターのそれになっていないだろうか?

人は経験の虜である。どうしても「教える」ともなると、ペースは自らの成長曲線をアレンジしたものになりがちだ。それが自分にとってゆるやかな上り坂であっても、生徒の多数にとって断崖絶壁である可能性を忘れて、つい自分達だけがずんずん進んでしまう。

リャマやアルパカは、私から見るとずいぶんとゆっくりなのだけど、それでも速すぎる生徒がいることを忘れてはならないのだ。しかし、本書なら大丈夫。カメでも学べます。ただし、手をきちんと動かすこと。読むだけではまた放り出す羽目になるはず。

動物(本)が苦手なあなた、是非お試しあれ。

Dan the Perl Monger


この記事へのトラックバックURL

この記事へのトラックバック
オライリー矢野様より献本御礼。同封のTシャツもXXLでうれしい。 asin:4844323644 初めてのPerl 第5版 Randal L. Schwartz / Tom Phoenix / brian d foy/ 近藤嘉雪訳 [原著:Learning Perl, 5th ed.] こういうのを見ると、やはりプログラマーにはオライリーと...
BEGIN{ require Llama } #書評_ - 初めてのPerl【404 Blog Not Found】at 2009年10月20日 21:35
この記事へのコメント
K.NTって、もしかして、s/\./E/
Posted by chaipapa at 2008年06月20日 19:48
>とほほでK.NTなコードが続くからだ

ワラ!!
Posted by omakase at 2008年06月20日 16:33
氏の前著(初めて読んだ Perl 本)で Perl を受け付けなくなりました。特に例のアレがダメでした。それから「リャマ本」を読んで、著者も訳者もホントに Perl を好きなのだと感じたのですが、これも途中で挫折(どうしても受け付けない)。その後 Ruby に走り(これはスンナリ入れた)今に至りますが、もっかい Perl に手を出してみましょうか?でもその前に Lisp やりたい(笑)。
Posted by 挫折した at 2008年06月20日 14:57
Dan さん、早速読んでくださり、過分にお褒めいただきまして、誠にありがとうございます!
「すぐわかる」というタイトルは前著の編集者が付けてくれたものですが、確かに本書は「ゆっくりゆっくりわかる」という感じですね。
ぼく自身もまったく slow learner で、山頂にある神社に参詣するときも「男坂」「女坂」があったら迷わず後者を選ぶ方です。
今後も Dan さんはじめ Mongars のみなさんが建立されたきらびやかな神殿の数々に、自分自身も含めた slow learner が拝殿できるようなスロープを作って行くような作業ができればと思います。
今後もよろしくお願いいたします。
Posted by 深沢千尋 at 2008年06月20日 10:12
すいません恥を忍んでお聞きしたいんですが「K.NT」てどういう意味なんでしょうか。
書籍の方今日発売ということのなので、書店で探してみます。
Posted by popcorn at 2008年06月20日 03:36