Rubyのmodule(モジュール)の使い方を現役エンジニアが解説【初心者向け】

初心者向けにRubyのmodule(モジュール)の使い方について現役エンジニアが解説しています。モジュールはクラスと同じように定数やメソッドをまとめることが出来る他、gemをまとめて名前空間とすることが出来ます。複数のクラスなどを1つのモジュール名で扱うことが出来ます。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

Rubyのmodule(モジュール)の使い方について解説します。

Rubyについてそもそもよく分からないという方は、Rubyとは何なのか解説した記事をまずご覧ください。

 

なお本記事は、TechAcademyのWebアプリケーションオンラインブートキャンプの内容をもとに紹介しています。
 

田島悠介

今回は、Rubyに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

Rubyのmodule(モジュール)の使い方について詳しく説明していくね!

大石ゆかり

お願いします!

 

module(モジュール)とは

モジュールはRubyの特徴的な機能の1つです。
クラスがデータと処理をひとつにまとめたものであるのに対し、モジュールは処理のみをまとめたものになります。

この機能によってより柔軟にコードを書けます。

 

module(モジュール)とクラスの相違

モジュールとクラスは主に以下の2点で違います。

  • モジュールはインスタンスを持てない
  • モジュールは継承できない

様々な目的で使用されますが、Mix-inで機能を提供する、名前空間(メソッドやクラス、定数の名前を管理する単位)を提供するといった目的で使用されます。

 

[PR] Rubyのプログラミングで挫折しない学習方法を動画で公開中

module(モジュール)の使い方

今回は代表的な使い方であるMix-inについて紹介します。

Mix-inは、似たような機能を持っているが違う種類のクラスに対して共有のメソッドを提供したい場合などに使用します。

使い方は以下の通りです。
 

    # モジュール名は大文字で書く
    module MyModule
        # 共有したい処理
    end

    class MyClass1
        # includeでMyModuleの処理が使える
        include MyModule
        # 固有の処理
    end

    class MyClass2
        include MyModule
        # 固有の処理
    end

 

実際に書いてみよう

それでは実際に書いてみましょう。
以下のようにモジュールを書いて、クラスにMix-inしてみましょう。
 

    module CalculateMod

        def add(x,y)
            x + y
        end

    end


    class Test1
        include CalculateMod

        def multi(x,y)
            x * y
        end
    end

    class Test2
        include CalculateMod

        def div(x,y)
            x / y
        end
    end

    test1 = Test1.new
    test2 = Test2.new
    puts test1.add(1,2)
    puts test2.add(10,1)
    puts test1.multi(2,3)
    puts test2.div(10,2)

 

実行結果は以下の通りです。

3
11
6
5

以上でモジュールの解説を終わります。

モジュールはコードを読みやすくして、再利用可能にしてくれます。
 

監修してくれたメンター

メンター金成さん

フリーランスエンジニア。
Railsの案件を中心に、様々なアプリケーションを開発してます。

使える言語は、ruby python go 。最近はgoにハマってます。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

TechAcademyでは初心者でも最短4週間でエンジニアになれるRuby on Railsオンラインブートキャンプを開催しています。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間でオリジナルWebサービスを開発することが可能です。

また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。