継承とincludeおよび特異クラスが組み合わさった場合のRubyのメソッド探索順序は図中の番号のとおりだ。 Clazzはユーザが定義した親クラス、InheritClazzはClazzを継承したクラス、InheritClazzはModule1とModule2をincludeする。 このクラス図ではincludeの結果、実際には現れない中間クラス(InheritClazz1)と(InheritClazz2)が生成されることにしている。 さらにこのInheritClazzに特異メソッドmethodを定義した結果生成される特異クラスをSingletonInheritClazzとする。 文章で説明するとややこしくなってしまうが、ポイントを説明するとRubyでは以下1.から4.の順番でメソッドが探索され実行される。 オブジェクトが特異クラスのインスタンスなら特異クラスで定義されたメソッドが呼ばれるク