オブジェクト指向スクリプト言語 Ruby

オブジェクト指向スクリプト言語 Ruby レビュー記事

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

アスキー 様のご厚意により, 書籍 "オブジェクト指向スクリプト言語 Ruby" を ブックレビューコーナー にご献本いただきました. この本のレビューをして頂くべく, Linux Users ML や本サイトにおいて公募を行い, これにご希望頂いた方々より感想などをレビュー記事にまとめていただきました.

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

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

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


Reviewed by 池田 雄一郎 (ikeda@mail.webfujiyama.or.jp) さん (HomePage)

Linux の使用歴
3 年 4 ヵ月位です.
UNIX の使用歴
12 年位です.
Linux Box の主な用途
会社では, Desktop として, メールの読み書きや報告書書き等に用いています. vmware を導入したので, MS-Office 系の文書もいちいち PC をリブートしなくて済んでいるので, 幸せです. 自宅では, 家庭内 LAN のゲートウェイやファイルサーバに使用しています. 後, NotePC にも入れていて, これは仕事, 遊び, 実験などで 一番活躍しているマシンかも知れません.
Linux Box に載っている Linux 以外の OS
Windows95, WindowsNT4.0WS
Linux と Linux 以外の OS の使用頻度の比
Linux 対 他 = 99 対 1
もしかすると, 99.99 対 0.01 位かも知れません.

はじめに

仕事柄, perl を使用する機会が多いのですが, 自分の知識レベルは, C 言語止まりでオブジェクト指向言語の意味するところはよく分かっては いません. Ruby は, 以前から興味があって Web 上の情報等を眺めては いましたが, それだけに留まってしまっていました. 今回のブックレビューでは, Ruby のことばかりでは無く, オブジェクト指向なプログラミングのことが分かりやすいかどうかという 点も踏まえて読んでみました.

一言で云って

期待以上に, 良い本だというのが読後の最初の感想でした. Ruby でプログラミングしてみようかという気にさせてくれました. これは, 絶対「買い」でしょう.

入門者にとって

章の構成として,

が対象となるかと思います.

この章では, 当り前と云えば当り前なのですが, 最初からオブジェクトの 概念を含めて, 分かりやすく説明しています. オブジェクト指向に馴染みの無かった私でも, オブジェクトの概念をおおよそ掴む事ができたと思いますので, 分かりやすい説明ができているのだと思います.

また, 変数, 定数, 及びそれらの有効範囲, 疑似変数, 組み込み変数などについてもしっかりと説明してありますし, 代入, 演算子, 制御構造などについてもしっかりと説明してあります. また, 数値や計算についての話や文字列の取り扱いについては, 実際のプログラミングでの勘どころも含めて解説しており, 日本語処理についてもきちんと書かれています.

また, 実用的なプログラムでは必須となる入出力についても, ファイル IO, ソケット IO と分けて説明している点が便利だと思います.

もう, とにかくこの章だけでも Ruby の基本を押えられるでしょうし, 入門として詳しすぎず, はしょり過ぎずとちょうど良い感じだと 思われます.

オブジェクト指向とは

オブジェクト指向に馴染みの無かった私のような者にでも理解できるように

と 3 つの章で懇切丁寧に説明しています.

特に, 5 章の設計編と 6 章の実践編では, 例題を用いてプログラミングを 進める手順を設計の思想と共に示して説明を進めるやり方を取っているので, 普段プログラミングをやっていない方や職業プログラマでない方でも, プログラミングとはこうやるもんだ, という思想も含めて学べるように なっていると思いました.

役に立つ?, 魅力的?

この手の本で, 私が最初にチェックするのは

という点です.

この点, この本は,

ということで, リファレンス機能としては十分なものがあります.

只, 索引の方は

8 頁分

ということで, ややプアなイメージを持ってしまいました. まぁ, 目次が割と細かく章立てされているのと 巻末の用語集も含めて考えれば, 実際にはプアという印象は誤りなのかも知れませんが, この辺りは, もっと使い込まないとちゃんとは評価できないところですので, ここは話半分に聞いてもらえると良いと思います.

また, 読んでいて面白かったのは, ほぼ毎頁にあると感じられる 脚注です (実際は, 毎頁には無いです, 念の為). 頁をめくった時に, 先に脚注に目が行ってしまい, それに対応する 本文を探してしまうこともしばしばありました. この辺りは, 作者のまつもとさんの人柄の現れなんだろうなと ニヤニヤしながら読んでしまいます. 読んでいて面白いプログラム言語の解説書というのも珍しくて良い感じです.

