アスキー 様のご厚意により,
書籍 "オブジェクト指向スクリプト言語 Ruby" を
ブックレビューコーナー にご献本いただきました.
この本のレビューをして頂くべく,
Linux Users ML
や本サイトにおいて公募を行い,
これにご希望頂いた方々より感想などをレビュー記事にまとめていただきました.
ここに, レビューアの方々から寄せられたレビュー記事を公開します. (原稿到着順)
アスキー 様および レビューアの皆様のご厚意に感謝いたします.
なお, 以下のレビューは初版を対象としています.
仕事柄, perl を使用する機会が多いのですが, 自分の知識レベルは, C 言語止まりでオブジェクト指向言語の意味するところはよく分かっては いません. Ruby は, 以前から興味があって Web 上の情報等を眺めては いましたが, それだけに留まってしまっていました. 今回のブックレビューでは, Ruby のことばかりでは無く, オブジェクト指向なプログラミングのことが分かりやすいかどうかという 点も踏まえて読んでみました.
期待以上に, 良い本だというのが読後の最初の感想でした. Ruby でプログラミングしてみようかという気にさせてくれました. これは, 絶対「買い」でしょう.
章の構成として,
が対象となるかと思います.
この章では, 当り前と云えば当り前なのですが, 最初からオブジェクトの 概念を含めて, 分かりやすく説明しています. オブジェクト指向に馴染みの無かった私でも, オブジェクトの概念をおおよそ掴む事ができたと思いますので, 分かりやすい説明ができているのだと思います.
また, 変数, 定数, 及びそれらの有効範囲, 疑似変数, 組み込み変数などについてもしっかりと説明してありますし, 代入, 演算子, 制御構造などについてもしっかりと説明してあります. また, 数値や計算についての話や文字列の取り扱いについては, 実際のプログラミングでの勘どころも含めて解説しており, 日本語処理についてもきちんと書かれています.
また, 実用的なプログラムでは必須となる入出力についても, ファイル IO, ソケット IO と分けて説明している点が便利だと思います.
もう, とにかくこの章だけでも Ruby の基本を押えられるでしょうし, 入門として詳しすぎず, はしょり過ぎずとちょうど良い感じだと 思われます.
オブジェクト指向に馴染みの無かった私のような者にでも理解できるように
と 3 つの章で懇切丁寧に説明しています.
特に, 5 章の設計編と 6 章の実践編では, 例題を用いてプログラミングを 進める手順を設計の思想と共に示して説明を進めるやり方を取っているので, 普段プログラミングをやっていない方や職業プログラマでない方でも, プログラミングとはこうやるもんだ, という思想も含めて学べるように なっていると思いました.
この手の本で, 私が最初にチェックするのは
という点です.
この点, この本は,
ということで, リファレンス機能としては十分なものがあります.
只, 索引の方は
ということで, ややプアなイメージを持ってしまいました. まぁ, 目次が割と細かく章立てされているのと 巻末の用語集も含めて考えれば, 実際にはプアという印象は誤りなのかも知れませんが, この辺りは, もっと使い込まないとちゃんとは評価できないところですので, ここは話半分に聞いてもらえると良いと思います.
また, 読んでいて面白かったのは, ほぼ毎頁にあると感じられる 脚注です (実際は, 毎頁には無いです, 念の為). 頁をめくった時に, 先に脚注に目が行ってしまい, それに対応する 本文を探してしまうこともしばしばありました. この辺りは, 作者のまつもとさんの人柄の現れなんだろうなと ニヤニヤしながら読んでしまいます. 読んでいて面白いプログラム言語の解説書というのも珍しくて良い感じです.
一通り, 読まさせてもらって感じたことは,
ってことです.
こんな気にさせてくれる言語解説書は, 初めてかも知れません. 期待通り, いえ, 期待以上に素晴らしい本だと思います. Ruby 入門者から上級者まで使えて, 満足できる, そんな一冊では 無いでしょうか.
最後に, Ruby 本の Book Review の機会を与えていただいた 関係者の方々に感謝したいと思います. ありがとうございました.
わたしは Ruby に出会い 3 ヵ月くらいになる, まだ使いこなしているとは言えない Ruby 初心者です. そんな初心者的視点から「 Ruby 」と「オブジェクト指向」 という二つの点においてレビューを行います.
しっかりした内容をさらりと読みやすく書いてあると感じました. Ruby の根底に流れる「楽しいプログラミング」というモットーが そのまま文章にも現れているのでしょう.
この本には Ruby だけではなく, オブジェクト指向や プログラムの設計についても三章に渡って詳しく書いてあります. わたしはオブジェクト指向言語の使用はこれが初めてに近く, このオブジェクト指向の説明がとても勉強になりました.
内容的に Ruby の深い部分についての章もありますので, 初心者を卒業した人にも必要になる事が書いてあると思います. また, C言語に馴染みのある人ならば Ruby の実装についての章を読めば, Ruby について理解をしやすいのではないでしょうか.
ここでは今後の改善を願い多少の苦言を述べますが, このマイナス要因は必ずしも欠点では無い部分も含んでいます. 人によってプラスの要因にもなりうるとは思います.
例えば「オブジェクト」と「インスタンス」, あるいは「関数的メソッド」「組込み関数」「組込みメソッド」のように 同じ事を指すはずなのに複数の言い方をするなど, 言葉が分かりにくいと感じました. わたしには, 用語集を含め何度か前後に読む必要がありました. 言葉さえなんとかなれば, 書いてある事自体はわかりやすいだけに残念です.
ほんの少しですが Ruby の深い部分や実装にかかわる話にも触れてあり, 初心者にとっては少し混乱の原因になるかもしれません.
大切な事と (笑えるけど) どうでもいい事の両方が脚注に書いてあり, 視点移動や思考の中断が頻繁に生じました. 言語習得に大切な部分はなるべく脚注に逃さず, 本文の中にしっかり書くべきではないでしょうか.
ただ, この脚注にはこういった読み辛さがあるとは感じましたが, この本を読んでいく上での気分転換になると思いますので, 長い第二章などを読んでいく上でプラスにも働いているでしょう.
巻末のミニリファレンスは簡潔すぎると感じました. オンラインドキュメントの「 リファレンスマニュアル」は, その点しっかり書いてあります. 付録の CD-ROM の man-1.4/ ディレクトリに入っているので 必要な時にウェブブラウザで見る事をお薦めします. これはこの本と互いに補完しあう関係にあると思いますので, この本でわからない事がある時やプログラミングをする時などに, このリファレンスを参考にするといいのではないでしょうか.
わたしはプログラミングの経験があり この点では初心者的視点で見る事はできないかもしれませんが, この Ruby という言語はプログラミング初心者にもお薦めだと思います. 初心者には手軽で実践的な事ができる言語が必要ではないでしょうか. Ruby はこの点においてきっちり条件を満たすだけではなく, モットーの「楽しいプログラミング」が 何よりもプログラミング初心者には嬉しいと思います.
ただ, この本自体はプログラミング経験を前提にしているのではないでしょうか. 完全なプログラミング初心者にとっては大変な部分があるかもしれません. スクリプト言語を含め何らかのプログラミングを経験しているべきでしょう.
少し難点はあるものの初心者にもお薦めだと思います. この本はオブジェクト指向にあまり慣れていない人に良い本でしょう. 個人的には, プログラミングが楽しくないと感じている人, BASIC 世代の人, プログラムの設計という物が分からないといった人達にお薦めしたいです.
わたしが詰まったポイントを元にこの本を読む為の コツ を簡単にまとめていますので, もし難しいと感じたら御覧ください. 参考になるかもしれません.
みなさんも Ruby で「楽しいプログラミング」をしてみませんか? この本を読むとわくわくできると思います(^^).
本書は, まつもと ゆきひろ氏開発のスクリプト言語 「Ruby」についての初の解説書です. 簡単な Ruby の紹介, 言語仕様の解説から始まり, プログラミングの方法, オブジェクト指向プログラミングの適用, 最期には拡張ライブラリによる Ruby の強化についても触れられています. 開発者自身が執筆され, 最初に出た本ということもあり, Ruby 界では, すでに「バイブル」との呼称で呼ばれているようです. なお, 発売元である ASCII 社の Web サイトより, 本書の第二章「 Ruby 入門」については PDF にて閲覧可能ですので, 購入を検討されている方は, ご覧になってみるのも良いかとも思います. (もちろん, いきなり本屋で購入しても決して後悔する様な内容ではありません.)
私は, Linux 世界に首を突っ込んでから約 3 年を数え, 主に「趣味のデスクトップ環境 (メール・WWW ブラウズ・VCD や MP3)」として 同 OS を使用してきました. また, 半年ほど前 このブックレビュー にて, 「マスタリング Csh」という本に出会い, シェルプログラミングに出会い, 自分の簡単なツール程度は自作できるようになりました.
しかし, 大規模なプログラミングや GUI なアプリケーションの作成においては, やはり Csh の限界を感じ, 何らかの方法でブレイク・スルーを行う必要を感じておりました. そこで次は何を・・・と模索していたおりに目に留まったのが, Ruby であったのです.
さっそく環境を構築し, ユーザーガイド (大変親切に書かれています) を参照しつつ入門をしたのですが, 今一つ, 私の固くなってしまった頭では全体像を掴みきれません. 「もう一歩, 網羅的な本があれば・・・」と願っていた矢先, 本書の出版を知りました. さっそくブックレビューに応募し, この原稿を書いている現在に至るわけです.
本来は全章を完読して, レビューをするのがよいのですが, 一歩一歩理解しながら進んでいったため, 四章まで読み終えた時点で, Time Up となってしまいました. 全体を通してのブックレビューを, 私のホームページ (後述) に載せて行こうと思います.
前置きはともかく・・・
1 〜 4 章は, 以下のような内容になっています.
5 章からは, 以下のような内容です. (大項目だけ記します)
さて, 1 〜 4 章まで読み終えた感想を以下に述べます.
一番のポイントは, 非常に読みやすく, 理解しやすい表現で書かれているということです. 特に, 4 章のオブジェクト指向プログラミングについての解説は, プログラミング初心者であっても, 十分に理解可能なものです. オブジェクト指向に関する書籍を今まで何冊か読んできましたが, これ以上に理解しやすい本は読んだことがありません.
また, 2 章の言語仕様の解説においても, 大変親切に書かれており, BASIC 程度の知識がある方であれば, 十分に理解可能であると思います.
3 章のプログラミング例では, ftp 用のライブラリを活用した, ファイル転送ツールの作成等について解説されており, すぐにでも活用または応用が利きそうな例が記載されています. 「こんな簡単に, ネットワークを使用するプログラムが組めるのか!」 と目から鱗が落ちる思いでした.
プログラミングほぼ初心者の私が読み進めるにあたって, 障壁になった部分について, いくつかご紹介したいと思います.
スクリプト系言語では当たり前のことかもしれませんが, 本書でも正規表現を使用したプログラム例がいっぱい出てきます. 本書においても, 10 ページにわたって解説されていますが, 人によっては別な参考書を手元においていたほうが良いかもしれません.
入門者にとって, これが最大の関門であると思います. 私は五回読み返してやっと大意がつかめたといったところです. 実践を繰り返して身につけるべき所となのかもしれません・・・ でも, とりあえずはわからなくてもプログラムは組めるんだけどね (^^;)
もっぱら通勤電車での購読で読み進めてきましたが, やっぱり身につきません. 自宅環境に Ruby をインストールし, サンプルをいじくるうちに何とか雰囲気がつかめてきました. 本書には, Ruby 本体はもちろん, 役に立つ情報 (ML のアーカイブとか) が満載されています. 是非愛機のまえで本書を開きましょう. (Win32 版もちゃんと入ってますので, Win な人も安心です)
本書は, 最初に世に出た Ruby 解説書であり, シンプルながらも高度なプログラミングを可能とする同言語を, 網羅的かつ実践的に学習できる良書だと思います. 本言語の習得はもちろん, 「オブジェクト指向」なる世界に足を踏み込む第一歩として, とてもお勧めできます. C++ を始めたとき, OOP の概念に思いっきりハマッた私としては, この本がもっと早く出ていたら・・・と思っています. まずは, Ruby を思いっきり楽しんでから, C++ 再入門と行きたいものです.
本レビューで触れることが出来なかった 5 章以降のレビューや, 私の Ruby 格闘記を記す Web ページをオープンしました. (まだメニューすらありませんが (^^;)) URL は下記のとおりです.
Ruby 秘密特訓所 (http://www6.freeweb.ne.jp/computer/furumura/)
最終目標として, アイデアプロセッサーの作成を目論んでいます. 今後 Ruby-list などに出没するかと思いますが, 関係者の皆様, 宜しくお願いします m(_._)m
最後に, 本レビューの機会を与えてくださった, www.linux.or.jp 管理グループ の皆様, ASCII 出版局様, 筆者の まつもとゆきひろさま / 石塚圭樹さま に, この場をお借りしてお礼申し上げたいと思います.
本書を読んでたいへん参考になった 3 つの章 4, 5, 6 章の事について書きます. もっとも, ほかのレビューした方々よりも多く時間を戴いたにも関わらず この三つの章しか読みませんでした, 済みません. そして, もっと技術的な視点で読めれば良かったのですが, 章内の構成に今一歩な部分が多く見られ, そのことを言ってしまう部分が多いです. これは, 唯一の Ruby の解説本なのに, 今一歩私がすんなりと理解できなかったことが 多々あった事への残念感の現れと思ってください. (私の理解力にも問題があるのですが.)
オブジェクト指向プログラミング一般を (多分) 初心者に説明した後 ruby でのオブジェクト指向プログラミングのザックバランな解説を試みています.
初心者を前提とした軽いノリなのにもかかわらず, 唐突に深いレベルの解説が 混じったり, 読みづらさに気を取られるところが所々にありました.
例をあげると, P171 の「実装の継承, 仕様の継承」で,果たして OOP 初心者は ただ単に「実装」, 「仕様」と言われてピンとくるのかが疑問に思いました. この二つの言葉の軽い説明が要る気がします. 「ここで, 実装とは記述されたプログラムによるそのクラスの働きを指し, 仕様とはそのクラスが使われるとき そのクラスにどのようなメソッドがどのような引数を伴うのかを決めた物で 実装を伴わない ( Java では interface になります) を指します. 」 みたいな説明があれば良かったと思います.
また, 各所で図を使って比較を試みているのですが, その比較対象の図同士がページの裏表に渡ってしまい 非常に比較しづらくなっています. (P169, P170 図 4-1,4-2) (P177,P178 図 4-8,4-9)
さらに, 4.2, 4.3 の章だてなのですが 4.3 は 4.2 の一部にすべきだと感じました. ここで, 4.3 に別けてしまうことで 読者は著者の言いたいことが大きく変わるのだと思い込んでしまいます.
4 章では, 主に以上の三つのこと, 「初心者向のはずなのに言葉の説明が足りない」, 「図の使い方が悪い」, 「章同士のレベルが一定でない」 が気になり, 読み進むのが困難でした.
前半でオブジェクト指向設計の一般的な方法を軽く解説して, 後半で ruby で使われているデザインパターンの解説を交えて ruby は如何にオブジェクト指向設計しやすいかを解説しています.
モジュールのアイデア ( Mix-in が何なのか) がここで良く理解できて そのかっこ良さが判ってうなずきながら読みました. 加えて, 章末のデザインパターンの説明はすばらしいです. GoF の訳本で得られなかった理解がここで得られました. 感謝です. しかし, 4章同様の読みにくさはあちこちにあります.
ruby 付属のパッケージを元に「良いクラス」の解説をしています.
前半の PStore.rb の解説を除くとすばらしい章です. 特に, RUP で OOA していく 「 OOA を少しだけかじった者」 向けの実例としては世界一分かりやすいものとなっています. (私の世界は狭いもので ... )
PStore.rb の解説は最後のまとめる部分を最初に持ってくることで 著者がこれから何を言いたいのかが明確になり, 読み進みやすくなるなと思いました.
以上で私のレビュー記録はおしまいです. 4,5,6 章の中では 6 章の「解説する」という視点に立ったときの構成が 一番まともでした. ただし, PStore.rb の解説部分は除きます. プログラムに「パターン」があるように「解説」にもパターンがあります, これを逸脱した解説は解説になりません. 詳しくはブルーバックス社の 「わかりやすい表現」の技術に上手に解説されています, みなさんにご一読をおすすめします.
最後に, 入稿がたいへん遅れ いろいろな方にご迷惑をかけたことをお詫び致します.