「初めてのPerl」: 10章さまざまな制御構造

私の勉強術

やっと10章まで読み終わりました。この本は自分で買った本なので、自由に本へ書き込みをして勉強しています。気に入ったフレーズや重要なメッセージにひたすらシャーペンで線を引いたり、コメントを書いたりして記憶が定着するようにしています。これをするだけで、頭に残る量が格段に多くなります。最近まで「本はいつまでも綺麗に」と考える派だったのですが、やっぱりちゃんと勉強するには、本を汚さないとダメだなと思うようになり、考えを改めました。

大学の図書館で借りた本は当然書き込むとまずいので、困ったものです。コピーをして、そのコピーした方を汚すしかないですかねぇ... たまに借りた本に落書きが書いてありますが、大切な所に下線を引いてあったり、誤植を丁寧に修正してくれてるものは、助かりますね。

夢のツール: ポイントはコンテンツのレイヤー化

将来、様々な人が本に書き込んだ下線やコメントなどを共有できるようになったら楽しいだろうなぁと、本を汚すようになった今そう思うようになりました。入出力の媒体には電子ペーパーを用いて、コメントはスタイラス(PDAで使う棒)で自由に書き込めます。コンテンツ、つまり本そのものと書き込み情報は、レイヤー化して、分離できるようにしておきます。そしてもちろんそのデバイスは必要に応じてインターネットに接続されます。

こんなデバイスがあれば、勉強のスタイルや文章を読むという行為は大きく変わります。次のようなストーリは考えられないでしょうか? ある人が「初めてのPerl」を私のように勉強していて、「ここが今ひとつ納得できないのだけど、他の人はどんな意見を持たれたのだろう?」と気になります。そこで、その人はこのデバイスを通して、勉強中の気になるページに書き込みがあるかどうかチェックします。すると驚くことに、id:naoyaさんやSixApartの宮川さんそれに加えて、はてなの社長さん(id:jkondo)が書き込まれたコメントがあるじゃないですか!その人は、早速その3人の書き込み情報をブックマークします。これでいつでも、気になった時にそのデバイスは本に重ねて書き込み情報を表示してくれます。コンテンツがレイヤー化されているので、必要に応じて書き込み情報を非表示にも当然できます。とまあ、こんな感じです。今とは違った形で知識やノウハウを共有できます。まさに夢のツールですね。

こんな商品誰か発明してもらえませんかねぇ。このアイデアが実現されたから、本の革命になりそうな予感がするのは私だけでしょうか。電子ペーパー化が進んでも、やっぱり手になじむのは、これまでの本というのは変わらないような気がしますが... でも、個人的には凄くほしいです。こんな未来は早く来ないかなぁ。

redo演算子

脱線しました。話を戻します。

redo演算子はこの本を読んではじめて知りました。CやJavaには無い演算子なので当然ですか。ソースコード検索エンジンで有名なKoders.comでPerlにおける「redoとforeach」の組み合わせの例を見てみると勉強になります。興味のある方はここをどうぞ。もっといろんなキーワードで検索してみると面白いコードに出会えるかもしれませんね。

OR演算子のイデオム

論理OR演算子を使ってデフォルト値を選択するというやり方は便利ですね。例えば、今も発売されているid:naoyaさんの連載「作って学ぶ、いまどきのWebサービス」(UNIX USER 2005/9)のサンプルでも、この応用が見られます。ほんの一部だけ引用させて頂きます。リスト1のWWW::OpenSearchモジュールの例に出現します。

my $word  = shift;
my $osxml = shift || "http://search.hatena.ne.jp/osxml"; # Open Search

この例では、起動引数の2つ目に何も与えられなかったら、デフォルト値("http://search.hatena.ne.jp/osxml")を使うようにコーディングされています。スッキリしていて見やすいですね。この書き方は、Perlではイデオムみたいなので覚えておこうと思います。

初めてのPerl