【入門】Rubyのif文、case文ちゃんと使い分けられてますか?

この記事では、Rubyのif文とcase文の使い方、またその使い分けポイントを現役エンジニアの意見も交えて説明します。

サキさん
if文ってRuby以外にもありますよね!
マナブさん
よく知ってるね。Ruby以外の言語でもよく使われるif文。Rubyだとすこし簡単に書けるんだよ。
サキさん
case文も聞いたことがあります。
マナブさん
case文もif文と同じような使われ方をするんだけど、その使い分けポイントも含めて説明していくよ。

if 文とはなにか

まず、if文について説明していきます。

プログラミングでは入ってくるデータに応じて処理を分けたりすることが頻繁にあります。その条件に応じて処理を分ける為に使うのが代表的なものではif文です。

if文で設定するのは2つです。

  • 条件式
  • 条件に当てはまったときの処理内容

条件式とは、上記のイメージで言えば「7時になったら」の部分です。処理内容とは、「朝のアラームを鳴らして!」の部分です。具体的にコードを見ていきましょう。

まずはじめに変数 time に 数字型オブジェクトの 7 を代入していますね。その次からif文を展開しています。

if 〜 end という形でif文がかけます。〜の中に処理内容を書いていきます。また、この例では変数timeが 7 と等しければ、という意味になります。

不等号とは
以下のように、数値が正しいかどうかを比較する記号のことを不等号といいます。

if文を一行で書く

Ruby の場合は一行でif文を書くことができます。簡単なif文の場合はなるべく一行で書くように意識しましょう。

if else 文とは

if 文では条件式が一つでした。ただし、もし複数の条件があって、その条件毎に処理を分けたい場合はどうしたらいいのでしょうか?そのときに使えるのがif 〜 else 文です。

早速例を見ていきましょう。

この例ではtimeが7の場合に”朝だよ!”という文字列を出力しています。その下にある else 以下では、timeでなかった場合の処理を書いています。つまり、timeが8や9、文字列だったり「7ではない」場合には全てelse以降の処理が実行されるのです。

if elsif 文とは

条件を分ける、方法がもう一つあります。

先ほどはtimeが7かどうか、の二択しかありませんでした。しかし、複数条件が必要な時はどうすればいいのでしょうか?そのときに使えるのがif elsif文です。

早速例を見ていきましょう。

少し複雑なので整理すると以下のようになります。

  • timeが7のとき:朝だよ!が出力される
  • timeが12のとき:昼だよ!が出力される
  • 7でも12でもないとき:何もしないよが出力される

このelsifはいくつでも設定することができるので、条件が複数あってそれに応じて処理を分けたいときはelsif文を用いるようにしましょう。

注意点
実際に現場でelsifを多様することはあまりよろしくないとされています。なぜなら条件が複雑になることが許容されてしまうからです。データの処理を事前にしたうえで、それに合わせて簡易的に出力をわけるような設計ができるようになりましょう。

case 文とは

これまでは if 文をメインとして、条件にあわせて処理内容を分ける書き方を説明してきました。ここからはもう一つ条件文を用いた書き方である「case文」を説明します。

case文とは対象のデータ(オブジェクト)の値がwhen以降のデータと等しければそれ以降の処理を実行するというものです。今回の例では対象のデータは変数timeがあります。このtimeがどの条件と等しいかに応じて処理を分けて、より簡潔に書くことできます。

複数条件を設定することはできるか

case 以降には一つの条件だけでなく、2つ以上の条件を設定することもできます。

if文とcase文どっちを使うべきか

どちらも使えるようになると、実際に現場でどちらを使うべきか悩むケースが出てきます。明確な基準はありませんが、多くの場合以下のように使い分けているケースが多いです。

現役エンジニアの一言
条件が一文で書ける場合はもちろんif文を使いましょう。また、条件が増えることが見込まれない場合にもなるべくif~elsif 文で書くといいでしょう。それ以外の、条件が今後も増えそうな場合にはcase文を書くと拡張しやすくなります。

まとめ

サキさん
なるほど、ifとcaseはそうやって使い分ければいいんですね!
マナブさん
実際にはifを使うことが9割近くで、caseは条件分岐がシンプルでかつ拡張の可能性がある場合に限ったほうがいいね。
サキさん
これでRubyで本格的なプログラミングができそう!
マナブさん
次のfor文を覚えて早速演習問題をやっていこう!

Rubyを学んで「自社開発企業」へ行くなら、ポテパンキャンプさんをオススメします。実際にエンジニアの私からみても「こんなところまで?!」と驚くカリキュラムでした。在校生・卒業生の口コミはこちらをご覧ください!

【就職できる?】ポテパンキャンプ受講生の口コミ・評判

2019年1月26日

【ホントは教えたくない…】ポテパンキャンプオープンクラスの口コミ・評判

2019年1月23日