オライリー矢野様より献本御礼。

初出:2009.01.22; 販売開始まで更新

やっとキタ━━━━(゜∀゜)━━━━ッ!!

長らくバイブル不在だったRubyに。

ただし、ちょっとした注意点がある。ヒント:

  • ラクダ本は「Programming Perl
  • ヘビ本は「Programming Python
  • で、おそらく今後「ハチドリ本」と呼ばれるであろう本書は「The Ruby Programming Language」

本書「プログラミング言語Ruby」は、プログラミング言語、Rubyのバイブルとしての役割を決定づけられた本。なにしろ Rubyの父その人である Matz と、サイ本こと「JavaScript: The Definitive Guide」の著者Flanaganの共著である。バイブル以外ではありえない。

目次 - Book:プログラミング言語 Rubyより
目次
著者まえがき
はじめに
1章 イントロダクション
1.1 Rubyひとめぐり
1.2 Rubyを使ってみよう
1.3 本書について
1.4 Rubyによる数独ソルバ
2章 Rubyプログラムの構造と実行
2.1 字句構造
2.2 構文構造
2.3 ファイル構造
2.4 プログラムのエンコーディング
2.5 プログラムの実行
3章 データ型とオブジェクト
3.1 数値
3.2 文字列
3.3 配列
3.4 ハッシュ
3.5 範囲
3.6 シンボル
3.7 true、false、nil
3.8 オブジェクト
4章 式と演算子
4.1 リテラルとキーワードリテラル
4.2 変数参照
4.3 定数参照
4.4 メソッド呼び出し
4.5 代入
4.6 演算子
5章 文と制御構造
5.1 条件分岐
5.2 繰り返し
5.3 イテレータとEnumerableオブジェクト
5.4 ブロック
5.5 制御フローの変更
5.6 例外と例外処理
5.7 BEGINとEND
5.8 スレッド、ファイバ、継続
6章 メソッド、proc、lambda、クロージャ
6.1 単純なメソッドの定義
6.2 メソッド名
6.3 メソッドとかっこ
6.4 メソッド引数
6.5 Proc
6.6 クロージャ
6.7 Methodオブジェクト
6.8 関数プログラミング
7章 クラスとモジュール
7.1 単純なクラスの定義方法
7.2 メソッドの可視性: public、protected、private
7.3 サブクラス化と継承
7.4 オブジェクトの作成と初期化
7.5 モジュール
7.6 モジュールのload、require
7.7 特異メソッドと特異クラス
7.8 メソッドの探索
7.9 定数の探索
8章 リフレクションとメタプログラミング
8.1 型、クラス、モジュール
8.2 文字列とブロックの評価
8.3 変数と定数
8.4 メソッド
8.5 フック
8.6 トレーシング
8.7 ObjectSpaceとGC
8.8 カスタム制御構造
8.9 method_missingとconst_missingの活用
8.10 メソッドの動的な作成
8.11 エリアスチェイン
8.12 ドメイン固有言語(DSL)
9章 Rubyプラットフォーム
9.1 文字列
9.2 正規表現
9.3 数値と数学
9.4 日付と時刻
9.5 コレクション
9.6 ファイルとディレクトリ
9.7 入出力
9.8 ネットワーキング
9.9 スレッドと並列処理
10章 Ruby環境
10.1 Rubyインタープリタの起動オプション
10.2 トップレベル環境
10.3 実用的な抽出と報告のためのショートカット
10.4 OS呼び出し
10.5 セキュリティ
索引

「Rubyの本」としては、実によい本である。他のプログラミング言語と同じ書き方をする、「つまらない」、しかしバイブルとしては省略できない部分を必要十分に押さえつつ、Rubyならではの書き方や考え方に関しては実に懇切丁寧に解説している。特に1.8と1.9の違いが確実に書かれているのはありがたい。1.8と1.9の違いは、体感では Perl 4 と Perl 5 ぐらい違うので。

それだけに、本書をラクダ本やヘビ本のようなバイブルを期待している人は、むしろ物足りなさを感じるのではないだろうか。

その一番の理由は、「文化」への言及がほとんどないこと。

たとえば、本書には冗句やユーモアはほとんど出てこない。動物本のありようを決定づけたラクダ本は、この点で実に画期的だった。英語に過剰依存している部分は版を重ねるごとに減ってはいるが、そうでない部分には今もなお遠慮ない。オブジェクトの説明なんてもろにロード・オブ・ザ・リングである。ヘビ本もこの点は踏襲していて、Python自体はお硬いイメージが実に強いのに、SPAMだらけである(このSPAMは迷惑メイルのそれではなく、Monty Pythonのそれ)。そのヘビ本と比較してもなお、本書は情緒に欠ける。

これはおそらく、Flanaganのスタイルだろう。サイ本にもこのことを強く感じたので。この点がやはり惜しまれる。Rubyistはユーモアのセンスに欠けた人々では全くないゆえに。情緒という点において、本書は「初めてのRuby」に一歩劣ると言わざるを得ない。

そんな中で、光るのがツノホウセキハチドリという選択。なぜこれが選ばれたかは、Colophon(カバーの説明)を参照のこと。腑に落ちるとはこのことです。

もう一つの留意点は、本書はあくまでプログラミング言語Rubyのバイブルであって、Rubyプログラミングのバイブルではない、ということ。これが冒頭のヒントに対する答えだ。本書がカバーしているのは、あくまでRuby本体で、gemは「存在している」程度の言及しかないし、railsに至っては目次にさえ出てこない。

しかしそのおかげで、本書は実にコンパクトに仕上がっている。450ページしかない。これはラクダ本やヘビ本の半分弱である。価格も4,000円を切る。個人的にはバイブルなのだからこのあたり遠慮なく、という思いもあるが、本もまた商品。この割り切り方は間違ってはいないと思う。

いずれにせよ、これでバイブルは成った。

やはり次に欲しいのは、Perlで言うところのリャマ/アルパカ本、Learning Ruby だろう。Learning Python はすでにある。表紙がヘビのえさというところに Pythonistas の Monty Python 的心の黒さをひしひしと感じるというのは余談。「初めてのRuby」も本書も、プログラミング初心者向けではない。Rubyは 1st language としてもイケている言語なので、是非お願いしたいところだ。

Dan the Occasional Rubyist