【Ruby】if文(if elsif else end)の基本的な使い方を分かりやすく解説します!

今回は、Ruby初心者の方々に向けて、if文の基本的な使い方をご紹介していこうと思います。

「まだ勉強を始めたばかりでif文の使い方がいまいち分からない」という方も、この記事を読めばif文の使い方をバッチリ理解していただけると思います。

初心者の方向けに分かりやすく簡潔にご説明していきますので、ぜひ最後まで読んでみてくださいね。

なお、Rubyの魅力や特徴については以下の記事で詳しく解説していますので、こちらもぜひご覧くださいね。

おすすめ記事

みなさんこんにちは! 今回の記事は、 悩みを抱えた人 ・Rubyってどんなプログラミング言語なの?・Rubyを勉強すると将来役に立つかな?・Rubyのおすすめの学習方法が知りたい! というお悩みを解決する記事にな[…]

Rubyとは?その特徴や将来性、おすすめの学習方法まで網羅的にご紹介します

if文の基本的な使い方

if文は、「○○の条件に当てはまったら、××の処理を行う」という動きを実装したい場合に使用します。

英語で “if” という単語の意味が「もし○○なら…」という意味になりますので、直感的に使用できるかと思います。

単体の条件分岐を設定する場合

if文の使い方はとても簡単で、以下のような構文で実装します。

if 条件式
  条件式に当てはまった場合の処理
end

文字だけで見ていても分かりづらいと思いますので、実際にif文を使ってみましょう。

irb(main):001:0> price = 98
irb(main):002:1* if price <= 100
irb(main):003:1*   puts "100円以下の商品です。"
irb(main):004:0> end

=> 100円以下の商品です。

こちらを例として挙げると、price <= 100が「priceが100以下である」という条件で、puts "100円以下の商品です。"が「『100円以下の商品です。』と表示する」という処理になります。

この場合、priceが98で、条件式に当てはまるため、「『100円以下の商品です。』と表示する」という処理が実行されているわけですね。

ワンライナーでも書いてみよう

また、「条件分岐がif文のみ(elsifelseがない)」でなおかつ「処理が1行でおさまる」場合には、条件式と処理をまとめて1行で書く(ワンライナー)ことも可能ですので、こちらも覚えておいてくださいね。

irb(main):001:0> price = 98
irb(main):002:0> puts "100円以下の商品です。" if price <= 100

=> 100円以下の商品です。

条件式で使える比較演算子まとめ

さて、上記の例では==を使用しましたが、それ以外にも条件式で使用できる演算子は多く存在しています。

よく使用するものを以下にまとめていますので、こちらも一度目を通しておいてくださいね。

a == ba と b が等しい
a != ba と b が等しくない
a > ba が b より大きい
a < ba が b より小さい
a >= ba が b 以上
a <= ba と b 以下

複数の条件分岐を設定する場合

ここまでは、単体の条件分岐(ifのみ)での実装方法をご紹介してきましたが、ここからは複数の条件分岐(elsifelseを使用)での実装方法をご紹介していきます。

最初の条件以外にも条件を設定したい場合には、elsifを使用します。

irb(main):001:0> price = 150
irb(main):002:1* if price <= 100
irb(main):003:1*   puts "100円以下の商品です。"
irb(main):004:1* elsif price <= 200
irb(main):005:1*   puts "200円以下の商品です。"
irb(main):006:0> end

=> 200円以下の商品です。

このように、最初の条件(if price <= 100)に当てはまらなかった場合、次の条件(elsif price <= 200)に進みます。

もちろん、最初の条件に当てはまった場合には、次の条件には進みません。

irb(main):001:0> price = 98
irb(main):002:1* if price <= 100
irb(main):003:1*   puts "100円以下の商品です。"
irb(main):004:1* elsif price <= 200
irb(main):005:1*   puts "200円以下の商品です。"
irb(main):006:0> end

=> 100円以下の商品です。

また、いずれの条件にも当てはまらなかった場合に実行したい処理がある場合には、elseを使用します。

irb(main):001:0> price = 250
irb(main):002:1* if price <= 100
irb(main):003:1*   puts "100円以下の商品です。"
irb(main):004:1* elsif price <= 200
irb(main):005:1*   puts "200円以下の商品です。"
irb(main):006:1* else
irb(main):007:1*   puts "高額商品です"
irb(main):008:0> end

=> 高額商品です。

こちらももちろん、ifelsifの条件に当てはまった場合には、else以下の処理には進みません。

unlessの使い方

これまでは、「もし○○なら…」という条件分岐を見てきましたが、その否定形「もし○○でなかったら…」という実装をしたい場合にはunlessを使用します。

# ifを使用する場合
irb(main):001:0> price = 200
irb(main):002:1* if price != 100
irb(main):003:1*   puts "100円の商品ではありません。"
irb(main):004:0> end

=> 100円の商品ではありません。

# unlessを使用する場合
irb(main):001:0> price = 200
irb(main):002:1* unless price == 100
irb(main):003:1*   puts "100円の商品ではありません。"
irb(main):004:0> end

=> 100円の商品ではありません。

また、if文と同様にelseと併用することも可能なのですが、elsifと併用することはできない(エラーが発生する)ので、その点だけご注意ください。

if文の応用的な使い方

さて、ここまでif文の基本的な使い方をご紹介してきましたが、ここからは少し応用的な使い方をご紹介していきますね。

