読み方 : ミックスイン
Mixin
概要

オブジェクト指向プログラミングでは、クラスを継承することで機能を再利用する方法が一般的である。しかし、単一継承の言語では、一つのクラスが直接継承できる親クラスは一つに限定されるため、異なる機能を横断的に追加したい場合にコードが重複したり設計が複雑になることがある。
Mixinは特定の機能のみをまとめたクラスやモジュールを他のクラスに組み込むことで、柔軟に機能を拡張する仕組みである。通常、単体では完全なオブジェクトとして利用されることを想定せず、他のクラスに「混ぜ込む」ことを前提として設計される。例えば、ログ出力機能や比較機能、イベント通知機能など、さまざまなクラスで共通して利用される振る舞いを切り出してMixinとして定義する。このMixinを複数のクラスに適用することで、同じ機能を重複実装することなく再利用できる。
RubyやPython、TypeScriptといった言語で採用されているが、言語によって実現方法は異なる。多重継承に対応した言語ではMixinクラスを複数継承する形で実現する場合がある。一方、多重継承を持たない言語では、インターフェースとデフォルト実装、トレイト、拡張メソッドなどの仕組みを用いて同様の機能を提供する