変数はデータを一時的に保存しておくための「名前付きの箱」のようなものです。Rubyにはいくつかの種類の変数があり、名前の付け方(プレフィックス)によって変数のスコープ(有効範囲)が決まります。この記事ではRubyの変数の基本的な使い方と種類について詳しく解説します。
基本的な使い方
ローカル変数
ローカル変数はRubyで最もよく使う変数です。小文字またはアンダースコアで始まる名前を付けます。変数に値を代入するだけで宣言と初期化が同時に行われます。
Ruby
# 変数に値を代入
name = 'Ruby'
version = 3.2
is_fun = true
puts name
puts version
puts is_fun実行結果
Ruby
3.2
trueRubyは動的型付け言語なので、変数の型を事前に宣言する必要がありません。文字列、数値、真偽値など、どんな型の値でも自由に代入できます。また、同じ変数に異なる型の値を再代入することも可能です。
変数の再代入
一度値を代入した変数に、別の値を代入し直すことを「再代入」と呼びます。
Ruby
message = 'こんにちは'
puts message
message = 'さようなら'
puts message
# 数値を使った計算
count = 10
count = count + 5
puts count実行結果
こんにちは
さようなら
15変数の値は何度でも書き換えることができます。count = count + 5は現在のcountの値に5を足した結果をcountに再代入しています。
変数の種類
Rubyには用途に応じた4種類の変数があります。名前の先頭文字でどの種類かが決まります。
Ruby
# ローカル変数(小文字またはアンダースコアで始まる)
local_var = 'ローカル'
# インスタンス変数(@で始まる)
@instance_var = 'インスタンス'
# クラス変数(@@で始まる)
@@class_var = 'クラス'
# グローバル変数($で始まる)
$global_var = 'グローバル'
puts local_var
puts @instance_var
puts @@class_var
puts $global_var実行結果
ローカル
インスタンス
クラス
グローバルローカル変数のスコープ
ローカル変数は定義されたブロックやメソッドの中でのみ有効です。
Ruby
def greet
greeting = 'こんにちは' # このメソッド内でのみ有効
puts greeting
end
greet
# puts greeting # エラー!メソッドの外からはアクセスできない実行結果
こんにちはグローバル変数の使い方
グローバル変数は$で始まり、プログラムのどこからでもアクセスできます。
Ruby
$app_name = 'MyApp'
def show_app_name
puts "アプリ名: #{$app_name}"
end
show_app_name
$app_name = 'NewApp'
show_app_name実行結果
アプリ名: MyApp
アプリ名: NewApp変数の命名規則
Rubyではスネークケース(単語をアンダースコアで区切る)が標準的な命名規則です。
Ruby
# 良い例(スネークケース)
user_name = '太郎'
total_price = 1500
is_active = true
# 悪い例(キャメルケース - Rubyでは使わない)
# userName = '太郎'
# totalPrice = 1500
puts user_name
puts total_price
puts is_active実行結果
太郎
1500
true変数名の付け方のコツ
変数名は短すぎず、何が入っているかがわかる名前を付けましょう。xやtmpよりもuser_ageやtotal_countのように意味のある名前にすると、コードの可読性が大幅に向上します。
グローバル変数は極力避ける
グローバル変数($で始まる変数)はプログラムのどこからでも変更できるため、予期しないバグの原因になります。特別な理由がない限り、ローカル変数やインスタンス変数を使いましょう。
まとめ
- Rubyは動的型付け言語で、変数の型宣言は不要
- ローカル変数は小文字・アンダースコアで始まり、定義したスコープ内でのみ有効
- インスタンス変数(
@)、クラス変数(@@)、グローバル変数($)がある - 命名規則はスネークケース(
user_name)が標準 - グローバル変数は極力使わず、スコープの狭い変数を使うのがベストプラクティス