結論

一通り, 読まさせてもらって感じたことは,

Ruby でプログラムを書いてみたい!

ってことです.

こんな気にさせてくれる言語解説書は, 初めてかも知れません. 期待通り, いえ, 期待以上に素晴らしい本だと思います. Ruby 入門者から上級者まで使えて, 満足できる, そんな一冊では 無いでしょうか.

最後に, Ruby 本の Book Review の機会を与えていただいた 関係者の方々に感謝したいと思います. ありがとうございました.


Reviewed by 佐々木 俊介 (ele@pop17.odn.ne.jp) さん (HomePage)

Linux の使用歴
一年
UNIX の使用歴
五年 (インストールヲタク歴 ^^;)
Linux Box の主な用途
Linux Box に載っている Linux 以外の OS
FreeBSD, Windows98
Linux と Linux 以外の OS の使用頻度の比
Linux : Others = 1:3

始めに

わたしは Ruby に出会い 3 ヵ月くらいになる, まだ使いこなしているとは言えない Ruby 初心者です. そんな初心者的視点から「 Ruby 」と「オブジェクト指向」 という二つの点においてレビューを行います.

読みやすい点

読みにくい点

ここでは今後の改善を願い多少の苦言を述べますが, このマイナス要因は必ずしも欠点では無い部分も含んでいます. 人によってプラスの要因にもなりうるとは思います.

プログラミングの初心者的視点 (?)

わたしはプログラミングの経験があり この点では初心者的視点で見る事はできないかもしれませんが, この Ruby という言語はプログラミング初心者にもお薦めだと思います. 初心者には手軽で実践的な事ができる言語が必要ではないでしょうか. Ruby はこの点においてきっちり条件を満たすだけではなく, モットーの「楽しいプログラミング」が 何よりもプログラミング初心者には嬉しいと思います.

ただ, この本自体はプログラミング経験を前提にしているのではないでしょうか. 完全なプログラミング初心者にとっては大変な部分があるかもしれません. スクリプト言語を含め何らかのプログラミングを経験しているべきでしょう.

まとめ

少し難点はあるものの初心者にもお薦めだと思います. この本はオブジェクト指向にあまり慣れていない人に良い本でしょう. 個人的には, プログラミングが楽しくないと感じている人, BASIC 世代の人, プログラムの設計という物が分からないといった人達にお薦めしたいです.

わたしが詰まったポイントを元にこの本を読む為の コツ を簡単にまとめていますので, もし難しいと感じたら御覧ください. 参考になるかもしれません.

みなさんも Ruby で「楽しいプログラミング」をしてみませんか? この本を読むとわくわくできると思います(^^).


Reviewed by 古村 洋 (yfurumura@nifty.com) さん (Ruby 秘密特訓所)

Linux の使用歴
約 3.5 年
UNIX の使用歴
Linux 歴と同じ 3.5 年
Linux Box の主な用途
趣味のデスクトップ環境 (Web 閲覧, メール, VCD&MP3) と時々シェルプログラミング
Linux Box に載っている Linux 以外の OS
Windows98, WindowsNT
Linux と Linux 以外の OS の使用頻度の比
自宅では 9:1, 仕事では 1:9

1. 本書の概要

本書は, まつもと ゆきひろ氏開発のスクリプト言語 「Ruby」についての初の解説書です. 簡単な Ruby の紹介, 言語仕様の解説から始まり, プログラミングの方法, オブジェクト指向プログラミングの適用, 最期には拡張ライブラリによる Ruby の強化についても触れられています. 開発者自身が執筆され, 最初に出た本ということもあり, Ruby 界では, すでに「バイブル」との呼称で呼ばれているようです. なお, 発売元である ASCII 社の Web サイトより, 本書の第二章「 Ruby 入門」については PDF にて閲覧可能ですので, 購入を検討されている方は, ご覧になってみるのも良いかとも思います. (もちろん, いきなり本屋で購入しても決して後悔する様な内容ではありません.)

2. 私と Ruby

