Rubyのモジュールによるミックスインの3つの方法


こんにちは。Tomoyuki(@tomoyuki65)です。

Rubyのモジュールはミックスインで使用しますよね。

ミックスインの方法としては3つ覚えておくと良いでしょう。

この記事では、ミックスインについて解説します。

 



ミックスインの3つの方法とは?

Rubyのモジュールのミックスインでは、以下の3つの方法があります。

  •  includeでミックスイン
  •  extendでミックスイン
  •  prependでミックスイン

 

includeでミックスイン

モジュールをインスタンスメソッドとしてミックスインしたい場合は、includeを使います。

例として、以下のプログラムを実行してみて下さい。

# モジュールを定義
module Say_en
  def hello_en
    puts "Hello"
  end
end

# クラスを定義
class Say
  # モジュールをミックスイン
  include Say_en

  def hello_jp
    puts "こんにちは"
  end
end

greeting = Say.new

# インスタンスメソッドを実行
greeting.hello_jp
greeting.hello_en

 

実行結果
こんにちは
Hello

 

extendでミックスイン

モジュールをクラスメソッドとしてミックスインしたい場合は、extendを使います。

例として、以下のプログラムを実行してみて下さい。

# モジュールを定義
module Say_en
  def hello_en
    puts "Hello"
  end
end

# クラスを定義
class Say
  # モジュールをミックスイン
  extend Say_en

  def hello_jp
    puts "こんにちは"
  end
end

# クラスメソッドを実行
Say.hello_en

 

実行結果
Hello

 



prepend

モジュールをインスタンスメソッドとしてミックスインする場合は、includeを使うのが一般的ですが、Ruby 2.0からはprependでミックスインすることもできます。

prependでミックスインした場合は、同名のメソッドがあった場合にミックスインしたクラスよりも先にモジュールのメソッドが呼ばれるため、既存メソッドの置き換えることができます。

例として、以下のプログラムを実行してみて下さい。

# モジュールを定義
module Say_en
  def hello_en
    puts "Hello"
  end

  def hello_jp
    puts "Hello"
  end
end

# クラスを定義
class Say
  # モジュールをミックスイン
  prepend Say_en

  def hello_jp
    puts "こんにちは"
  end
end

greeting = Say.new

# インスタンスメソッドを実行
greeting.hello_jp
greeting.hello_en

 

実行結果
Hello
Hello

 

実行結果の通り、prependを使用することで既存メソッドの置き換えを簡単にすることができます。

例えばモンキーパッチ(自分が期待する挙動に変更すること)をあてる際に、以前は既存のメソッドを上書きにはエイリアスメソッド使用していましたが、prependを使用することで簡単にできるようになりました。

尚、includeした場合はクラス側のメソッドの置き換えはできませんが、クラス側でモジュールのメソッドを置き換える(上書きする)ことはできます。

 

まとめ

  •  インスタンスメソッドとしてミックスインする場合は、includeを使う(クラス側でモジュールのメソッドを上書き可能)
  •  クラスメソッドとしてミックスインする場合は、extendを使う
  •  includeの代わりにprependでミックスインすると、既存メソッドの置き換えが簡単にできる

 

  • 関連記事

オススメのRuby入門サイトはどれ?Rubyの学習方法をまとめる

2017.10.24

 

The following two tabs change content below.
Tomoyuki

Tomoyuki

好きなことで生きたくて、SEを辞めてブロガー&ゲーム実況で活動中。パソコン、ネット、ゲームが大好き。YouTubeのチャンネル登録&Twitterのフォローもぜひお願いします!








シェアはこちらから


本を、聴こう。

オーディブルなら、プロの声優やナレーターが朗読した本(音声コンテンツ)を、耳で聴いて楽しめます。



資産運用ならウェルスナビがおすすめ!

ウェルスナビなら誰でも簡単に自動で資産運用を始められますよ!
まだ資産運用を始めてない人は、ぜひ一度チェックしてみて下さいね。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です