1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Ruby】インスタンスメソッドとクラスメソッドの使いわけ

Posted at

はじめに

こんにちは、絶賛Ruby勉強中のものです。
本日はRubyのインスタンスメソッドとクラスメソッドの使い分けについて説明していきたいと思います
Rubyの経験がまだ浅い私は、クラスメソッドの使い時をあまり理解しておらずインスタンスメソッドで代用できるのでは?と考えておりました。
そこで本日はインスタンスメソッドとクラスメソッドの使い分けについて記事を書いていこうと思います。
なお、インスタンスメソッドとクラスメソッドの説明については、記事を書いたので詳しく見たい方は確認していただければ幸いです。

インスタンスメソッド

まずは、フルネームと年齢を取得するUserクラスとuser1,user2インスタンスについてみていきましょう。

instance.rb
class User
  attr_accessor :first_name, :last_name, :age
  
  def initialize(first_name, last_name, age)
    @first_name = first_name
    @last_name = last_name
    @age = age
  end
  
  # インスタンスメソッド
  def full_name
    "#{@first_name} #{@last_name}"
  end
end

# インスタンスメソッドの利用例
user1 = User.new("Taro", "Yamada", 25)
user2 = User.new("Hanako", "Tanaka", 30)

puts user1.full_name  # => "Taro Yamada"
puts user2.full_name  # => "Hanako Tanaka"

上記のコードでは、full_nameメソッドを使ってUserのインスタンスであるuser1からフルネームを取得しています。user2も同様です。
このように、インスタンスメソッドはインスタンスごとに異なる値を持つデータに対して処理を行うため、個別のユーザー情報を扱いたいときに便利です。
ほかにも鈴木さんとか山本さんとか様々な方の名前をこのクラスで作っていくと思いますが、人数を何人か数えたい場面が出てくると思います。

クラスメソッド

そこでクラスメソッドを使うと比較的楽に処理できます。

class.rb
class User
  attr_accessor :first_name, :last_name
  @@user_count = 0  # ユーザーの総数を格納するクラス変数

  def initialize(first_name, last_name)
    @first_name = first_name
    @last_name = last_name
    @@user_count += 1  # インスタンスが生成されるたびにカウント
  end

  def full_name
    "#{@first_name} #{@last_name}"
  end

  # クラスメソッド
  def self.total_users
    @@user_count
  end
end

# 利用例
user1 = User.new("Taro", "Yamada")
user2 = User.new("Hanako", "Tanaka")

puts User.total_users  # => 2

@@user_countというクラス変数で、Userインスタンスが作成されるたびにユーザー数をカウントしています。
クラスメソッド self.total_users を使うことで、Userクラスにどれだけのユーザーが登録されているかを確認できます。
このように、クラスに関する全体的な情報(今回はユーザーの総数)を管理したい場合にクラスメソッドを使うと便利です。

まとめ

上記の例を踏まえて、それぞれどのような場面で使用するかまとめていきます。

  • インスタンスメソッドは個別のデータを処理するため、インスタンスごとの値を操作したい場合に使います。
  • クラスメソッドはクラス全体に関連する情報を操作するため、インスタンスの生成が不要な処理や、複数のインスタンスを横断するデータを扱いたいときに使います。
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?