私は, Linux 世界に首を突っ込んでから約 3 年を数え, 主に「趣味のデスクトップ環境 (メール・WWW ブラウズ・VCD や MP3)」として 同 OS を使用してきました. また, 半年ほど前 このブックレビュー にて, 「マスタリング Csh」という本に出会い, シェルプログラミングに出会い, 自分の簡単なツール程度は自作できるようになりました.

しかし, 大規模なプログラミングや GUI なアプリケーションの作成においては, やはり Csh の限界を感じ, 何らかの方法でブレイク・スルーを行う必要を感じておりました. そこで次は何を・・・と模索していたおりに目に留まったのが, Ruby であったのです.

さっそく環境を構築し, ユーザーガイド (大変親切に書かれています) を参照しつつ入門をしたのですが, 今一つ, 私の固くなってしまった頭では全体像を掴みきれません. 「もう一歩, 網羅的な本があれば・・・」と願っていた矢先, 本書の出版を知りました. さっそくブックレビューに応募し, この原稿を書いている現在に至るわけです.

3. 基礎部分 (1 〜 4 章) を読み終えて

本来は全章を完読して, レビューをするのがよいのですが, 一歩一歩理解しながら進んでいったため, 四章まで読み終えた時点で, Time Up となってしまいました. 全体を通してのブックレビューを, 私のホームページ (後述) に載せて行こうと思います.

前置きはともかく・・・

1 〜 4 章は, 以下のような内容になっています.

第 1 章. Ruby とは
・言語としての特徴
・簡単なプログラム例
第 2 章. Ruby 入門
・言語仕様の基本
第 3 章. Ruby プログラミング入門
・やや長めのプログラミングの実例を通しての解説
・クラスライブラリの利用
・ソケットプログラミング
・マルチスレッドプログラミング
第 4 章. Ruby オブジェクト指向プログラミング
・オブジェクト指向プログラミングとは
・ Ruby のオブジェクト指向機能
・メソッドについて
・クラスとモジュールの使い方

5 章からは, 以下のような内容です. (大項目だけ記します)

第 5 章. Ruby オブジェクト指向設計
第 6 章. Ruby オブジェクト指向プログラミング-実践
第 7 章. 応用 Ruby プログラミング
第 8 章. Inside Ruby
第 9 章. Ruby を強化する
第 10 章. Ruby を取り巻く世界

さて, 1 〜 4 章まで読み終えた感想を以下に述べます.

一番のポイントは, 非常に読みやすく, 理解しやすい表現で書かれているということです. 特に, 4 章のオブジェクト指向プログラミングについての解説は, プログラミング初心者であっても, 十分に理解可能なものです. オブジェクト指向に関する書籍を今まで何冊か読んできましたが, これ以上に理解しやすい本は読んだことがありません.

また, 2 章の言語仕様の解説においても, 大変親切に書かれており, BASIC 程度の知識がある方であれば, 十分に理解可能であると思います.

3 章のプログラミング例では, ftp 用のライブラリを活用した, ファイル転送ツールの作成等について解説されており, すぐにでも活用または応用が利きそうな例が記載されています. 「こんな簡単に, ネットワークを使用するプログラムが組めるのか!」 と目から鱗が落ちる思いでした.

4. この本の読み方

プログラミングほぼ初心者の私が読み進めるにあたって, 障壁になった部分について, いくつかご紹介したいと思います.

(1). 正規表現の知識はあったほうが良い

スクリプト系言語では当たり前のことかもしれませんが, 本書でも正規表現を使用したプログラム例がいっぱい出てきます. 本書においても, 10 ページにわたって解説されていますが, 人によっては別な参考書を手元においていたほうが良いかもしれません.

(2). イテレータを制す物は Ruby を制す?

入門者にとって, これが最大の関門であると思います. 私は五回読み返してやっと大意がつかめたといったところです. 実践を繰り返して身につけるべき所となのかもしれません・・・ でも, とりあえずはわからなくてもプログラムは組めるんだけどね (^^;)

(3) やっぱり読むだけではダメ

もっぱら通勤電車での購読で読み進めてきましたが, やっぱり身につきません. 自宅環境に Ruby をインストールし, サンプルをいじくるうちに何とか雰囲気がつかめてきました. 本書には, Ruby 本体はもちろん, 役に立つ情報 (ML のアーカイブとか) が満載されています. 是非愛機のまえで本書を開きましょう. (Win32 版もちゃんと入ってますので, Win な人も安心です)

5. まとめ

