Ruby elsif文の使い方

この記事のポイント

Rubyのelsif文は、複数の条件を順番にチェックできる便利な機能です。

elsif文をマスターすると、「もしAなら、そうでなければBなら、それでもなければCなら...」といった複雑な判断をスマートに書けるようになります。

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

  • 3つ以上の選択肢がある場合の条件分岐の書き方がわかる
  • if文を拡張して、より柔軟な分岐処理ができるようになる
  • 複雑な条件判定を読みやすく整理するテクニックがわかる
  • 数値範囲や文字列パターンによる分岐処理ができる
  • 実際の開発でよく使われる多分岐パターンを理解できる

elsif文は条件分岐の書き方に留まらず、プログラムの表現が一気に広がる重要な機能です。
この記事でelsif文の基本知識とテクニックを身に付けてしまいましょう。

目次

Rubyのelsif文とは?

Rubyのelsif文は、複数の条件を順番にチェックして、最初に当てはまった条件の処理を実行する仕組みです。

日常生活でも私たちは「もし晴れなら散歩、晴れでなく雨なら読書、雨でもなく雪なら雪合戦」といった複数の選択肢を考えますよね。

プログラミングでも同じように、3つ以上の条件に応じて違う処理をしたい場面がたくさんあります。

if文だけでは「条件が当てはまる場合」と「それ以外の場合」の2パターンにしか分岐できませんが、elsifを使うことで3つ以上の異なる条件に基づいた処理を書くことができます。

例えば、テストの点数に応じて異なる成績をつけたり、年齢層によってメッセージを変えたり、商品の値段によって送料を決めたりするといった場面です。

Rubyのelsif文はとても直感的で、「もし〜ならば、〜ではなく…ならば、さもなければ...」という自然な流れで記述できます。

これにより、if-else文をたくさん重ねる複雑な構造を避け、すっきりと読みやすいコードを書くことができるのです。

ちなみに、「elsif」という綴りはRuby独特のもので、他の言語では「else if」や「elif」などと表記されることもあります。

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

elsif文の基本構文

Rubyのelsif文の基本構文は、if文の後にelsifを複数書き、最後にelseを置くような形です。

条件は上から順番にチェックされ、最初に当てはまった条件の処理が実行されます。

if 条件1 # 条件1が当てはまる場合に実行される処理 elsif 条件2 # 条件1は当てはまらないが、条件2が当てはまる場合に実行される処理 elsif 条件3 # 条件1と条件2は当てはまらないが、条件3が当てはまる場合に実行される処理 else # すべての条件が当てはまらない場合に実行される処理 end

elsifの数に制限はなく、必要に応じていくつもelsifを追加できます。また、elseは省略することもできます。以下の場合、条件1・条件2いずれも該当しない場合は何も出力されません。

if 条件1 # 条件1が当てはまる場合の処理 elsif 条件2 # 条件2が当てはまる場合の処理 end # else がなくても問題ない

また、Rubyにはif-elsif-else文全体で一つの値を返すことができるという特徴的な機能があります。

result = if 条件1 "条件1が当てはまりました" elsif 条件2 "条件2が当てはまりました" else "どの条件も当てはまりませんでした" end puts result # 条件に応じた文字列が出力される

注意点として、Rubyには他のプログラミング言語と少し違う特徴があります。それは「何が真で何が偽か」の判定ルールです。

多くの言語では、0や空の文字列なども「偽」として扱われますが、Rubyでは違います。

Rubyで「偽」として扱われるのは、falseとnilだけです。それ以外(0、空文字列、空配列なども含む)はすべて「真」として扱われます。

elsifを使うときも、このRuby特有のルールが適用されるので覚えておきましょう。

実用例

elsif文がどのように使われるのか、実際のコード例で見ていきましょう。

動物たちを例にして、様々な場面でのelsif文の活用方法を紹介します。

