プログラミングRuby 第2版 言語編 プログラミングRuby 第2版 ライブラリ編

プログラミングRuby 第2版 言語編 / ライブラリ編 レビュー記事

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

株式会社オーム社様のご厚意により, 書籍 "プログラミングRuby 第2版 言語編 / ライブラリ編" をブックレビューコーナー にご献本いただきました. この本のレビューをして頂くべく, Linux Users ML や本サイトにおいて公募を行い, これにご希望頂いた方々より感想などをレビュー記事にまとめていただきました.

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

オーム社様およびレビューアの皆様のご厚意に感謝いたします.

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


Reviewed by 太田晃 (mediafish@jcom.home.ne.jp) さん

「これぞ Ruby の教科書」

Linux の使用歴
4 年
UNIX の使用歴
0 年
Linux Box の主な用途
開発
Linux 以外に利用している OS
WindowsXP
Linux と Linux 以外の OS の使用頻度の比
7:3

はじめに

今回レビューさせていただいたプログラミング Ruby は, 日本ではうさぎ本として Ruby ユーザに愛されている同名書籍の第 2 版にあたる. 第 1 版は, Ruby プログラミングのバイブルともされていて, 大変よくできた書籍であると思うが, 第 2 版ではどのように変貌しているのか? 第 1 版との読み比べを交えながら, 感想を書いていきたいと思う.

第一印象

表紙を見ての印象は, 「あ, 敷居が低くなったな」というものだった. 第 1 版のときは, いかにも Ruby を使い込んでいるユーザのための書籍という感があったが, 第 2 版では初心者もためらいなく手に取れるような, そんな雰囲気がある. まずは言語編からパラパラとめくって読んでみたが, 流し読みした限りでは, 総じて第 1 版に比べ「初心者に優しくなった」と言えると思う. と, 同時に昨今の言葉よりイラストで説明するタイプの書籍と違い, 非常にイラストの少ない, あいまいさの無い言葉で書かれた書籍であるとも感じた. 普通の書籍ならばイメージで伝えるところを, Ruby の内部動作まで言及しながら解説していたからである. ライブラリ編に関しては, 膨大になってきた Ruby のライブラリを, 細部までよく解説していると思った. 両編とも, 書籍の至る所で New in 1.8 の表記があり, ひと目で従来からの機能なのか, それとも新しい機能なのかを見分けることができる. これは, 熟練したユーザにとってもうれしい表記の仕方といえるのではないだろうか. 巻頭にレベルに合わせた読み進め方の解説が付属しているのも, 良いアイディアだと思う.

章構成について

まず言語編だが, 書き方として面白いと思ったのは, 第 1 版のときもそうだったが, オブジェクトだとか式だとか, そういった文法的な話から入るのではなく, 「今, こういうものを考えている. いかに実装するか?」という話から入って, コードの書き方よりも先に, 実際書いてみてくださいといわんばかりの解説をするスタイルだ. これが非常に楽しく, そろそろこの概念について疑問に思うころか…という絶妙のタイミングで, 解説の章が入ってくるという, バランスの取れた章構成になっていた. 第 2 版では, それに加えて最近の開発手法では欠かすことのできない, ユニットテストに関して一章をまるまる割いて解説している. これも, 熟練したユーザ, 初心者ユーザを問わず, Ruby を実用したいと考えるユーザにはうれしい気遣いなのではないかと感じた. しかし, Ruby のセーフレベルに関する話題は, できれば II 部に盛り込むほうが良かったのではないかと思う.

ライブラリ編は, 目次である程度の機能を確認できるので, とてもよい気遣いだと思った. しかし, オンラインマニュアルと大差ないことも事実なので, 逆引きインデックスを盛り込むなどの工夫がほしかったと思う.

言語編に関して

言語編は, チュートリアルからはじまって Ruby の内部的な解説まで, 手広くカバーしていた. 第 1 版に比べ増えた章も, 違和感無く読むことができた. また, Ruby 初学者のために, I 部だけをコンパクトな別冊として発売しても良いのではないかと思った.

4章

イテレータについての解説が少々しつこかったように思えた. この部分に関しては, より後半でイテレータが登場したときに, 併せて解説すればよかったように感じた.