本書は, 最初に世に出た Ruby 解説書であり, シンプルながらも高度なプログラミングを可能とする同言語を, 網羅的かつ実践的に学習できる良書だと思います. 本言語の習得はもちろん, 「オブジェクト指向」なる世界に足を踏み込む第一歩として, とてもお勧めできます. C++ を始めたとき, OOP の概念に思いっきりハマッた私としては, この本がもっと早く出ていたら・・・と思っています. まずは, Ruby を思いっきり楽しんでから, C++ 再入門と行きたいものです.

6. おまけ

本レビューで触れることが出来なかった 5 章以降のレビューや, 私の Ruby 格闘記を記す Web ページをオープンしました. (まだメニューすらありませんが (^^;)) URL は下記のとおりです.

Ruby 秘密特訓所 (http://www6.freeweb.ne.jp/computer/furumura/)

最終目標として, アイデアプロセッサーの作成を目論んでいます. 今後 Ruby-list などに出没するかと思いますが, 関係者の皆様, 宜しくお願いします m(_._)m

最後に, 本レビューの機会を与えてくださった, www.linux.or.jp 管理グループ の皆様, ASCII 出版局様, 筆者の まつもとゆきひろさま / 石塚圭樹さま に, この場をお借りしてお礼申し上げたいと思います.


Reviewed by 渡辺政寿 (cat73220@pop21.odn.ne.jp) さん

Linux の使用歴
Linux Kernel 1.3の頃より
UNIX の使用歴
Sun3/260 がカッコ良かった頃より
Linux Box の主な用途
音楽, 画像などデータの保管庫. プログラムの実験場
Linux Box に載っている Linux 以外の OS
なし
Linux と Linux 以外の OS の使用頻度の比
WinNT:BeOS:Linux=0.8:0.19:0.01

まえがき

本書を読んでたいへん参考になった 3 つの章 4, 5, 6 章の事について書きます. もっとも, ほかのレビューした方々よりも多く時間を戴いたにも関わらず この三つの章しか読みませんでした, 済みません. そして, もっと技術的な視点で読めれば良かったのですが, 章内の構成に今一歩な部分が多く見られ, そのことを言ってしまう部分が多いです. これは, 唯一の Ruby の解説本なのに, 今一歩私がすんなりと理解できなかったことが 多々あった事への残念感の現れと思ってください. (私の理解力にも問題があるのですが.)

4章について

この章で解説されている内容:

オブジェクト指向プログラミング一般を (多分) 初心者に説明した後 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 章では, 主に以上の三つのこと, 「初心者向のはずなのに言葉の説明が足りない」, 「図の使い方が悪い」, 「章同士のレベルが一定でない」 が気になり, 読み進むのが困難でした.

5章について

この章で解説されている内容:

前半でオブジェクト指向設計の一般的な方法を軽く解説して, 後半で ruby で使われているデザインパターンの解説を交えて ruby は如何にオブジェクト指向設計しやすいかを解説しています.

モジュールのアイデア ( Mix-in が何なのか) がここで良く理解できて そのかっこ良さが判ってうなずきながら読みました. 加えて, 章末のデザインパターンの説明はすばらしいです. GoF の訳本で得られなかった理解がここで得られました. 感謝です. しかし, 4章同様の読みにくさはあちこちにあります.

6章について

この章で解説されている内容:

ruby 付属のパッケージを元に「良いクラス」の解説をしています.

前半の PStore.rb の解説を除くとすばらしい章です. 特に, RUP で OOA していく 「 OOA を少しだけかじった者」 向けの実例としては世界一分かりやすいものとなっています. (私の世界は狭いもので ... )

PStore.rb の解説は最後のまとめる部分を最初に持ってくることで 著者がこれから何を言いたいのかが明確になり, 読み進みやすくなるなと思いました.

あとがき

以上で私のレビュー記録はおしまいです. 4,5,6 章の中では 6 章の「解説する」という視点に立ったときの構成が 一番まともでした. ただし, PStore.rb の解説部分は除きます. プログラムに「パターン」があるように「解説」にもパターンがあります, これを逸脱した解説は解説になりません. 詳しくはブルーバックス社の 「わかりやすい表現」の技術に上手に解説されています, みなさんにご一読をおすすめします.

最後に, 入稿がたいへん遅れ いろいろな方にご迷惑をかけたことをお詫び致します.


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