今回はクラス変数とインスタンス変数の違いについてまとめてみました。クラスとインスタンス、クラスメソッドとインスタンスメソッドなど似たような用語がたくさん出てきていますが、1つ1つ順番に理解していきましょう。ようなコードを設定しました。具体的には、Reviewクラスにインスタンスメソッド(write_reviewとshow_review)を2つ定義しています。endendよし\n(バックスラッシュ+n)は改行を表しているよ!では次に、このインスタンスメソッドを呼び出す記述を追記しましょう。show_reviewの呼び出しするとどうでしょうか。タイトル・ジャンル・感想は入力できるものの、それらの情報が表示されていませんね。言い換えると、write_reviewメソッドの呼び出しは成功していますが、show_reviewの呼び出しに失敗していると言えます。その原因は何でしょうか?答えはスコープです。スコープとは、メソッドの中で定義した変数はメソッドの中でしか使えず、メソッドの外で定義した変数はメソッドの中では使えないというものです。スコープについてはこちらの記事でも解説しています。https://techtechmedia.com/argument-ruby/この問題を解決してくれるのがインスタンス変数です。インスタンス変数インスタンス変数とは、クラスの中のどのインスタンスメソッドでも使用可能にするものです。言い換えると、インスタンス変数のスコープは、そのクラスの全てのインスタンスメソッドです。定義方法クラス内のメソッドの中で、変数名の始めに@(アットマークを1つ)をつけて定義します。先ほどの例題で見ていきましょう。show_reviewの呼び出しこのままだと、インスタンスメソッド(write_review)で入力された情報はスコープの範囲外のため、別のインスタンスメソッド(show_review)に渡すことができません。そこで、以下のようにインスタンス変数を定義しましょう。show_reviewの呼び出しこうすることで、2つのインスタンスメソッド(write_reviewとshow_review)の結果が出力されましたね。よしインスタンスメソッド間のやり取りは、@が必要だと覚えておこう!クラス変数クラス変数とは、クラス全体で使用できる変数です。クラス内であればどこでも使えるので、クラスメソッド・インスタンスメソッドの両方でも使うことができます。定義方法クラス変数は、変数名の始めに@@(アットマークを2つ)をつけて定義します。値end使用例それでは、例を見ていきましょう。今回はレビュー数を返す「get_review_countメソッド」を定義します。Review.get_review_count)でレビュー数が表示されるようになります。今回の記述では、レビュー数は0から1にしか変わりません。今回はクラス変数とインスタンス変数の違いについてまとめました。yoshi19941117TechTechMedia【初心者向け】Ruby学習者が必ずつまずく「引数」について簡単にまとめて...【Ruby基礎】基本中の基本!メソッドの定義方法と使い方をまとめてみた!Railsエンジニアちばよしはる銀座にあるヘルステック企業のRailsエンジニア。初心者から中級者向けに記事を更新しています。お酒とカレーと競馬が好き。TechTechMedia。