Rubyのaliasとalias_methodでメソッドに別名を付ける方法【初心者向け】

初心者向けにRubyでaliasとalias_methodを使う方法について解説しています。これらは既存のメソッドに別名をつけるものです。それぞれの違いも含めて学習していきましょう。

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

Rubyのaliasとalias_methodの使い方と2つの違いについて説明します。

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

 

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

 

田島悠介

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

大石ゆかり

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

田島悠介

aliasとalias_methodの使い方について詳しく説明していくね!

大石ゆかり

お願いします!

 

aliasとalias_methodの違いとは

どちらも既存のメソッドに対して別名をつけることができるものですが、下記の点が違いがあります。

alias alias_method
グローバル変数に別名をつける 可能 不可能
メソッド名に文字列が使える 不可能 可能
キーワードである Yes No
メソッドである No Yes
オーバーライドできる 不可能 可能

これらの違いを考慮して、それぞれ適した使い分けをする必要があります。

alias_methodメソッドで別名を付ける場合、元のメソッドに対してremove_methodやundef_methodを適用することで元にメソッドを呼べないようにすることもできます。

 

aliasとalias_methodの書き方

aliasの書き方

alias 新メソッド名 旧メソッド名
alias 新グローバル変数名 旧グローバル変数名

 

alias_methodの書き方

alias_method 新メソッド名, 旧メソッド名

 

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

実際に書いてみよう

ソースコード

def first_method
  p "this is first_method"
end

alias second_method first_method

second_method # => "this is first_method"
# second_methodはfirst_methodのaliasになっているため、first_methodが実行されます

Class AliasMethodTest
  def first_method
    p "this is first_method"
  end

  alias_method :second_method, :first_method
end

AliasMethodTest.new.second_method # => "this is first_method"
# second_methodはfirst_methodのaliasになっているため、first_methodが実行されます

以下のバージョンでサンプルコードを動かしています。

$ ruby -v
ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-linux]

 

回答してくれたメンター

阿部祐也

職種: エンジニア普段の業務: リモートワークで勤務しながら、自社・受託サービスの開発に従事
Ruby on Rails, Node.js, TypeScript, React, AWSなどを利用したWeb系のシステムの開発を主に担当開発実績: ソーシャルゲーム、ツール系アプリ、広告システム、ヘルスケア系アプリのプロジェクトに参加しており、PHP, Ruby on Rails, Objective-C, Swiftでの開発を担当その他: リモートワークを活かして毎日愛猫と一緒にコードを書いています。

 

大石ゆかり

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

田島悠介

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

大石ゆかり

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

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

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

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