基礎

Rubyのif文入門|条件分岐の基本からelsif・elseまで徹底解説

if文はプログラムの流れを条件によって分岐させる最も基本的な制御構文です。「もし〜ならば」という条件判断をプログラムで表現でき、条件に応じて異なる処理を実行できます。Rubyのif文は直感的な構文で書けるため、初心者にも理解しやすいのが特徴です。

基本的な使い方

if文の基本構文

if文は条件が真(true)のときにブロック内の処理を実行します。

Ruby
age = 20

if age >= 18
  puts '成人です'
end
実行結果
成人です

ifの後に条件式を書き、endまでの間に実行したい処理を記述します。条件式が真であればブロック内の処理が実行され、偽であればスキップされます。Rubyでは括弧は省略可能です。

if-else文

elseを使うと、条件が偽のときに実行する処理を指定できます。

Ruby
age = 15

if age >= 18
  puts '成人です'
else
  puts '未成年です'
end
実行結果
未成年です

if-elsif-else文

3つ以上の条件分岐が必要な場合はelsifを使います。注意点として、Rubyではelseifelse ifではなくelsifです。

Ruby
score = 75

if score >= 90
  puts '評価: A(優秀)'
elsif score >= 80
  puts '評価: B(良好)'
elsif score >= 70
  puts '評価: C(普通)'
elsif score >= 60
  puts '評価: D(可)'
else
  puts '評価: F(不可)'
end
実行結果
評価: C(普通)

elsifは上から順に評価され、最初に真になった条件のブロックだけが実行されます。scoreが75の場合、score >= 90score >= 80は偽なのでスキップされ、score >= 70が真なので「評価: C」が出力されます。

比較演算子と論理演算子

if文の条件式では比較演算子と論理演算子を組み合わせて使います。

Ruby
# 比較演算子
puts 10 == 10   # 等しい
puts 10 != 5    # 等しくない
puts 10 > 5     # より大きい
puts 10 < 20    # より小さい
puts 10 >= 10   # 以上
puts 10 <= 20   # 以下
実行結果
true
true
true
true
true
true
Ruby
# 論理演算子を使った複合条件
age = 25
has_license = true

if age >= 18 && has_license
  puts '運転できます'
end

# ||(または)
day = '土曜日'
if day == '土曜日' || day == '日曜日'
  puts '休日です'
end

# !(否定)
is_holiday = false
if !is_holiday
  puts '仕事の日です'
end
実行結果
運転できます
休日です
仕事の日です

実践的な使い方

Ruby
# 料金計算システム
age = 12
is_member = true

if age < 6
  price = 0
  category = '幼児(無料)'
elsif age < 13
  price = 500
  category = '子供'
elsif age < 65
  price = 1000
  category = '大人'
else
  price = 700
  category = 'シニア'
end

# 会員割引
if is_member
  price = (price * 0.8).to_i
  puts "会員割引適用"
end

puts "区分: #{category}"
puts "料金: #{price}円"
実行結果
会員割引適用
区分: 子供
料金: 400円
Rubyにおける真偽値

Rubyではfalsenilだけが偽として扱われ、それ以外はすべて真です。0や空文字列''も真として扱われるので、他の言語から来た方は注意してください。

elsifのスペルに注意

Rubyではelsifと書きます。elseif(PHP)やelse if(JavaScript)ではないので注意してください。スペルミスするとエラーになります。

まとめ

  • if文で条件が真のときに処理を実行する
  • elseで条件が偽のときの処理を指定する
  • elsifで3つ以上の条件分岐を記述する(スペルに注意)
  • &&(かつ)、||(または)、!(否定)で複合条件を作る
  • Rubyではfalsenilだけが偽、それ以外はすべて真