Ruby if文の使い方

この記事のポイント

Rubyのif文は、プログラムの流れを条件によって制御するための基本的な構文です。

この記事を読むと、次のようなことが身に付きます。

  • 「もし〜なら」という条件分岐の基本的な書き方がわかる
  • 複数の条件を組み合わせたコードを書くことができる
  • プログラムの流れを自由自在に制御できることを知る
  • 実際の開発でよく使われる条件分岐のパターンがわかる
  • 真偽値に応じて、別々の処理ができることを知る

if文はRubyを学ぶ上で絶対に覚えておきたい重要な機能です。

「条件分岐」という考え方をマスターして、より柔軟なプログラムを作れるようになりましょう。

目次

Rubyのif文とは?

Rubyのif文は、「もし〜なら」という条件に応じてプログラムの動作を変える仕組みです。

日常生活でも私たちは「もし雨が降っているなら傘を持つ」「もし時間があるなら映画を見る」といった判断をしていますよね。

プログラミングでも同じように、状況に応じて違う処理を行いたい場面がたくさんあります。

例えば、点数によって合否を判定したり、年齢によって利用できる機能を変えたりできます。

Rubyのif文は書き方がとてもシンプルで、初心者の方でも理解しやすいのが特徴です。

また、簡単な条件から複雑な条件まで、幅広い場面で使うことができます。

elsif(他の言語ではelif、else ifなどと表記)やelseと組み合わせることで、複数の条件に基づいた分岐処理もできるということも覚えておきましょう。

【関連】
Rubyをもっと詳しく学ぶならpaizaラーニング

if文の基本構文

Rubyのif文の書き方はとてもシンプルです。
基本の形は、次のようになります。

if 条件 # 条件が当てはまる場合に実行される処理 end

「if」の後に条件を書いて、その下に実行したい処理を記述します。最後に「end」と書いて終了です。

条件が当てはまらない場合の処理も書きたいときは、「else」を使います。

if 条件 # 条件が当てはまる場合の処理 else # 条件が当てはまらない場合の処理 end

さらに、他の条件をチェックしたいときは「elsif」を使います。

if 条件1 # 条件1が当てはまる場合の処理 elsif 条件2 # 条件1は当てはまらないが、条件2が当てはまる場合の処理 else # どの条件も当てはまらない場合の処理 end

また、Rubyでは下記のように一行で書くこともできます。処理が短い場合に便利です。

puts "暑い日です" if temperature > 30

ちなみに、Rubyではfalse(偽)と nil(何もない)以外のすべての値が「条件が当てはまる」と判断されます。

もしかすると、他の言語に慣れた人だと「0は偽じゃないの?」と驚くことがあるかもしれませんね。

「明確に偽を表すもの以外は全部真」という性質は、他のプログラミング言語とは少し違う特徴なので、覚えておきましょう。

実用例

Rubyのif文は日常的なプログラミングで最もよく使う機能の一つです。

ここからは実際のコード例を通して、if文がどのように活用できるかを見ていきましょう。

Rubyを始めたばかりの方でもわかるように、動物たちの例を用いて一つずつ丁寧に説明します。

すべてのコード例は実際に動かすことができるので、ぜひ試してみてください。

基本的な条件分岐

まずは一番シンプルなif文から始めましょう。条件が当てはまる場合だけ処理を実行する例です。

「条件分岐」とは、条件によってプログラムの動作が分かれることです。動物の名前をチェックして、該当する場合だけメッセージを表示してみます。

animal = "イヌ" if animal == "イヌ" puts "イヌは忠実な動物です" end animal = "ネコ" if animal == "イヌ" puts "イヌは忠実な動物です" # この行は実行されない end

実行結果:

イヌは忠実な動物です

最初のケースではanimalが「イヌ」なので、条件(animal == "イヌ")が当てはまります。
そのため「イヌは忠実な動物です」と表示されます。

2つ目のケースでは、animalが「ネコ」なので条件が当てはまらず、何も表示されません。

