モジュールを定義する

モジュールを定義する方法、およびモジュールの利用方法について解説します。

(Last modified: )

モジュールを定義する

モジュールを定義する方法です。書式は次の通りです。

module モジュール名

end

モジュールは module から始まり end で終わりとなります。そして module のあとにモジュール名を指定してください。

モジュール名はモジュールを識別するための名前で大文字のアルファベットから始まります。例えば Greeting と言うモジュールを定義するには次のように行います。

module Greeting

end

モジュールではクラスと同じくメソッドを定義することができます。クラス変数に相当するものはモジュールにはありませんが定数は定義することができます。

module Greeting
  def hello
    puts("Hello")
  end
end

このようにモジュールはクラスに非常に似た構成を持っていますが、大きな違いとしてクラスはクラスからインスタンスを作成することができますがモジュールではインスタンスを作成することはできません。モジュールの利用方法としては「モジュール名.メソッド名」の形式で関数のように実行したり、他のクラスの中にインクルードして利用します。

module Greeting
  def hello
    puts("Hello")
  end
end

class Hello
  include Greeting

  def dispGreeting
    hello
  end
end

クラスでは継承をサポートしており 1 つの基幹クラスを継承して複数のクラスを作成する事ができます。これによって同じような機能を持つクラスを別々に 1 から作成する必要はありません。ただ、同じ様な機能が必要だったとしてもまったく別の目的のクラスである場合はクラスの継承によって共通化する部分を作成するのはおかしい場合があります。そのような場合に共通となる機能をモジュールとして定義し、各クラスにインクルードして利用することでコードの再利用性を高めることができます。

サンプルコード

では実際にサンプルプログラムを作成してみます。

# encoding: UTF-8

module Greeting
  def hello
    puts("Hello")
  end
end

class Hello
  include Greeting

  def dispGreeting
    hello
  end
end

hello = Hello.new
hello.dispGreeting

上記を実行すると次のように表示されます。

モジュールとは何か

今回のサンプルでは Hello クラスの中に Greeting モジュールを読み込んで利用しています。このようにクラスの中に読み込まれたモジュールは、モジュールの中で定義されているメソッドをクラスの中から利用することができます。

-- --

モジュールを定義する方法、およびモジュールの利用方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。