
プログラミングのMixinって何?初心者向けに分かりやすく解説
Mixinとは、オブジェクト指向プログラミング言語において、サブクラスを継承して機能を提供し、独立して動作することを意図していないクラスのことです。いくつかの言語では、ミックスインは、その言語のクラスや継承とは異なる仕組みになっています。
オブジェクト指向プログラミングでは、当初、継承は特殊化であると考えられていました。 つまり、継承した部分である(派生型)と(ベース型)の間にリスコフ置換原理が存在すると仮定したわけです。
もっと簡単に言えば、単体で機能するコードではなく、他の部分から呼び出されて適応されると機能するコードのことです。
本体であるクラスが戦士だとしたら、Mixinとはソードと言えます。ソードは単体では使えませんよね、まあ、ある意味クラスを継承するのとそんなに変わりません。
ですんでmixinでの継承も、上記のような特殊化のためのものではなく、複数の機能を組み合わせるためのものです。
特に、クラスの多重継承が可能なシステムでは、mixinクラスの多重継承を利用して、複数の機能を持つシンプルなクラスを簡単に作成することができます。 この種のパターンの典型的な例は、InputStreamとOutputStreamという複数のMixinクラスを継承して、InputOutputStreamという双方向のストリームクラスを作成することです。
ハイブリッド要素自体はもっと前から検討されていたが、1970年代にMIT Lisp方言のオブジェクト指向システムであるFlavors(プログラミング言語)によって普及しました。Flavorsは、同時期のオブジェクト指向システムであるSmalltalkの影響を受けた試みの一つであるが、多重継承を採用していたので、
この名前は、基本的なフレーバー(バニラやチョコレートなど)と他の材料(ナッツ、クッキー、キャンディなど)を混ぜ合わせて「ミックスイン」と呼んでいたことに由来します。
要は、簡単に言えばMixinはコードの再利用を促進するということなのですが、 しかし、Mixinにはある程度の妥協も必要です。