Rubyにおける変数の基本的な使い方

プログラムの中で値を保管するために利用するのが変数です。ここでは Ruby における変数の基本的な使い方について解説します。

(2022 年 10 月 13 日公開 / 2022 年 10 月 27 日更新)

変数に値を代入する

プログラミング言語によっては変数に値そのものを格納する場合もありますが、 Ruby の場合は変数はオブジェクトが格納されている場所を格納しています。変数には値が格納されるわけではないので変数そのものにはデータ型はありません。

変数にオブジェクトが保管されている場所を代入するには次のように行います。

変数名 = オブジェクト

= は代入演算子と呼ばれ右辺のオブジェクトを左辺の変数に代入します。これを変数にオブジェクトを代入するといいます。また右辺に式が記述されていれば式が評価された結果のオブジェクトが右辺に代入されます。先ほども記載したようにオブジェクトそのものが変数に保管されるわけではなく、オブジェクトが保管されている場所が変数に格納されます。

例えば次のように使用します。

num = 10
str = "Hello"

変数 num には 10 という整数のオブジェクトが保管されている場所が格納され、変数 str には "Hello" という文字列オブジェクトが保管されている場所が格納されました。

変数の宣言と参照

Ruby では変数を利用するときにあらかじめ宣言などは必要ありません。変数に対してオブジェクトを代入する記述を行うと、変数を宣言したことになります。変数が宣言されれば、それ以降で変数に代入されたオブジェクトを参照することが出来ます。

例えば次の例では変数に値を代入したあとで、変数の値を参照して画面に出力しています。

msg = "Hello"
puts(msg)

変数 msg が保管していた場所にあるオブジェクトの値を参照し、画面に出力します。

変数の宣言と参照(1)

次の例では演算をした結果の数値オブジェクトを変数に代入し、そのあとで変数の値を参照して画面に出力しています。

num = 5 * 4 + 3
puts(num)

変数の宣言と参照(2)

このように一度変数にオブジェクトを代入したあとであれば、変数をプログラムの中で使用することができます。

宣言されていない変数を参照してはいけません。例えば次の例を見てください。

puts(msg)

変数 msg にはまだオブジェクトが代入されていないにも関わらずプログラムの中で参照しようとしました。このプログラムを実行すると undefined local variable or method というエラーが表示されます。

変数の宣言と参照(3)

※ プログラムの中で例えば msg とだけ記述した場合、変数の msg を参照しようとしているか、または引数のないメソッド msg を呼び出しているかと判断されます。変数 msg が宣言されておらず、また msg という名前のメソッドもないため、先ほどの例ではエラーとなりました。

変数名の付け方

変数はプログラムの中で複数利用することができます。一つ一つの変数を区別するために変数には変数名を付けます。変数にはいくつか種類がありますが、ローカル変数と呼ばれる変数に関しては変数名を付ける場合は次のルールに従ってください。

1) 1文字目は英小文字かアンダーバー(_)
2) 2文字目以降は英数文字、アンダーバー
3) 予約語は使用できない

1 文字目はアルファベットの小文字かアンダーバーしか使用できませんが、 2 文字目以降はアルファベットの大文字も使用可能です。

例として次のような変数名が使用できます。

num
nameProduct
_number
background_color
sales2022

Ruby には予約語としては次のようなものがあります。

BEGIN    class    ensure   nil      self     when
END      def      false    not      super    while
alias    defined? for      or       then     yield
and      do       if       redo     true     __LINE__
begin    else     in       rescue   undef    __FILE__
break    elsif    module   retry    unless   __ENCODING__
case     end      next     return   until

これらは既に別の用途が割り当てられた識別子ですので、変数名としては使用できません。

ちなみに Ruby の変数には、ローカル変数のほかにインスタンス変数、クラス変数、グローバル変数、定数などがあります。それぞれの見分け方は次の通りです。

ローカル変数 : 変数名が小文字または _ で始まる (例:msg)
インスタンス変数 : 変数名が @ で始まる (例:@msg)
クラス変数 : 変数名が @@ で始まる (例:@@msg)
グローバル変数 : 変数名が $ で始まる (例:$msg)
定数 : アルファベット大文字([A-Z]) で始まる(例:MSG) 

それぞれの変数の使い方についてはあらためて解説します。

変数に別のオブジェクトを代入する

変数に初めてオブジェクトを代入すると変数が宣言されたことになりますが、宣言された変数に対してあとから別のオブジェクトを代入することができます。

次の例を見てください。

msg = "Hello"
puts(msg)

msg = "Bye"
puts(msg)

変数に別のオブジェクトを代入する(1)

変数 msg に最初は "Hello" という文字列オブジェクトの場所を代入していますが、そのあとで別の "Bye" という文字列オブジェクトの場所を代入しています。このように一度宣言した変数にあとから別のオブジェクトの場所を代入することができます。

なお Ruby では変数にはデータ型がありませんので、最初に宣言したオブジェクトとは別の種類のオブジェクトを代入することもできます。

v = 10 + 5
puts(v)

v = "Hello"
puts(v)

変数に別のオブジェクトを代入する(2)

特にエラーとはなりませんが、色々な種類のオブジェクトを同じ変数に代入するのはミスの原因にもなるのであまりおすすめではありません。

-- --

Ruby における変数の基本的な使い方について解説しました。

( Written by Tatsuo Ikura )

広告
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。