Ruby1.9 のクラスのメタ階層を整理する 2

sumimさんの「Ruby1.9のクラスのメタ階層を整理する」という記事、Rubyの型階層は雑然としているというのは、なんかsumimさんの図が悪いような気もするなぁ。整理すればもうちょっと情報を引き出せるよ。

http://idm.s9.xrea.com/ratio/2008/09/13/000798.html


んー。メタ階層がどうなっているかを整理したかったので、書き方はこれでいいのです。お世辞にもきれいな絵とは言い難いですが、雑然としているのはやはり Ruby の実状を示しているからだと思います。


yugui さんの図は、たしかにクラスと特異クラス(メタクラス)が揃って並んでいて見た目にはきれいなのですが、これだとクラスが整然と並んでこそいるものの、肝心のメタ階層がどうなっているかという情報のほうは、正直なところ、いささか得にくいものになってしまっています。


図の目的をわかりやすくするために、先に示した図から本質ではない継承パスを除いて、さらに階層ごとに色分けをしてみた図をあらためて作ってみました。なお、Ruby の場合は同じ階層にいろいろなものが混じっているので、色分けには(Smalltalk の場合のような)意味はあまりありません。


Ruby の場合

http://squab.no-ip.com/collab/uploads/61/ruby19meta2.png

Squeak Smalltalk の場合

http://squab.no-ip.com/collab/uploads/61/squeak39meta2.png



Squeak Smalltalk のほうは、クラスを分類してから並べて描いたように見えてしまうので誤解されたかもしれませんが、実際は逆で、まずメタ階層ありきで描いています。Ruby のもまったく同じ方法で描いています。ポイントとしては、最上階の例外を除いて、矢印が常に上へ上へと向いていっているというところでしょうか。

以上、意に反して「図が悪い」と繰り返し指摘されてしまいましたので(^_^;)、まあそう言うほど的を外した図ではないよという釈明でした。