include, extend, module_functionの違いをわかりやすくまとめてみた!

どうも!
インストラクターのババです!

みなさんはモジュールを使っていますか?
僕はrubyを勉強したての時、モジュールって何かややこしいイメージを持っていて全然使わないでいました。

でもモジュールって以外と簡単に使えるんです。

今回はそんなモジュールを使うためのメソッド
「includeメソッド」「extendメソッド」「moduel_functionメソッド」について解説していきたいと思います!

はじめに

shutterstock_403896286
よくincludeメソッドっとごっちゃになっるメソッドに「requireメソッド」があります。
requireメソッドは「ファイルを読み込むためのメソッド」です。

includeメソッド、extendメソッド、module_functionメソッドは「moduleを読み込む、使用するためのメソッド」です。
しっかりと区別をするようにしましょう!

includeメソッド

では初めはmoduleを使うための基本である「includeメソッド」から解説していきます。
moduleは定義するだけでは使用することができず、メソッドを用いて、使えるようにしてあげる必要があります。
そのためのメソッドが「includeメソッド」です。
実際にコードで見ていきましょう。

module Dog
  def name
    "ポチ"
  end
end

class Animal
  include Dog
end

animal = Animal.new
p animal.name
# => ポチ

DogモジュールをAnimalクラスにincludeすることで、Animalクラスのインスタンスメソッドとして、Dogモジュールのnameメソッドを定義できていることがわかります。

このようにインスタンスメソッドとして、読み込ませるのが「include」です。

extendメソッド

次に「extendメソッド」について見ていきましょう。
extendメソッドもincludeメソッドと同じように、モジュールのメソッドを使用するためのメソッドです。

module Dog
  def name
    "ポチ"
  end
end

class Animal
  extend Dog
end

p Animal.name

includeメソッドと同じようにメソッドが使用できていることがわかります。
includeメソッドとの違いは「クラスメソッド」としてモジュールがインクルードされる点です。

 

  • includeはインスタンスメソッド
  • extendはクラスメソッド

 

 

というように使い分けをきっちりできるようにしましょう。

module_function

shutterstock_394879966
基本的にモジュールはクラスに読み込ませて使うものですが、クラスに読み込ませなくても使う方法があります。
それが「module_functionメソッド」です。

module Dog
  def name
    "ポチ"
  end
  module_function :name
end

p Dog.name

module_functionメソッドを使用することで、このように普通にメソッドを使用できていることがわかります。

まとめ

今回はmoduleの使い方について「includeメソッド」「extendメソッド」「module_functionメソッド」の三つを解説していきました。
Rubyは書き方が自由な分、いろいろなメソッドがあり、使い分けが難しいことが多いです。
地道に自分でコードを書いて一歩ずつ覚えていきましょう!

LINEで送る
Pocket

ITエンジニアへ転職したい方におすすめ

自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

侍ワークスは、独自案件を多く掲載しているだけでなく、

・応募から就業まで一貫したサポート

・就業後もアフターフォロー

といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

書いた人

ババシュンスケ

ババシュンスケ

こんにちは!
今年大学を飛び出し、フリーランスエンジニアとして働いています、ババです!

エンジニアはしんどい仕事と思われていますが、実はそんなにしんどくなくて、お金ももらえて、社会のためになる素晴らしい仕事というのを伝えるために、侍で業務委託として働いています!!

フリーランスの日常やら書いているブログやってます=>http://www.babashun.net/