鳥取Ruby会 第11回 番外編 traits

鳥取Ruby会の番外編的につぶやかれたtraitsについてのお話。
0
Tomonori Fukuta @chinmo

継承はOOPLにおける再利用の仕組みだけど、苦手なこともある。単一継承はシンプルすぎて表現力が足りない。多重継承は実装上、概念上の問題点がある。 #tottoruby

2013-01-19 15:12:36
Tomonori Fukuta @chinmo

クラスという概念が、再利用の仕組みとして最適でないケースがある。これは、クラスに二つの競合する役割がある事に起因する。クラスにはインスタンスを作る役割があるので、必要なものが全て揃う必要がある。つまりクラスは、「具体化されるに足る特殊性」を持つ事になる。 #tottoruby

2013-01-19 15:15:46
Tomonori Fukuta @chinmo

一方クラスを再利用の単位としてみると、なるべく小さく、汎用的で、任意の場所で使える必要があるはずだ。インスタンスの生成器が、汎用的な再利用部品でありうるのか、という。 #tottoruby

2013-01-19 15:17:07
Tomonori Fukuta @chinmo

そこでmixinです。小さく、完全である必要がなく、任意の場所で使える。mixinにより、インスタンス化のためでなく、再利用のためのコンポーネントを作る事が可能になった。でも、mixinにも問題点が。 #tottoruby

2013-01-19 15:18:48
Tomonori Fukuta @chinmo

それはわかりやすさ。実装の継承とも呼ばれるmixinという概念は、継承を用いている。継承は、汎化特化の関係を表すのには向いているけどクラスが再利用のため「だけ」の構造を含む事を表すには向かない。また継承は、複数のmixinが「線形」に構成される事を強制する。 #tottoruby

2013-01-19 15:22:42
Tomonori Fukuta @chinmo

こういった認識の上で、継承じゃない方法で、再利用部品を表現する仕組みとして、traitsが提案された。と、ここまでは読めた。そろそろ時間だ。誰かが窓を叩く音がする。いや、そんな! あの手は何だ! 窓に! 窓に! #tottoruby

2013-01-19 15:27:08