どのコード例も実際に動かすことができるので、ぜひ手元で試してみましょう。実際に経験することは何よりも学びになります。

簡単なものから順番に説明していくので、Rubyを始めたばかりの方でも安心してついてきてください。

基本的な多分岐処理

まずは、一番基本的なelsif文の使い方から始めましょう。
動物の種類に応じて異なるメッセージを表示する例です。

複数の条件を順番にチェックして、最初に当てはまった条件の処理だけが実行されるのがelsifの特徴です。

animal = "トラ" if animal == "イヌ" puts "#{animal}は忠実な家庭ペットです" elsif animal == "ネコ" puts "#{animal}は気まぐれな性格です" elsif animal == "トラ" puts "#{animal}は野生の猫科動物です" else puts "#{animal}についての情報がありません" end

実行結果:

トラは野生の猫科動物です

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

「イヌ」と「ネコ」の条件には当てはまりません。3つ目の「トラ」の条件が当てはまり、対応するメッセージが表示されます。

ポイントなのは、一度条件が当てはまるとそれ以降の条件はチェックされないということです。
つまり、順番が大切になります。

数値範囲による条件分岐

数値の範囲を条件にしたelsif文を見てみましょう。動物の体重に応じてサイズ分類を行う例です。

連続する数値範囲をチェックする場合、elsifを使うと条件の優先順位が明確になり、コードが読みやすくなります。

weight = 250 # kg if weight < 10 puts "小型動物(例:ネコ、ウサギ)" elsif weight < 100 puts "中型動物(例:オオカミ、シカ)" elsif weight < 1000 puts "大型動物(例:ライオン、クマ)" else puts "超大型動物(例:ゾウ、クジラ)" end

実行結果:

大型動物(例:ライオン、クマ)

この例では、250kgの動物は最初の2つの条件(10kg未満、100kg未満)には当てはまりません。3つ目の条件(1000kg未満)に当てはまるので、「大型動物」と分類されます。

ちなみに、数値範囲の条件分岐では小さい値から大きい値へと順番に条件を書くのが一般的です。この順番を間違えると、期待した結果にならないことがあるので注意しましょう。

文字列による条件分岐

文字列の内容をチェックして条件分岐する例も見てみましょう。
動物の特徴を表す文字列を分析し、分類しています。

文字列に特定の言葉が含まれているかどうかで判断するプログラムです。

description = "高速で走る四足動物" if description.include?("飛ぶ") puts "鳥類かもしれません(例:ワシ、ハト)" elsif description.include?("泳ぐ") puts "水生動物かもしれません(例:イルカ、サケ)" elsif description.include?("走る") puts "陸上動物かもしれません(例:チーター、シマウマ)" else puts "特定できません" end

実行結果:

陸上動物かもしれません(例:チーター、シマウマ)

この例では、include?メソッドを使って文字列に特定の言葉が含まれているかをチェックしています。

「高速で走る四足動物」という文字列には「走る」という言葉が含まれているので、3つ目の条件が当てはまります。

文字列処理とelsifを組み合わせると、テキストデータの分析や自動分類といった処理ができるようになります。

複数条件の組み合わせ

elsifと「論理演算子」を組み合わせた、より複雑な条件分岐の例を見てみましょう。
動物の能力を複数の条件で判断して分類しています。

&&(かつ)や ||(または)、!(〜でない)といった論理演算子を使うことで、より細かい条件分岐ができます。

animal = "ペンギン" can_fly = false can_swim = true if can_fly && !can_swim puts "#{animal}は空を飛ぶ鳥です" elsif !can_fly && can_swim puts "#{animal}は泳ぐことができる鳥です" elsif can_fly && can_swim puts "#{animal}は飛んで泳げる珍しい動物です" else puts "#{animal}は飛ぶことも泳ぐこともできません" end

実行結果:

ペンギンは泳ぐことができる鳥です

