{category}

Ruby - フック

included

インクルーデッド(メタプログラミング

意味 モジュールがincludeされた時のフック


includedとは?

includedは、モジュールが他のクラスやモジュールにincludeされた時に自動的に呼び出されるメソッドです。これを使うと、モジュールがincludeされた際に特定の処理を実行できます。

includedの具体的な使い方

モジュールのincludeフックを使用してクラスメソッドを追加する例

module Greeting
  def self.included(base)
    base.extend(ClassMethods)
  end

  module ClassMethods
    def greet
      puts "こんにちは、#{self}クラスです!"
    end
  end
end

class User
  include Greeting
end

User.greet

👇出力結果

こんにちは、Userクラスです!

この例では、Greetingモジュールのincludedフックを使用して、includeしたクラスにクラスメソッドgreetを自動的に追加しています。ClassMethodsモジュールをextendすることで、クラスメソッドとして追加されます。

モジュールのincludeフックを使用してインスタンス変数を初期化する例

module Initializable
  def self.included(base)
    base.class_eval do
      attr_accessor :initialized_at
      alias_method :original_initialize, :initialize
      define_method(:initialize) do |*args|
        @initialized_at = Time.now
        original_initialize(*args)
      end
    end
  end
end

class MyClass
  include Initializable
  def initialize(name)
    @name = name
  end
end

obj = MyClass.new("Ruby")
puts "初期化時刻: #{obj.initialized_at}"

👇出力結果

初期化時刻: 2023-06-12 10:30:45 +0900

この例では、Initializableモジュールのincludedフックを使用して、includeしたクラスのinitializeメソッドを拡張しています。オブジェクトが作成された時刻を自動的に記録するinitialized_at属性を追加しています。

includedに関するよくある質問

Q. includedメソッドの引数baseとは?
A. baseは、モジュールがincludeされたクラスまたはモジュールを指します。この引数を通じて、includeした側の情報にアクセスできます。
Q. includedはいつ呼び出される?
A. includedは、モジュールが他のクラスやモジュールにincludeされた瞬間に自動的に呼び出されます。
Q. includedの一般的な使用例は?
A. モジュールがincludeされた時に、追加のセットアップやメソッドの定義、クラスへの機能追加などを行うために使用されます。例えば、クラスメソッドの自動追加などに利用できます。

includedが学べる書籍の紹介

「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、Rubyのincludedやmethod_added、eval、inherited、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。

よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。

1日5分の暗記でプログラミンが身に付く!プログラミング単語帳 公式ストアで発売中!

HTML編、CSS編、JavaScript編、PHP編、Ruby編、その他単語編の6シリーズ分が公式ストアにて販売中です。気になった方はぜひ購入してみてください。


Rubyを学べる「プログラミング単語帳」アプリ

プログラミング単語帳がアプリになりました!Rubyはもちろん、10種類のプログラミング言語の中から、よく使われる単語をスマホで学習できます。

収録単語は2,000単語以上!
現在は、HTML、CSS、JavaScirpt、PHP、Laravel、Ruby、Python、MySQL、Linux、など10カテゴリーの単語帳が1つのアプリに収録されています。

いつでも、どこでも、隙間時間を有効活用して、プログラミングを効率的に学べるので、ぜひダウンロードしてみてください。

2024年7月アップデート情報:「Laravel」カテゴリーが追加されましました!

2024年8月アップデート情報:「MySQL」「Linux」カテゴリーが追加されましました!


関連するそのほかの単語

method_added

メソッドが追加された時のフック

種類: フック

eval

文字列をRubyコードとして実行

種類: eval関連

inherited

クラスが継承された時のフック

種類: フック

*

文字列を指定回数繰り返す

種類: 文字列繰り返し

Pathname

ファイルパスを扱うクラス

種類: ファイルシステム操作