モジュール

Rubyの「モジュール(module)」は、メソッドや定数のグループ化を目的とした構造であり、クラスのようにインスタンス化はできません。主に以下の2つの目的で使用されます:

  1. 名前空間(Namespace)の提供

  2. ミックスイン(Mixin)による機能の共有


1. 名前空間としてのモジュール

複数のクラスやメソッドで名前が衝突するのを避けるために、モジュールを名前空間として使用します。

ruby
module Geometry PI = 3.14 def self.circle_area(radius) PI * radius * radius end end puts Geometry::PI # => 3.14 puts Geometry.circle_area(5) # => 78.5
  • モジュール名は慣例的に**CamelCase(大文字で始まる)**で書きます。

  • :: 演算子を使って、モジュール内の定数やメソッドにアクセスできます。


2. ミックスインとしてのモジュール

Rubyでは多重継承をサポートしていないため、共通の機能を複数のクラスで共有したい場合にモジュールを使ってミックスインを行います。

ruby
module Walkable def walk puts "I can walk" end end class Person include Walkable end p = Person.new p.walk # => "I can walk"
  • include モジュール名 を使うことで、インスタンスメソッドとしてそのクラスに機能を追加できます。

  • extend モジュール名 を使えば、クラスメソッドとして機能を追加できます(そのクラスのオブジェクトではなく、クラス自身にメソッドが追加されます)。


モジュールの特徴と制約

特徴 内容
インスタンス化できない Module.newMyModule.new は不可
継承できない class A < MyModule のような継承は不可
ミックスインで共有可能 includeextend を使って複数クラスに再利用できる
名前空間として利用可能 他のクラスや定数名と競合しないよう整理可能

まとめ

Rubyのモジュールは、コードの再利用名前空間の整理という2つの重要な役割を担っています。モジュールを適切に使うことで、柔軟で保守性の高いコード構造を実現することができます。

生成日:2025/05/03