【Ruby3.x】Module::include()メソッドの使い方
includeメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
includeメソッドは、指定されたモジュール(または複数のモジュール)のインスタンスメソッドや定数を、自身のクラスやモジュールに取り込むためのメソッドです。このメソッドをクラス定義やモジュール定義の内部で使用すると、指定されたモジュールの機能がそのクラスやモジュールに「ミックスイン」されます。
ミックスインされたモジュールのインスタンスメソッドは、あたかもそのクラスやモジュールに直接定義されているかのように、そのクラスのインスタンスから呼び出すことが可能になります。また、モジュール内に定義された定数も、そのクラスやモジュール内で利用できるようになります。
Rubyでは、クラスが複数の親クラスから直接継承する多重継承はサポートされていません。しかし、includeメソッドを利用することで、複数のモジュールから共通の機能や振る舞いを取り入れ、コードの再利用性を高めることができます。これにより、特定の機能群を独立したモジュールとして定義し、それを必要とする複数のクラスで共有するといった柔軟な設計が可能になります。
includeメソッドによる機能の追加は、継承とは異なるメカニズムで行われます。具体的には、メソッドの探索順序(メソッドルックアップパス)において、自身を定義しているクラスやモジュールの直後に、ミックスインされたモジュールが挿入されます。これにより、メソッドが呼び出された際に、まず自身のメソッドが探索され、次にミックスインされたモジュールのメソッドが探索されるようになります。引数には、取り込みたいモジュールオブジェクトを一つ以上指定します。
構文(syntax)
1module MyFeature 2 def greet 3 "Hello!" 4 end 5end 6 7class MyService 8 include MyFeature 9end
引数(parameters)
*modules
- *modules: include したいモジュールを可変長引数で指定します
戻り値(return)
self
include メソッドは、モジュールをレシーバオブジェクト(self)にインクルードした結果、すなわちレシーバオブジェクト自身を返します。