if-else文による二者択一の分岐

条件が当てはまる場合と当てはまらない場合で、違う処理をしたいときは if-else文を使います。

動物が肉食動物かどうかを判定して、それぞれ違うメッセージを表示してみましょう。

animal = "トラ" if animal == "トラ" || animal == "ライオン" puts "#{animal}は肉食動物です" else puts "#{animal}は草食動物かもしれません" end animal = "キリン" if animal == "トラ" || animal == "ライオン" puts "#{animal}は肉食動物です" else puts "#{animal}は草食動物かもしれません" end

実行結果:

トラは肉食動物です
キリンは草食動物かもしれません

この例では、||(または)という記号を使っています。ここでは「トラまたはライオン」という意味で、どちらか一方にでも条件に合えば当てはまります。

最初のケースではトラなので条件に当てはまり、2つ目のケースではキリンなので条件に当てはまらず、elseの処理が実行されるということです。

if-elsif-else文による多分岐

3つ以上の選択肢がある場合は、elsifを使って複数の条件を順番にチェックできます。

動物の種類によって違うメッセージを表示する例を見てみましょう。

animal = "ペンギン" if animal == "イヌ" puts "#{animal}は家庭で飼われることが多いです" elsif animal == "ライオン" puts "#{animal}は猛獣です" elsif animal == "ペンギン" puts "#{animal}は泳ぎが得意です" else puts "#{animal}についての情報がありません" end

実行結果:

ペンギンは泳ぎが得意です

条件を上から順番にチェックしていきます。

最初の2つの条件に当てはまらないので、3つ目の「ペンギン」の条件が当てはまり、対応するメッセージが表示されます。どの条件にも当てはまらない場合は、最後のelseが実行されます。

ちなみに、「順番に」という部分がミソです。試しに、1つ目の条件である「イヌ」を「ペンギン」にして実行してみてください。その意味がわかるはずです。

論理演算子

一つのif文で、複数の条件をまとめてチェックすることもできます。

動物の特徴を複数の条件で判断する例を見てみましょう。ここでは「論理演算子」という記号を使います。

animal = "トラ" is_carnivore = true # 肉食動物かどうか is_dangerous = true # 危険な動物かどうか if is_carnivore && is_dangerous puts "#{animal}は危険な肉食動物です" elsif is_carnivore || is_dangerous puts "#{animal}は肉食か危険な動物です" else puts "#{animal}は安全な草食動物です" end

実行結果:

トラは危険な肉食動物です

&&(かつ)は両方の条件が当てはまる場合、||(または)はどちらか一方の条件が当てはまる場合に全体が当てはまります。

この例では、肉食かどうかと危険かどうかという両方の条件がtrueなので、最初の条件が当てはまって「危険な肉食動物です」が表示されるというわけです。

比較演算子

数値の大きさを比べて判断することもできます。動物の体重を比較する例を見てみましょう。

「比較演算子」という記号を使うと、数値同士を比べることができます。

elephant_weight = 5000 # ゾウの体重(kg) giraffe_weight = 1200 # キリンの体重(kg) if elephant_weight > giraffe_weight puts "ゾウはキリンより重いです" elsif elephant_weight < giraffe_weight puts "ゾウはキリンより軽いです" else puts "ゾウとキリンの体重は同じです" end

実行結果:

ゾウはキリンより重いです

比較演算子には、次のような種類があります。

  • >:より大きい
  • <:より小さい
  • >=:以上(同じかそれより大きい)
  • <=:以下(同じかそれより小さい)
  • ==:等しい
  • !=:等しくない

ゾウの体重(5000)がキリンの体重(1200)より大きいので、最初の条件が当てはまり「ゾウはキリンより重いです」が表示されます。

否定条件

「〜でない場合」という条件を作りたいときは、「!」という記号を使います。動物のサイズで判断する例を見てみましょう。

