オーダーメイドコース
icon
icon

Rubyのインスタンス変数を使用例をもとに現役エンジニアが解説【初心者向け】

初心者向けにRubyのインスタンス変数について解説しています。これはインスタンスごとに固有の値を持った変数のことです。クラス変数との違いと使用例について見ていきましょう。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

Rubyのインスタンス変数について解説します。

 
そもそもRubyについてよく分からないという方は、Rubyとは何なのか解説した記事を読むとさらに理解が深まります。

なお本記事は、TechAcademyのオンラインブートキャンプRuby講座の内容をもとに紹介しています。

 

田島悠介

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

大石ゆかり

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

田島悠介

インスタンス変数について詳しく説明していくね!

大石ゆかり

お願いします!

 

インスタンス変数とは

今回はRubyのインスタンス変数について紹介していきたいと思います。

まず、似たような変数でクラス変数というのがありますが、ここでインスタンス変数とクラス変数の違いについて説明していきましょう。

 

インスタンス変数とは「インスタンス毎に別々の値を保持することのできる変数」のことを言います。

これに対しクラス変数とは「同じクラスから生成されたインスタンス毎に共通する値」です。

 

つまり要約すると、インスタンス変数とクラス変数の決定的な違いは、インスタンス毎の値がそれぞれ、独自のものかどうかということになります。

また、インスタンス変数はオブジェクトの外から直接アクセスすることができないため、クラスにメソッドを定義する必要性があります。

その定義したメソッドを通じてインスタンス変数にアクセスするということとなります。

 

インスタンス変数の使用例

インスタンス変数とは上記でも説明した通り、同じインスタンス内部において共有できる変数のことです。

書き方は

 

@変数名

 

で必ず@からは始まります。

また、インスタンス変数はインスタンス毎の独自の値ですから、同じクラスから生成された、インスタンス間におけるインスタンス変数はお互いに影響しあわないということとなります。

従って、インスタンス毎に独自の値をもたせたい時などはインスタンス変数を用いると良いでしょう。

 

[PR] 未経験からWebエンジニアを目指す方法とは

実際に書いてみよう

それでは、実際に書いてみましょう。

以下のコードを見てください。

 

class Romancecar

  def initialize(name)
    @name = name
  end

  def start
    puts "特急ロマンスカー#{@name}はちょーカッコイイ!!"
  end
end

gse = Romancecar.new("GSE")
gse.start

 

ここで少し話はそれますがinitializeメソッドは、インスタンス生成の時に初期値として入れる値を定義したメソッドとなります。

従ってここでは、引数として渡されたnameが@nameへとインスタンス変数として渡されるということが定義されています。

その渡されたインスタンス変数を、def start で使用して定義しているということになります。

 

gse = Romancecar.new("GSE")

 

でgseというインスタンスを生成し、引数として”GSE”を渡しています。

 

gse.start

 

でメソッドを呼び出していますので、メソッドの定義の中の

 

puts "特急ロマンスカー#{@name}はちょーカッコイイ!!"

 

にある@nameというインスタンス変数には、def initialize で定義した “GSE”が入るので結果として

 

特急ロマンスカーGSEはちょーカッコイイ!!

 

と表示されることとなるのです。

ここでもおわかりのように、使用されているインスタンス変数の値はこのgseというインスタンス独自のものとなることも確認できると思います。

ご参考になれば幸いです。

 

筆者プロフィール

町田 耕

学生時代は会計学専攻。塾講師勤務を経て、企業のCFOとして会社経営に携わる。

会社経営から一線を退いた後、インフラエンジニアの妻の勧めでプログラミングを

独学で始め、プログラミングセミナーなど転々としながら、開発案件に携わるようになる。

現在、フリーランスとして活動しながらテックアカデミーのメンターも勤めている。

 

大石ゆかり

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

田島悠介

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

大石ゆかり

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

 

TechAcademyでは、初心者でもRuby on Railsを使ったプログラミングを習得できるオンラインブートキャンプRuby講座を開催しています。

挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。