誰も書かんので書いちゃる module M def a; 1 end end class C1; include M end class C2; extend M end class C3; end p [C1.new.a, C2.a, C3.new.extend(M).a] #=> ? Mで定義しているメソッドのほとんどがインスタンスメソッド用なら include すればいいし、 クラスメソッド用なら extend するのが一般的な使い方。 だけど、クラスメソッドを定義するのがextend、とは覚えない方がいい。 特異メソッドを定義するのがextendと覚えた方がいい。 C3.new に対して extend しているのにクラスメソッドにはなってないのがわかるでしょ? ここでたぶん疑問が湧いたと思う。クラスメソッドとは特異メソッドのことなのか?と。その通り。 ツッコミ歓迎。