この例では、can_fly(飛べるかどうか)がfalseで、can_swim(泳げるかどうか)がtrueなので、2つ目の条件 !can_fly && can_swim(飛べないかつ泳げる)が当てはまります。

論理演算子について、簡単にまとめておきます。
「少しあやふやかも…」と思った方は、確認しておきましょう。

論理演算子の種類

  • &&(かつ):両方の条件が当てはまる場合
  • ||(または):どちらか一方が当てはまる場合
  • !(〜でない):条件を逆にする場合

論理演算子を使うことで複数の要素を組み合わせた、より複雑な判断ができるようになります。
ぜひ、使いこなせるようになりましょう。

メソッドの戻り値による分岐

メソッドの戻り値を条件にしたelsif文も見てみましょう。
動物の生息地を返すメソッドを作成して、その結果で分岐する例です。

コードを整理するためにメソッドと組み合わせる手法は、実際の開発でもよく使われます。

# 動物の生息地を判定するメソッドを定義 def habitat(animal) # 海の動物リストに含まれているかチェック return "海" if ["サメ", "イルカ"].include?(animal) # 水辺の動物リストに含まれているかチェック return "水辺" if ["ワニ", "カエル"].include?(animal) # 陸地の動物リストに含まれているかチェック return "陸地" if ["ライオン", "キリン"].include?(animal) # どのリストにも含まれていない場合 "不明" end # 調べたい動物を設定 animal = "ワニ" # メソッドの結果を使って条件分岐 if habitat(animal) == "海" puts "#{animal}は海に住んでいます" elsif habitat(animal) == "水辺" puts "#{animal}は水辺に住んでいます" elsif habitat(animal) == "陸地" puts "#{animal}は陸地に住んでいます" else puts "#{animal}の生息地は不明です" end

実行結果:

ワニは水辺に住んでいます

流れをくわしく見てみましょう。

  1. まずhabitatというメソッドを作ります。このメソッドは動物の名前を受け取って、その動物がどこに住んでいるかを教えてくれます。
  2. animal = "ワニ" で調べたい動物を「ワニ」に設定します。
  3. habitat(animal) でメソッドを呼び出します。「ワニ」を渡すと、メソッドの中で「ワニ」が水辺の動物リスト ["ワニ", "カエル"] に含まれているかチェックされます。
  4. ワニは水辺のリストに含まれているので、メソッドは「水辺」という結果を返します。
  5. habitat(animal) == "水辺" が当てはまるので、2つ目の条件が実行されて「ワニは水辺に住んでいます」が表示されます。

このように、メソッドを使うと複雑な判定の処理を別の場所にまとめることができます。

そうすることで、メインの条件分岐の部分がすっきりして、何をしているのかが一目でわかりやすくなります。

入れ子の条件分岐との比較

elsifを使わずにif文を入れ子(ネスト)にした場合と比較してみましょう。

動物のカテゴリと特性による分類を行う例です。

入れ子構造よりもelsifを使った方がコードが平坦になり、読みやすくなることが実感できるかと思います。

入れ子を使った例

animal = "ペンギン" is_bird = true can_fly = false if is_bird if can_fly puts "#{animal}は飛べる鳥です" else puts "#{animal}は飛べない鳥です" end else puts "#{animal}は鳥ではありません" end

elsif文を使った例

animal = "ペンギン" is_bird = true can_fly = false # elsifを使った平坦な構造 if is_bird && can_fly puts "#{animal}は飛べる鳥です" elsif is_bird && !can_fly puts "#{animal}は飛べない鳥です" elsif !is_bird puts "#{animal}は鳥ではありません" end

実行結果:

ペンギンは飛べない鳥です

入れ子の方は、ifの中にさらにifがあって階段のような構造になっています。

条件が増えると、どんどん深くなりどの条件がどの処理に対応しているのか、わかりにくくなってしまいます。

一方、elsifを使った例は、すべての条件が同じレベルに並んでいるので、上から順番に読んでいくだけで理解できます。