5章

正規表現オブジェクトに関しての説明が短かかったのが気になった. ライブラリ編で正規表現オブジェクトがきちんと解説されていたのが, せめてもの救いだったと思う.

17章

RubyGems について一章を割いているにもかかわらず, コマンドラインオプションについての解説がほとんど無いのは, 不親切だと思った. 確かに書いてある通り Gems のヘルプは確かに分かりやすいが, Ruby のインストール手順から解説している書籍にしては, やや不親切だと思った.

20章

Windows 環境での Ruby の使用法に関する Tips としてまとめられていたが, これは付録という形で付けても構わなかったのではないかと思った.

ライブラリ編について

ライブラリ編は, 全体を通じて本当にライブラリ編? と首を傾げてしまう部分が多かった. オンラインマニュアルと大差ないことはもちろん, 標準ライブラリの解説では, 用法だけが示され, メソッド解説は省かれているなどの部分が目立った. 第 1 版のときは付録感覚だったため, それを引きずっているといえばそれまでだが, 別冊にした以上, もう少し力を入れてほしかった. この解説ならば, 標準ライブラリの解説はバッサリカットして, 組み込みクラスやモジュールの解説を, 実例をより多く交えて深く掘り下げて解説するべきではなかったのだろうかと思った. メソッドの一覧などはアルファベット順で掲載されているのに, New in 1.8 表記を入れたメソッドに関する一覧表が欠けているなど, 少し残念に感じた. 私が学生だからかもしれないが, オンラインマニュアルとほとんど等価の書籍に, この額は出せないのでは…と感じた.

各所の注釈について

Ruby に関連した書籍の特徴かもしれないが, 随所に織り込まれた注釈が, 時として理解を深め, 時として堅苦しい話のちょっとした息抜きとして機能してくれる. この注釈と, その注釈の入っている項を読むだけでも, 経験者は Ruby への理解が深まるのではないかと思った.

まとめ

言語編は, 詳細な解説とわかりやすい表現, 巧みな章構成で, Ruby を学ぶ多くの人におすすめしたい書籍だと思った. 現役大学生として, 特に大学の講義で Ruby を教える場合, この I 部を教科書として用いると, 学生の理解も深まるのではないかと思った.

ライブラリ編については, 本当のリファレンスを求めている方にはお勧めできないと思った.


Reviewed by 前田拓 (t9md@y9.dion.ne.jp) さん

「Ruby に対する深い理解と簡潔で正確な文章が生み出した, Ruby のバイブル本」

Linux の使用歴
6 年
UNIX の使用歴
無し
Linux Box の主な用途
プログラム開発 (趣味 7 割, 仕事 3 割), 検証環境構築 (仕事 10 割)
Linux 以外に利用している OS
Windows 及び, 各種ネットワーク機器の OS
Linux と Linux 以外の OS の使用頻度の比
1:1

はじめに

第 2 版から追加された冒頭の賛辞と, まつもとゆきひろさんの「第 2 版の刊行によせて」という文章を読み少し感動しました. これらを読むと Ruby が本書の第 1 版出版時とは比べ物にならない程, 知名度, 使用者の規模といった面で成長した事が分かります.

構成について

構成は大きく 3 つに分ける事が出来ます.

  1. 言語編: 第 I 部 Ruby の基礎
  2. 言語編: 第 II 部 Ruby とその周辺
  3. ライブラリ編

1. 言語編: 第 I 部 Ruby の基礎

前半では読者はジュークボックスプログラムを開発するという目的を共有します. ジュークボックスに求められる機能を実装する事を通じて, Ruby 言語が持つ様々な機能的側面を理解する事が出来る様に構成されています.

2. 言語編: 第 II 部 Ruby とその周辺

詳細な Ruby の言語仕様が説明されています. 特に 24 章の「クラスとオブジェクト」の章は, 本格的に Ruby でプログラムを書こうと考えている人であれば, 必ず知っておいた方が良い内容だと思います. この章で図を使用して説明される, クラス, モジュール, 特異クラスの関係は私自身の技術力 (解析能力) では知る事が非常に困難ですが, 著者の高い技術力と正確な記述のおかげで, 理解する事ができました.

