本日の勉強時間 3H
privateメソッドは、Rubyのクラスの中で定義されるメソッドの一種で、クラスの外からは直接呼び出せないメソッドです。
基本のイメージ
たとえば、クラスを会社にたとえると、privateメソッドは「社内だけで使う機密書類」みたいなものです。他のクラスや外部から直接見ることができないようにすることで、クラスの内部でだけ安全に処理を進めることができます。
privateメソッドの目的
クラスの外からアクセスされないようにする:クラスの内部でだけ使うメソッドにしておくことで、誤って外から変更されないように守ります。
クラス内部の動作を隠す:クラスが何をしているかを隠すことができ、使う側にとってシンプルなAPI(使いやすいインターフェイス)だけを公開できます。
privateメソッドの使い方
以下の例で、privateメソッドを定義する方法を見てみましょう:
class User
def initialize(name)
@name = name
end
def greeting
"Hello, #{name_with_prefix}"
end
private
def name_with_prefix
"Mr./Ms. #{@name}"
end
end
user = User.new("Alice")
puts user.greeting #=> "Hello, Mr./Ms. Alice"
puts user.name_with_prefix #=> エラーが出る
この例の説明
name_with_prefixメソッド:privateメソッドです。greetingの中でだけ使われており、外から直接呼び出せません。
greetingメソッド:publicメソッドなので、外部から呼び出せます。
もしname_with_prefixを直接使おうとすると、エラーが出てしまいます。これはprivateメソッドだからであり、あくまでUserクラスの内部で使うためのメソッドだとわかります。
なぜprivateメソッドを使うか?
クラスの設計をシンプルにし、不要なメソッドを隠すことで、エラーを防ぎ、クラスの使い方をわかりやすくします。