Blog Article
Ruby 基礎 ~ 真偽値・条件分岐・演算子について ~

はじめに
Ruby のプログラムでは、条件によって処理を変えたり、複数の条件を組み合わせたりする場面が多くあります。その基本となるのが、真偽値、条件分岐、そして演算子です。今回は、それぞれの役割と使い方を整理します。
参考リンク
真偽値とは
真偽値(Boolean)とは、条件が成立しているかどうかを表す値です。Ruby では true と false が真偽値として使われます。例えば、5 > 3 のような比較をすると、その結果として true が返されます。一方、5 < 3 では false が返されます。条件分岐では、このような真偽値を利用して、どの処理を実行するかを決めます。
また、Ruby では nil も条件式の中では偽として扱われます。ただし、nil 自体は false ではなく、nil という独立した値です。Ruby では nil と false 以外の値は真として扱われるため、空文字列 "" や数値の 0 も真として評価されます。
puts true
#=> true
puts false
#=> false
puts nil
#=> nil例えば、次のような条件式では比較結果である true または false を使って処理を分岐できます。
temperature = 30
if temperature > 25
puts "It's hot outside!"
else
puts "It's not too hot."
endこの場合、temperature > 25 が true になるため、if の中にある処理が実行されます。
条件分岐
条件分岐とは、指定した条件に応じて実行する処理を変える仕組みです。例えば、「年齢が 18 歳以上なら成人として扱う」「それ未満なら別の処理をする」といった処理を実装できます。Ruby では主に if、elsif、else、unless などを使って条件分岐を記述します。
条件分岐を理解すると、単に上から順番に処理を実行するだけではなく、状況に応じて処理の流れを変えるプログラムを書けるようになります。
if 文
if は、指定した条件が真の場合に処理を実行します。
age = 18
if age >= 18
puts "You are an adult."
else
puts "You are not an adult."
endこの例では、age >= 18 が true なら if の処理が実行され、false なら else の処理が実行されます。
複数の条件を順番に判定したい場合は、elsif を使用できます。
score = 85
if score >= 90
puts "Excellent!"
elsif score >= 70
puts "Good job!"
else
puts "Keep trying!"
endこの例では、最初に score >= 90 を判定し、それが偽なら score >= 70 を判定します。どちらも偽だった場合は else が実行されます。
unless 文
unless は、指定した条件が偽の場合に処理を実行します。if と反対の条件を表現したい場合に利用できます。
age = 16
unless age >= 18
puts "You are not an adult."
endこの例では age >= 18 が false なので、unless の中の処理が実行されます。
ただし、条件が複雑になると unless は読みづらくなることがあります。そのため、単純に「この条件ではない場合」という処理を表現したいときに使うと理解しやすくなります。
三項演算子
三項演算子は、条件によって 2 つの値のどちらを使うか決めたい場合に便利です。基本的な構文は 条件 ? 真の場合 : 偽の場合 です。
age = 20
message = age >= 18 ? "Adult" : "Minor"
puts message
#=> Adultこの例では age >= 18 が真なので、"Adult" が message に代入されます。
処理が短く単純な場合には便利ですが、条件や処理が複雑になる場合は if を使ったほうが読みやすくなります。
比較演算子
比較演算子は、2 つの値を比較するために使用します。比較した結果として true または false が返されるため、if などの条件分岐と組み合わせて使うことができます。
演算子 | 説明 | 例 |
|---|---|---|
| 等しい |
|
| 等しくない |
|
| より大きい |
|
| より小さい |
|
| 以上 |
|
| 以下 |
|
例えば、次のコードでは a が b より小さいかどうかを比較しています。
a = 10
b = 20
if a < b
puts "a is less than b"
end10 < 20 は true なので、if の中にある処理が実行されます。
論理演算子
論理演算子は、複数の条件を組み合わせたり、条件の真偽を反転したりするときに使用します。代表的なものとして &&、||、! があります。
&& は「かつ」を表し、左右の条件がどちらも真であることを確認するときに使用します。一方、|| は「または」を表し、どちらか一方が真であれば条件を満たします。! は真偽を反転させるために使います。
演算子 | 説明 | 例 |
|---|---|---|
| 左右の条件がともに真 |
|
` | ` | |
| 真偽を反転 |
|
例えば、年齢と性別の両方を条件にする場合は、&& を使えます。
age = 25
gender = "male"
if age >= 18 && gender == "male"
puts "You are an adult male."
endこの例では、age >= 18 と gender == "male" の両方が真の場合に処理が実行されます。
なお、Ruby の && や || は、必ず true または false だけを返すわけではありません。条件式だけでなく、値そのものを扱う場合には、オペランドの値を返すことがあります。そのため、単純な論理演算だけでなく、値の選択などにも利用されます。
代入演算子
代入演算子は、変数に値を代入するときに使用します。最も基本的なものが = です。
x = 10= は、右側の値を左側の変数に代入します。
また、Ruby では計算と代入を同時に行える複合代入演算子も利用できます。
演算子 | 説明 | 例 |
|---|---|---|
| 加算して代入 |
|
| 減算して代入 |
|
| 乗算して代入 |
|
| 除算して代入 |
|
| 剰余を求めて代入 |
|
例えば、x += 5 は x = x + 5 と同じような意味で使用できます。
x = 10
x += 5
puts x
#=> 15このような複合代入演算子を使うことで、変数の値を更新する処理を簡潔に記述できます。
演算子の優先順位
複数の演算子を組み合わせる場合は、どの演算が先に評価されるかにも注意が必要です。例えば、算術演算では一般的に乗算や除算が加算や減算より先に評価されます。
result = 2 + 3 * 4
puts result
#=> 14この場合、3 * 4 が先に計算され、その結果に 2 が加算されるため、結果は 14 になります。
計算の順番を明確にしたい場合は、括弧を使用できます。
result = (2 + 3) * 4
puts result
#=> 20
このように、(2 + 3) を括弧で囲むことで、その部分を先に計算できます。
演算子が複数登場するコードでは、優先順位に頼るだけでなく、括弧を使って意図を明確にすると、コードを読む人にも処理の順番が伝わりやすくなります。
まとめ
Ruby の真偽値、条件分岐、演算子は、プログラムの処理を制御するための基本的な要素です。真偽値によって条件の成立・不成立を表し、その結果を if や unless などの条件分岐で利用します。また、比較演算子や論理演算子を組み合わせることで、より具体的な条件を作ることができます。
- 真偽値は
trueとfalseで表され、Ruby ではnilも条件式では偽として扱われます。 - 条件分岐には
if、elsif、else、unless、三項演算子などがあります。 - 比較演算子は値を比較し、
trueまたはfalseを返します。 - 論理演算子は複数の条件を組み合わせたり、真偽を反転したりするときに使います。
- 代入演算子には
=のほか、+=や-=などの複合代入演算子があります。 - 演算子の優先順位を理解すると、複数の演算を組み合わせた場合でも意図した処理を記述しやすくなります。