このように「フラット(平坦)」な構造にすることで、コードがすっきりして読みやすくなるのです。

elsif vs case文

elsifと似たような機能を持つcase文との比較も見てみましょう。
動物の種類による分岐を両方の構文で記述した例です。

値が同じかどうかをチェックしたいだけなら、case文の方がすっきり書けますが、複雑な条件を組み合わせたいときにはelsifが適しています。

case文を使った例

animal = "キリン" case animal when "ライオン" puts "#{animal}は肉食の猫科動物です" when "キリン" puts "#{animal}は草食の長い首を持つ動物です" when "ゾウ" puts "#{animal}は大きな鼻を持つ動物です" end

elsif文を使った例

animal = "キリン" # elsif文による分岐 if animal == "ライオン" puts "#{animal}は肉食の猫科動物です" elsif animal == "キリン" puts "#{animal}は草食の長い首を持つ動物です" elsif animal == "ゾウ" puts "#{animal}は大きな鼻を持つ動物です" end

実行結果:

キリンは草食の長い首を持つ動物です

この例のように、値が同じかどうかをチェックするようなケースではcase文の方がすっきりしているように見えますね。

しかし、今までに見てきた複雑な条件(範囲指定や複数条件の組み合わせなど)の場合を想像するとどうでしょうか?

その場合には、elsifの方が適しているような場面が多いです。状況に応じて使い分けるようにしましょう。

戻り値としての条件分岐

Rubyの特徴として、if-elsif-else 文全体が値を返すことができるという機能があります。
この機能を使うと、条件分岐の結果を直接変数に入れることができて便利です。

animal = "クジラ" # 条件分岐の結果を変数に代入 category = if animal == "イヌ" || animal == "ネコ" "ペット" elsif animal == "ライオン" || animal == "トラ" "野生動物" elsif animal == "クジラ" || animal == "イルカ" "海洋生物" else "その他" end puts "#{animal}は#{category}です"

実行結果:

クジラは海洋生物です

この例では、クジラは3つ目の条件の animal == "クジラ" || animal == "イルカ" に当てはまるので、「海洋生物」という値がcategory変数に代入されます。

注目してほしいのは、書き方です。
普通であれば変数への代入と条件分岐は別々に書くことが多いですが、Rubyでは条件分岐全体を一つの値として扱い、その結果を直接変数に代入することができます。

このように、elsif文の結果を直接変数に代入できるのはRubyの便利な特徴です。

まとめ

Rubyのelsif文について、基本的な使い方から実践的な応用まで学んできました。

elsif文は「複数の条件を順番にチェックして、最初に当てはまった条件の処理を実行する」機能でしたね。
if文では2つの選択肢しか扱えませんが、elsifを使うことで3つ以上の選択肢に対応できるようになります。

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

  • 多分岐処理(複数の条件を上から順番にチェック)
  • 数値範囲(体重やサイズなどの範囲での分類)
  • 文字列(テキスト内容での判定)
  • 複数条件の組み合わせ(論理演算子を使った複雑な条件)
  • メソッドの戻り値(処理を整理した読みやすいコード)
  • 入れ子の条件分岐との比較(フラットで読みやすい構造)
  • case文との使い分け(シンプルな比較 vs 複雑な条件)
  • 戻り値としての条件分岐(Ruby特有の便利な機能)

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

複数の条件による分岐ができるようになると、ユーザーの年齢層に応じたサービスの区分けや、商品カテゴリによる処理の変更など、より実用的で柔軟なプログラムが作れるようになります。

初めてRubyを学ぶ方も、この記事で紹介した基本的な分岐処理を実際に試してみることで、elsifの有用性を実感できるはずです。

条件分岐はプログラミングの基本要素であり、elsifはその表現力を高める重要な構文です。

日常のプログラミングで積極的にelsif文を使って、条件分岐を使いこなせるようになりましょう。

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

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