Rubyのif文とは?
Rubyのif文は、「もし〜なら」という条件に応じてプログラムの動作を変える仕組みです。
日常生活でも私たちは「もし雨が降っているなら傘を持つ」「もし時間があるなら映画を見る」といった判断をしていますよね。
プログラミングでも同じように、状況に応じて違う処理を行いたい場面がたくさんあります。
例えば、点数によって合否を判定したり、年齢によって利用できる機能を変えたりできます。
Rubyのif文は書き方がとてもシンプルで、初心者の方でも理解しやすいのが特徴です。
また、簡単な条件から複雑な条件まで、幅広い場面で使うことができます。
elsif(他の言語ではelif、else ifなどと表記)やelseと組み合わせることで、複数の条件に基づいた分岐処理もできるということも覚えておきましょう。
if文の基本構文
Rubyのif文の書き方はとてもシンプルです。
基本の形は、次のようになります。
「if」の後に条件を書いて、その下に実行したい処理を記述します。最後に「end」と書いて終了です。
条件が当てはまらない場合の処理も書きたいときは、「else」を使います。
さらに、他の条件をチェックしたいときは「elsif」を使います。
また、Rubyでは下記のように一行で書くこともできます。処理が短い場合に便利です。
ちなみに、Rubyではfalse(偽)と nil(何もない)以外のすべての値が「条件が当てはまる」と判断されます。
もしかすると、他の言語に慣れた人だと「0は偽じゃないの?」と驚くことがあるかもしれませんね。
「明確に偽を表すもの以外は全部真」という性質は、他のプログラミング言語とは少し違う特徴なので、覚えておきましょう。
実用例
Rubyのif文は日常的なプログラミングで最もよく使う機能の一つです。
ここからは実際のコード例を通して、if文がどのように活用できるかを見ていきましょう。
Rubyを始めたばかりの方でもわかるように、動物たちの例を用いて一つずつ丁寧に説明します。
すべてのコード例は実際に動かすことができるので、ぜひ試してみてください。
基本的な条件分岐
まずは一番シンプルなif文から始めましょう。条件が当てはまる場合だけ処理を実行する例です。
「条件分岐」とは、条件によってプログラムの動作が分かれることです。動物の名前をチェックして、該当する場合だけメッセージを表示してみます。
実行結果:
イヌは忠実な動物です
最初のケースではanimalが「イヌ」なので、条件(animal == "イヌ")が当てはまります。
そのため「イヌは忠実な動物です」と表示されます。
2つ目のケースでは、animalが「ネコ」なので条件が当てはまらず、何も表示されません。
if-else文による二者択一の分岐
条件が当てはまる場合と当てはまらない場合で、違う処理をしたいときは if-else文を使います。
動物が肉食動物かどうかを判定して、それぞれ違うメッセージを表示してみましょう。
実行結果:
トラは肉食動物です
キリンは草食動物かもしれません
この例では、||(または)という記号を使っています。ここでは「トラまたはライオン」という意味で、どちらか一方にでも条件に合えば当てはまります。
最初のケースではトラなので条件に当てはまり、2つ目のケースではキリンなので条件に当てはまらず、elseの処理が実行されるということです。
if-elsif-else文による多分岐
3つ以上の選択肢がある場合は、elsifを使って複数の条件を順番にチェックできます。
動物の種類によって違うメッセージを表示する例を見てみましょう。
実行結果:
ペンギンは泳ぎが得意です
条件を上から順番にチェックしていきます。
最初の2つの条件に当てはまらないので、3つ目の「ペンギン」の条件が当てはまり、対応するメッセージが表示されます。どの条件にも当てはまらない場合は、最後のelseが実行されます。
ちなみに、「順番に」という部分がミソです。試しに、1つ目の条件である「イヌ」を「ペンギン」にして実行してみてください。その意味がわかるはずです。
論理演算子
一つのif文で、複数の条件をまとめてチェックすることもできます。
動物の特徴を複数の条件で判断する例を見てみましょう。ここでは「論理演算子」という記号を使います。
実行結果:
トラは危険な肉食動物です
&&(かつ)は両方の条件が当てはまる場合、||(または)はどちらか一方の条件が当てはまる場合に全体が当てはまります。
この例では、肉食かどうかと危険かどうかという両方の条件がtrueなので、最初の条件が当てはまって「危険な肉食動物です」が表示されるというわけです。
比較演算子
数値の大きさを比べて判断することもできます。動物の体重を比較する例を見てみましょう。
「比較演算子」という記号を使うと、数値同士を比べることができます。
実行結果:
ゾウはキリンより重いです
比較演算子には、次のような種類があります。
- >:より大きい
- <:より小さい
- >=:以上(同じかそれより大きい)
- <=:以下(同じかそれより小さい)
- ==:等しい
- !=:等しくない
ゾウの体重(5000)がキリンの体重(1200)より大きいので、最初の条件が当てはまり「ゾウはキリンより重いです」が表示されます。
否定条件
「〜でない場合」という条件を作りたいときは、「!」という記号を使います。動物のサイズで判断する例を見てみましょう。
実行結果:
ウサギは小型の動物です
ウサギは小さな動物です
! は条件を逆にする記号です。is_large_animal が false なので、!is_large_animal は true になります。
そのため「小型の動物です」と表示されます。また、同じ意味を == false で表現することもできます。
三項演算子
シンプルな条件分岐は一行で書くこともできます。これを「三項演算子」と呼びます。
動物の生息地を判定する例を見てみましょう。
実行結果:
サルの生息地は森林です
サルの生息地は森林です
条件 ? 当てはまる場合の値 : 当てはまらない場合の値 という書き方です。
animal == "サル" が当てはまるので、? の後の「森林」が選ばれます。短い条件分岐を1行で書きたいときに便利です。
unless文による別アプローチ
Ruby にはunlessという、ifとは逆の意味で使える書き方もあります。
「〜でない場合」という条件を自然に表現できます。
動物の分類を例に、実際に確認してみましょう。
実行結果:
ペンギンは一般的な鳥とは異なる特徴を持っています
ペンギンは一般的な鳥とは異なる特徴を持っています
ペンギンはワシでもハトでもないので、unlessの条件が成り立ち、メッセージが表示されていますね。
「〜でない場合」という条件を使いたいときに、unlessを使うと読みやすくなる場合があるので、ぜひ覚えておきましょう。
まとめ
Rubyのif文について、基本的な使い方を学んできました。
if 文は「条件に応じてプログラムの動作を変える」という基本的な機能を持っていましたね。
真か偽かを判断して、それに応じて異なる処理を実行する仕組みです。
この記事で学んだif文の使い方を振り返ってみましょう。
- 基本的な条件分岐(単純なif文)
- if-else文による二者択一の分岐(2つの選択肢から選ぶ)
- if-elsif-else文による多分岐(3つ以上の選択肢から選ぶ)
- 論理演算子(&&や||の使い方)
- 比較演算子(大小関係や等しさの判定)
- 否定条件(条件を逆にして判断)
- 三項演算子(1行で書けるif-else)
- unless文(「〜でない場合」の自然な表現)
if文はRubyで最も重要な制御構造の一つです。
条件分岐ができるようになると、ユーザーの入力に応じて動作を変えたり、データの内容によって処理を分けたりと、より実用的なプログラムが作れるようになります。
初めてRubyを学ぶ方も、この記事で紹介した基本的な条件分岐を実際に試してみることで、if文の力を実感できるはずです。
条件分岐はプログラミングの根幹をなす概念なので、ぜひマスターしましょう。
ちなみに、実際に手を動かすときのコツは、遊ぶような気持ちで学んだコードの一部を自分で書き換えてみることです。
今回のコード例の動物の名前をアレンジするなどして試してみてください。
実際の条件分岐の挙動の変化が目に見えてわかるはずです。このような簡単な形でコードに触れるだけでも、学べることは多いですから。