どうも!
インストラクターのババです!
みなさんはモジュールを使っていますか?
僕はrubyを勉強したての時、モジュールって何かややこしいイメージを持っていて全然使わないでいました。
でもモジュールって以外と簡単に使えるんです。
今回はそんなモジュールを使うためのメソッド
「includeメソッド」「extendメソッド」「moduel_functionメソッド」について解説していきたいと思います!
モジュールの使い方に少しでも不安を感じている方、Rubyの世界をもっと深く理解したいと考えている方もいらっしゃるでしょう。そんな時には、新しいスキルを身につけるための環境やサポートを活用することが大切です。特に、今注目されている生成AIとWeb制作のスキルを組み合わせることで、将来的な収入源を確保することも可能です。
実践的なスキルを身につけることで、机上の空論ではなく、すぐに使えるノウハウを得ることができます。AIの変化に対応し、未来を切り拓くための具体的な方法を学んでみませんか?
興味がある方は、ぜひセミナーの詳細を確認して、自分に合った学び方を見つけてみませんか?
はじめに

よく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

基本的にモジュールはクラスに読み込ませて使うものですが、クラスに読み込ませなくても使う方法があります。
それが「module_functionメソッド」です。
module Dog
def name
"ポチ"
end
module_function :name
end
p Dog.name
module_functionメソッドを使用することで、このように普通にメソッドを使用できていることがわかります。
まとめ
今回はmoduleの使い方について「includeメソッド」「extendメソッド」「module_functionメソッド」の三つを解説していきました。
Rubyは書き方が自由な分、いろいろなメソッドがあり、使い分けが難しいことが多いです。
地道に自分でコードを書いて一歩ずつ覚えていきましょう!