これまでは一つの条件分岐に一つの条件(if price <= 100elsif price <= 200 など)を設定してきましたが、一つの条件分岐に複数の条件を設定する方法を見てきましょう。

複数の条件(AかつB)を設定する場合

Aという条件とBという条件を両方とも満たす必要がある場合、つまり「AかつB」という条件を設定したい場合には、and&&を使用します。

irb(main):001:0> price = 150
irb(main):001:0> name = "orange"
irb(main):002:1* if price == 150 &&(and) name == "orange"
irb(main):003:1*   puts "150円のオレンジです。"
irb(main):004:0> end

=> 150円のオレンジです。

上記では、「priceが150でnameがorange」の場合に「『150円のオレンジです。』と表示する」という処理を実装しています。

なお、どちらか一方でも条件に当てはまらない場合には、その条件式はfalseと判定され、直後の処理は実行されません

irb(main):001:0> price = 150
irb(main):002:0> name = "apple"
irb(main):003:1* if price == 150 &&(and) name == "orange"
irb(main):004:1*   puts "150円のオレンジです。"
irb(main):005:1* else
irb(main):006:1*   puts "150円のオレンジではありません。"
irb(main):007:0> end

=> 150円のオレンジではありません。

複数の条件(AまたはB)を設定する場合

Aという条件かBという条件のいずれかを満たしておけばよい場合、つまり「AまたはB」という条件を設定したい場合には、or||を使用します。

# 信号が青の場合
irb(main):001:0> signal_color = "green"
irb(main):003:1* if signal_color == "green" ||(or) "yellow"
irb(main):004:1*   puts "渡っても大丈夫です。"
irb(main):005:1* else
irb(main):006:1*   puts "止まってください。"
irb(main):007:0> end

=> 渡っても大丈夫です。

# 信号が黄の場合
irb(main):001:0> signal_color = "yellow"
irb(main):003:1* if signal_color == "green" ||(or) "yellow"
irb(main):004:1*   puts "渡っても大丈夫です。"
irb(main):005:1* else
irb(main):006:1*   puts "止まってください。"
irb(main):007:0> end

=> 渡っても大丈夫です。

# 信号が赤の場合
irb(main):001:0> signal_color = "red"
irb(main):003:1* if signal_color == "green" ||(or) "yellow"
irb(main):004:1*   puts "渡っても大丈夫です。"
irb(main):005:1* else
irb(main):006:1*   puts "止まってください。"
irb(main):007:0> end

=> 止まってください。

このように、signal_colorが “green” か “yellow” の場合にその結果がtrueとなり、その後の処理に進んでいることがお分かりいただけるかと思います。

三項演算子を使用する場合

毎回毎回if 〇〇 else XX endというのを書くのが面倒な場合、三項演算子を使用して1行にまとめることができます

irb(main):001:0> price = 150
irb(main):002:0> puts price <= 100 ? "100円以下の商品です。" :  "100円よりも高い商品です。"

=> 100円よりも高い商品です。

こちらを通常のif文で実装しようと思うと以下の通りになります。

irb(main):001:0> price = 150
irb(main):002:1* if price <= 100
irb(main):003:1*   puts "100円以下の商品です。"
irb(main):004:1* else
irb(main):005:1*   puts "100円よりも高い商品です。"
irb(main):006:0> end

=> 100円よりも高い商品です。

三項演算子を使うと、元々5行かかっていたものが1行で済むため、コードを書くのがとても楽になりますよね。

ただし、elsifを使用したif文を三項演算子に変換しようと思うと、以下のように少し見づらくなってしまいますので、時と場合によって使い分けるようにしましょうね
(※私は、複数の条件分岐が設定されている場合には、三項演算子は使用しません。)

# 通常の構文
irb(main):001:0> price = 250
irb(main):002:1* if price <= 100
irb(main):003:1*   puts "100円以下の商品です。"
irb(main):004:1* elsif price <= 200
irb(main):005:1*   puts "200円以下の商品です。"
irb(main):006:1* else
irb(main):007:1*   puts "高額商品です。"
irb(main):008:0> end

=> 高額商品です。

# 三項演算子を使用
irb(main):001:0> price = 250
irb(main):002:0> puts price <= 100 ? "100円以下の商品です。" : price <= 200 ? "200円以下の商品です。" : "高額商品です。"

=> 高額商品です。

お仕事の途中ですが、少し一休みして、転職独立について考えてみませんか🙌?

現役エンジニアが選ぶおすすめの転職エージェント11選【成功談・失敗談もあります】

レバテックフリーランスの評判ってどう?【現役エンジニアが徹底解説します】

MidWorks(ミッドワークス)の評判ってどう?【現役エンジニアが徹底解説します】

日々の業務に追われて自分を見失わないよう、
定期的にキャリアを振り返るようにしておきましょう🤲

最後に

さて、ここまで、if文の基本的な使い方についてご紹介してきましたがいかがでしたか?

それほど複雑なものではないため、一度マスターしてしまえばその後も特に困ることなく使い続けられるかと思います。

時には複雑な条件分岐を設定する必要も出てくるかもしれませんが、その基本は変わりませんので、この記事でご紹介した内容を思い出しながら、臆することなく取り組んでいってくださいね。

このブログを通じて少しでも「傍(はた)を楽(らく)にする」ことができていれば嬉しく思います。

最後まで読んで頂きありがとうございました。