Rubyの「モジュール(module)」は、メソッドや定数のグループ化を目的とした構造であり、クラスのようにインスタンス化はできません。主に以下の2つの目的で使用されます:
-
名前空間(Namespace)の提供
-
ミックスイン(Mixin)による機能の共有
1. 名前空間としてのモジュール
複数のクラスやメソッドで名前が衝突するのを避けるために、モジュールを名前空間として使用します。
-
モジュール名は慣例的に**CamelCase(大文字で始まる)**で書きます。
-
::演算子を使って、モジュール内の定数やメソッドにアクセスできます。
2. ミックスインとしてのモジュール
Rubyでは多重継承をサポートしていないため、共通の機能を複数のクラスで共有したい場合にモジュールを使ってミックスインを行います。
-
include モジュール名を使うことで、インスタンスメソッドとしてそのクラスに機能を追加できます。 -
extend モジュール名を使えば、クラスメソッドとして機能を追加できます(そのクラスのオブジェクトではなく、クラス自身にメソッドが追加されます)。
モジュールの特徴と制約
| 特徴 | 内容 |
|---|---|
| インスタンス化できない | Module.new や MyModule.new は不可 |
| 継承できない | class A < MyModule のような継承は不可 |
| ミックスインで共有可能 | include や extend を使って複数クラスに再利用できる |
| 名前空間として利用可能 | 他のクラスや定数名と競合しないよう整理可能 |
まとめ
Rubyのモジュールは、コードの再利用と名前空間の整理という2つの重要な役割を担っています。モジュールを適切に使うことで、柔軟で保守性の高いコード構造を実現することができます。
生成日:2025/05/03