3. ライブラリ編

各種ライブラリの説明と, 簡単なサンプルコードが掲載されています.

初心者にもおすすめできます

本書の第 1 版の紹介文では「他の言語の経験者におすすめ」といったものを時々見かけましたが, 私は身近にプログラムを学びたいという人がいれば, Ruby と本書を紹介すると思います. 今回の第 2 版からは ruby のインストールから実行までを説明する章も追加されています. 決して, 初心者が対象外の本ではありません. 勿論, 章によっては技術的にハイレベルな内容も含んでおり, 理解するには相応の経験と背景知識が求められる章もあります. しかし, どの章もその章が対象とする技術要素が持つ難易度以上には難しくなっておらず, Ruby を使用する中でいずれ必要になるものばかりです.

初心者にもおすすめできる理由として以下の 2 点が挙げられます.

  1. 説明が簡潔, 正確である.
  2. サンプルプログラムが簡潔で, 適切なタイミングで挿入される.

1. 説明が簡潔, 正確である.

説明が簡潔で, 正確なので, 読んでいて誤解が生まれにくい点が本書の最も特筆すべき点です. 著者自身が Ruby を深く理解しているのでこのような記述ができるのだと思います.

冒頭の賛辞で, David A. Black 氏が以下のように書いていることからも, 本章が技術書として優れている事が分かると思います.

「この本の初版は, 日本国外に Ruby という言語を大々的に紹介しただけでなく, その過程で書籍による言語リファレンスの事実上の標準となり, 明解で効果的なテクニカルライティングのモデルとしても頻繁に引用されている.」

まず, 各章のイントロダクションが非常に優れています. エラー処理, モジュール, メソッドといった概念を説明する前に,

といった事が簡潔に説明がされています. 対象技術が持つ, 背景と目的の説明があるので, 単純な機能説明を読むだけでは得られない, 深い理解を得ることが出来ます. なにより, このようなイントロダクションがあるおかげで, 眠くならず, 主体的に読みすすむ事ができました.

記述が正確, 簡潔であるという事を具体的に説明する為に, 例として第 6 章の「さらにメソッドについて」のイントロダクションから幾つか文を抜粋します.

メソッド名は小文字で始めなければなりません.

質問として動作するメソッドには, instance_of? のように名前の末尾に ? をつけることがよくあります. また「危険な」, つまりレシーバを変更するメソッドには, 末尾に ! をつけることがよくあります.

さらに, 代入の対象となることができるメソッドの末尾には等号 (=) が付きます. メソッド名のサフィックスに使える奇妙な文字は ?, !, = の 3 つだけです.

勿論, 他の Ruby 本でも同じ様な事は説明されていますが, 本書ほど簡潔, 且つ正確に説明されているものは他には無いと思います. この簡潔さ, 正確さは本書全体 (ライブラリ編も含む) を通して一貫しており, 一文一文が非常に重要な情報を含んでいます. 一回目に読んで抵抗なく理解できた文章であっても, 経験をつんだ後, 再読すると新たな発見があり, より理解が深まるといった事を何度か経験しました.

2. サンプルプログラムが簡潔で, 適切なタイミングで挿入される.

各機能がどういった場面で役に立つかは, マニュアルを読むだけでは想像し難い事がよくあります. 私自身は本書のサンプルプログラムを実際に試してみる事で, 用途を理解できた機能が多くありました. 例えば, 「自作のクラスに必要なメソッドを定義し, モジュールを組み込めば, モジュールが持っている各種の便利なメソッドを使用できる」といったような事は, 本書の説明と, サンプルプログラムを通して初めて理解できた事です.

コードの提示の仕方についても全体を一度に提示するのはなく, 説明内容に応じて, 適切なタイミングで必要な部分が挿入されます. 分量についても対象機能の説明に必要十分な最低限の長さに収まっており, 簡潔で, 理解しやすいものになっています.

改善したい点

おそらく, 日本語に翻訳した事が原因で文章が少し, 曖昧になっている箇所があると感じました. 日本語では語同士のかかりが英語ほど明確に判別し難いので, 英語では一文であっても, 翻訳時に複数の文に分ける事で, より読者毎の理解のブレを少なくする事ができるように思います.

