はじめに

おことわり

筆者は Ruby の実装について詳しいわけではありません。 確かに Ruby スクリプトならちょいとは腕に覚えがあるし、Ruby のソースコードも ちょくちょく眺めていますし、小さな拡張モジュールくらいだったらすぐ書けます。 しかし、Ruby のソースコードの全てを熟読したことはないし、そもそもプログラマ としての経験自体が二年くらいしかありません。しかもこれまで書いたプログラムの ほとんどは Ruby スクリプトで、C はその 1/50 くらいしか書いていません。

それでも筆者がこの文書を書こうと思ったのは、もっと Ruby について知りたいからです。 Ruby をユーザとして使うだけでなく、もっと Ruby の本質を知りたい、 普段使っているものが、どのように作られているのか、どうしてそうなるのか、 その根本をえぐりだしたいのです。南蛮由来の言葉で言えば 「Hacker 魂をゆさぶられる」といいましょうか。

上記のような事情から、この文章はもののわかった解説者の文章とは違います。 筆者が疑問に思ったこと、興味を持ったことを調べて、その理由がわかったら それをまとめて書いていく、いわば「けものみち」です。最短経路でもなければ 歩きやすくもなく、ときには行きどまりがあるかもしれません。

ですから、この文章を頭から信じてはいけません。もし「なんか変?」と思ったら、 自分でソースコードを読んでください。どう見てもこの文章と合わないときは、 自分で調べたほうを信じてください。

対象とするバージョン

その時の CVS 最新バージョンを対象にしています。しかし Ruby は常に 活発なアップデートが行われていますから、書いている間に実装と離れて しまうことはありえます。もしそのようなところを見つけたら、笑って 許してください。また、筆者は Linux マシンしか持っていないので システム寄りの話は自然と Linux が中心になると思います。