たのしいRuby

作成日: 2003-08-19
最終更新日:

本書の特徴

数あるRubyの本の中で、この本がもっとも簡単なのではないだろうか。 その最大の理由は、Ruby の機能の一部を解説していないからである。 解説されていない機能は次の通りである。

これらの機能は、著者らが入門書では不要と判断して解説していないのだろう。 必要なときに使えばいいからだ。

この本のおもしろいところは、章の頭に名文句を掲げていることだ。 こういった書き方は欧米の本ではよく見られるが、 日本人による本では珍しい。 さらに、名文句の引用元がプラトンでも聖書でもシェークスピアでもなく、 新井素子や高橋源一郎であるところもいい。これには著者らの柔軟な考えが感じられる。 そして、他の引用元である、三原順や竹本健治や穂村弘や紺野キタといった人達を私は知らない。 だから、これらの人達を知ろうという気になる。

Ruby の特徴

さて、本書は全5部、計24章と付録からできている。 説明されていない機能はあるにせよ、それでも過去の言語の仕様と比べれば多い。 何といっても、C言語は制御構造の3分類と構造体、配列、関数、ポインタさえ覚えればよかった。 さらに遡ると、FORTRAN77 はポインタも構造体もないので、もっと少なかった。 ところが、Ruby を含む現代の言語は多くなっている。 本書によれば制御構造が4分類となっている。 逐次処理、条件判断、繰り返しに加えて例外処理がある。これは本書を読んで初めて知った。 また、C言語の構造体と関数は、 Ruby ではより発展した形、すなわちクラスとメソッドとして取り扱われる。 これによって、オブジェクト指向の基本が養われる。その他、 配列の兄弟であるハッシュや、文字列処理に威力を発揮する正規表現など、 覚えることは多い。

私は割り切って、C言語相当の処理がRubyでできればいいと考えている。 しかしそれでは、 クラスとメソッドが駆使できるオブジェクト指向言語を使いこなしていないことになる。 悩みは深い。

練習問題の出典

ところで、本書に限らず、コンピュータ言語の本では、 プログラミングの例題や練習問題が載っている。 これらの例題や問題がわかりやすいかどうか調べようと思ったことがある。 しかし、調べるのをやめた。わかりやすいとはどういうことか、わからなかったからだ。 体系的に調べることはやめたが、個々の例はどうなっているかを見ることはできる。 ここでは、第3部の練習問題を見てみよう。

第10章の練習問題(1), (2)は、温度の表示体系である摂氏と華氏の相互変換を扱っている。 これは、カーニハンとリッチーの「プログラミング言語C」をなぞっているのだろう。 華氏になじみのない日本人には、適切な例題とは思えない。

第11章の練習問題(3)は、2種類のカッコが正しく対応しているかを調べるメソッドを定義する問題である。 これは面白いと思う。思うに、パーサの作成に由来しているのだろう。

第12章の練習問題(3)のテスト文字列には、"密林\n嘘\n赤と黒\n罠\n罪"という文字列があった。 これらはすべて小説の題名だろう。「赤と黒」はスタンダールの小説だとわかるからだ。 さて、他の名称が小説の題名だとしたら、誰の書いた小説なのだろう。 ところが、スタンダールではなかったようです。 これらはすべて、須賀しのぶ著、集英社コバルト文庫から出版されている、 「キル・ゾーン」シリーズの表題だった。

第14章の練習問題(3)の例では、In-Reply-To や X-Mailer のように、 電子メールのヘダーが対象となっている。 このようなところは、やはりコンピュータを扱い慣れている著者らの練習問題だと思う。

第15章の練習問題は、メソッド copy とメソッド tail を定義する問題である。 copy という名称は、MS-DOS を思い起こさせる。一方、tail という名称は、UNIX 文化から来ている。 微妙なずれがいい。

以前の感想

私にはこの本のレベルがちょうどいい。というのも、今までの本は網羅型か、一点集中型かで、 Ruby の初歩から入る者にとってはかなりの重荷だったからである。 だいぶ切るべきところを切っていて、楽になったと思っている。

それでも、本当のプログラミング初心者がこの本だけでうまくやっていけるかというと、 少し疑問である。C 言語 に比べてば Perl にしても Java にしても覚えることが よりたくさんあるので、一つをマスターしたという快感が得にくいのではないかと思ってしまう。

とはいえ、Ruby はうまく設計されているから、この本の第1部をしっかりと身につければ、 かなりのプログラムがすぐに書けるのではないか。

なお、この本は第 4 版まで出ている(私は第 2 版以降のどれも未読)。

まりんきょ学問所>> Rubyの浮き輪>> たのしいRuby


MARUYAMA Satosi