まず最初に覚えておきたい!Rubyの条件分岐(if文)を使う方法【初心者向け】

Rubyで書くif文(条件分岐)について初心者でも分かるように解説しています。else if文、unless文なども紹介。プログラミングをやる上でif文の知識は欠かせないので、ぜひ覚えて使えるようにしておきましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

プログラミングをやる上で条件分岐(if文)はよく出てきますので、今回はRubyで書くif文について解説します。

if文を使うことで条件に応じて処理を変えることができるので、ぜひ覚えておきましょう。

そもそもRubyがよく分からないという方は、Rubyとは何なのか解説した記事をご覧ください。

 

なお本記事は、TechAcademyのWebアプリケーションオンラインブートキャンプの内容をもとに紹介しています。

 

田島悠介

今日はif文の書き方を練習しよう。

大石ゆかり

田島メンター!!if文は何をするんですか~?

田島悠介

if文は条件分岐を行うものだよ。ある特定の条件に当てはまる場合はAの処理、違った場合はBの処理を行うという風に設定できるんだ。実際にどういう形になるか見てみよう。

大石ゆかり

はい!お願いします!

 

if文の書き方

if文は条件式の真偽によって処理を分岐させる制御構造のひとつです。基本構文は以下のようになります。

if 条件式1 then
  # do something 1
elsif 条件式2 then
  # do something 2
else
  # do something 3
end

 

ifの条件式(上記条件式1)が「真」である場合にthen以下(# do something 1)が実行されます。

条件式1が「偽」である場合はelsifの条件式2が評価され、これが「真」であればthen以下(# do something 2)が実行されます。elsifは複数指定可能です。

ifおよびすべてのelsifの条件式が「偽」だった場合、elseが存在すれば、それ以下(# do something 3)が実行されます。

Rubyにおいて「偽」とはfalseかnilだけで、他は0や空文字列も含めてすべて「真」となります。

 

田島悠介

最初の条件式で真であればそこで指定された処理が実行される。そこで偽であって次のelseifの条件で真であればそこの処理が、さらにそこでも偽であれば……というように判定されるんだ。

大石ゆかり

最終的にどれにも当てはまらなかった場合は、elseの処理が実行されるんですね。

田島悠介

その通り!では実際に書いてみよう。

 

 

実際にif文を書いてみよう

if文の例を以下に示します。

a = 5
if a > 3 then
  puts "a is greater than 3"
end

ruby-if-expression01-620x214
1行目で変数「a」に「5」を代入しています。

2行目のifで「a > 3」という条件式が実行されます。この条件式は「真」なのでthen以下が実行され「a is greater than 3」が出力されます。

続いて、1行目を「a = 1」に変更してみます。

a = 1
if a > 3 then
  puts "a is greater than 3"
end

ruby-if-expression02-620x200
この場合、条件式が「偽」となるのでthen以下は実行されず、nilとなります。

[PR] Rubyのプログラミングで挫折しない学習方法を動画で公開中

複数の条件で分岐させる

elsifとelseを使って複数の条件で処理を分岐させてみましょう。

a = 15
if a > 30 then
  puts "a is greater than 30"
elsif a > 20 then
  puts "a is greater than 20"
elsif a > 10 then
  puts "a is greater than 10"
else
  puts "a is less than 10"
end

ruby-if-expression03-620x293

1行目で変数「a」に「15」を代入しています。

ifの条件式「a > 30」は「偽」なので最初のthen以下は実行されず、次のelsifに進みます。

ひとつ目のelsifの「a > 20」も「偽」なので次のelsifに進み、ここで「a > 10」が「真」となりthen以下の「a is greater than 10」が出力されます。最後のelse以下は評価されません。

次は文字列の比較を条件式としてみます。

a = "ruby"
if a == "python"
  puts "a is python"
elsif a == "java"
  puts "a is java"
else
  puts "a is ruby"
end

ruby-if-expression04-620x267

1行目で変数「a」に「ruby」という文字列を代入しました。
この場合、if/elsifの条件式は「偽」となり、else以下が実行され「a is ruby」が出力されます。

unless文

unless文はif文とは逆の働きを持つ制御構造です。

unless 条件式 then
  # do something 1
else
  # do something 2
end

条件式が「偽」である場合にthen以下、「真」である場合は(存在すれば)else以下を実行します。

ただし、unlessにelsifは指定できないことに注意してください。

a = 3
unless a > 5 then
  puts "a is less than 5"
else
  puts "a is greater than 5"
end

ruby-if-expression05-620x240

1行目で変数「a」に「3」を代入しています。

2行目のunlessで条件式「a > 5」が実行されます。これは「偽」なので、then以下が実行され「a is less than 5」が出力されます。

続いて、1行目を「a = 10」に変更しました。

a = 10
unless a > 5 then
  puts "a is less than 5"
else
  puts "a is greater than 5"
end

ruby-if-expression06-620x240

この場合は条件式「a > 5」が「真」なのでthen以下は実行されません。else以下が実行され「a is greater than 5」が出力されます。
以上、Rubyで書く条件分岐(if文)について解説しました。

 

田島悠介

最後にunless文についても少し紹介したよ。

大石ゆかり

if文とは逆のことをするんですね。

田島悠介

条件分岐もfor文と同様よく使う構文なので、すぐに書けるように頭にしっかり入れておこう。

大石ゆかり

分かりました。ありがとうございます!

 

[お知らせ]TechAcademyでは初心者でも8週間でエンジニアになれるRuby on Railsオンラインブートキャンプを開催しています。RubyでWebアプリを開発したい方はご参加ください。