animal = "ウサギ" is_large_animal = false # 大型動物かどうか if !is_large_animal puts "#{animal}は小型の動物です" else puts "#{animal}は大型の動物です" end # 同じ意味を別の書き方で表現することもできます if is_large_animal == false puts "#{animal}は小さな動物です" end

実行結果:

ウサギは小型の動物です
ウサギは小さな動物です

! は条件を逆にする記号です。is_large_animal が false なので、!is_large_animal は true になります。

そのため「小型の動物です」と表示されます。また、同じ意味を == false で表現することもできます。

三項演算子

シンプルな条件分岐は一行で書くこともできます。これを「三項演算子」と呼びます。

動物の生息地を判定する例を見てみましょう。

animal = "サル" habitat = animal == "サル" ? "森林" : "その他の環境" puts "#{animal}の生息地は#{habitat}です" # 通常のif-else文で書くと次のようになります if animal == "サル" habitat = "森林" else habitat = "その他の環境" end puts "#{animal}の生息地は#{habitat}です"

実行結果:

サルの生息地は森林です
サルの生息地は森林です

条件 ? 当てはまる場合の値 : 当てはまらない場合の値 という書き方です。

animal == "サル" が当てはまるので、? の後の「森林」が選ばれます。短い条件分岐を1行で書きたいときに便利です。

unless文による別アプローチ

Ruby にはunlessという、ifとは逆の意味で使える書き方もあります。
「〜でない場合」という条件を自然に表現できます。

動物の分類を例に、実際に確認してみましょう。

animal = "ペンギン" unless animal == "ワシ" || animal == "ハト" puts "#{animal}は一般的な鳥とは異なる特徴を持っています" else puts "#{animal}は一般的な鳥です" end # これは以下のif文と同じ意味です if !(animal == "ワシ" || animal == "ハト") puts "#{animal}は一般的な鳥とは異なる特徴を持っています" end

実行結果:

ペンギンは一般的な鳥とは異なる特徴を持っています
ペンギンは一般的な鳥とは異なる特徴を持っています

ペンギンはワシでもハトでもないので、unlessの条件が成り立ち、メッセージが表示されていますね。

「〜でない場合」という条件を使いたいときに、unlessを使うと読みやすくなる場合があるので、ぜひ覚えておきましょう。

まとめ

Rubyのif文について、基本的な使い方を学んできました。

if 文は「条件に応じてプログラムの動作を変える」という基本的な機能を持っていましたね。

真か偽かを判断して、それに応じて異なる処理を実行する仕組みです。

この記事で学んだif文の使い方を振り返ってみましょう。

  • 基本的な条件分岐(単純なif文)
  • if-else文による二者択一の分岐(2つの選択肢から選ぶ)
  • if-elsif-else文による多分岐(3つ以上の選択肢から選ぶ)
  • 論理演算子(&&や||の使い方)
  • 比較演算子(大小関係や等しさの判定)
  • 否定条件(条件を逆にして判断)
  • 三項演算子(1行で書けるif-else)
  • unless文(「〜でない場合」の自然な表現)

if文はRubyで最も重要な制御構造の一つです。

条件分岐ができるようになると、ユーザーの入力に応じて動作を変えたり、データの内容によって処理を分けたりと、より実用的なプログラムが作れるようになります。

初めてRubyを学ぶ方も、この記事で紹介した基本的な条件分岐を実際に試してみることで、if文の力を実感できるはずです。

条件分岐はプログラミングの根幹をなす概念なので、ぜひマスターしましょう。

ちなみに、実際に手を動かすときのコツは、遊ぶような気持ちで学んだコードの一部を自分で書き換えてみることです。

今回のコード例の動物の名前をアレンジするなどして試してみてください。
実際の条件分岐の挙動の変化が目に見えてわかるはずです。このような簡単な形でコードに触れるだけでも、学べることは多いですから。

レベルを更に上げたい方はpaizaプログラミングスキルチェックへ

  1. paizaラーニングトップ
  2. リファレンス
  3. Rubyのリファレンス記事一覧
  4. Ruby if文の使い方