総評

コストパフォーマンスというのは値段に見合うだけの情報があるかという事だと考えると, これほどコストパフォーマンスの良い本は無いというぐらい, お買い得な本だと思います.

第 1 版を持っている人は, 冒頭の「第 2 版での主な変更点」を確認して判断しても良いと思います. 私は第 1 版を所持していますが, 本書のレビューにより提供されなかったとしても第 2 版は購入していたと思います.


Reviewed by 山下 勝司 (yamakatun@gmail.com) さん (HomePage)

「Ruby をはじめる経験者へ」

Linux の使用歴
5 年
UNIX の使用歴
5 年
Linux Box の主な用途
各種サーバ
Linux 以外に利用している OS
Windows, FreeBSD
Linux と Linux 以外の OS の使用頻度の比
1:2

本書構成

本書は言語編とライブラリ編の二編で構成されている. 言語編では文法と Ruby の周辺情報の解説, ライブラリ編では組み込みクラス, 組み込みモジュールと標準ライブラリの解説が行われている. 尚, この二編間の連携は特に無いため, どちらかの一編の利用でも問題無い. また, 本書には Ruby on Rails に関する解説は特に無い.

対象読者

言語編では Ruby のプログラミング言語としての文法が主に解説されている. しかし, 本書では変数, 配列といったプログラミング言語の基本的な概念の解説は特に行われておらず, クラスといったオブジェクト指向言語に関する概念の解説も十分では無い. 本書はこれらを理解しているとした上で Ruby に関する解説を進めており, このような基本的理解が十分でない場合, 読み進めることは難しいだろう. そのため本書はプログラミング経験者をターゲットとしており, プログラミング未経験者の方をターゲットとはしていない.

翻訳

本書は日本人による執筆ではないため翻訳が行われている. 書籍が翻訳される場合, 翻訳の精度によっては理解し難い日本語となる場合や, 原文の内容が著者の意図とは異なって翻訳されることがある. 特に本書のような専門性が高い書籍の場合, この傾向は強い. この点に関して本書は, 特に理解を妨げるような表現も見当たらず, 大きな違和感無く理解を進めることができた. よって, 翻訳による原書からの質の劣化を心配する必要はないだろう.

内容

言語編の内容は主に文法, Ruby の周辺情報の二つで構成されるが, 文法に関してはかなり詳細に解説されている印象を受けた. また, 文法の解説を第 I 部のチュートリアル方式による一般的な解説と 第 III 部でのより掘り下げた文法の解説に二分している点は, 読者のニーズや理解の段階の違いに対応できる形であり良い構成であった. CGI との連携や Ruby の拡張に関するサンプルを記載した Ruby の周辺情報では, リファレンスとしての利用価値は非常に高いだろう. これらを考慮すると, Ruby を利用する上で言語編は非常に有用な書籍であると言える.

一方, ライブラリ編の内容は Ruby 公式サイトで公開されている情報と基本的に同様であり, 本書が想定しているプログラミング経験者であれば 標準ライブラリ等に関する情報を公式サイトから収集することはさほど難しく無いため, 購入価値が高いとは言い難い. 強いて差分をあげるとすれば, 各関数にサンプルコードや解説がついており, これらが公式サイト上の情報と比較した場合, 多少丁寧であるという点がある.

総評

一般的な書籍と比較し, コンピュータ関連の書籍は価格が高い傾向があり, 二編合わせて八千円と本書もその例外ではない. 一方, 現在はインターネットの普及が著しく, Ruby を含めた一般的なプログラミング言語の文法や標準ライブラリに関する情報は インターネット上においてほぼ無料で入手可能である. そのため, インターネット上の情報が持たず, 本書のみが持つ価値が本書購入に際して重要と言える. この点から考慮すると言語編は文法に関する詳細な解説や Ruby 周辺情報等の独自の価値を持つ一方, ライブラリ編には特にそのような価値を見出すことができなかった. よって, Ruby を新たに習得しようと試みるプログラミング経験者に本書言語編のみの購入を一番お勧めしたい.


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