スライドショー

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

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

ババシュンスケ

ババシュンスケ

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

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

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

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説