【Ruby入門】ifやif elseの基本からANDやORを使う応用まで完全解説!!

こんにちは! フリーランスの桃太郎です。

この記事ではRubyのif文について分かりやすく解説をすすめていきます。if文の基本的なことから実践的なことまでを一通りマスターできるように、本記事を作成しました。

その為、本記事を読み終わる頃には、あなたはRubyのif文をきちんと整理して理解していることでしょう。そして、ぜひ本記事をブックマークして、使い方を忘れた時はすぐに確認できるようにしておくことをオススメします。

この記事では

  • if文の基本的な書き方
  • if else文で複数の条件を処理する方法
  • or演算子で「AもしくはB」条件を実現する
  • nilかどうかを判定する

などの基本的な内容から応用的かつ実践的な内容を順に解説していきます。それでは、一緒に学習を進めていきましょう。

if文の基本

まずはif文の基本をみていくことにしましょう。

if文の基本的な書き方

基本的な書き方は以下の通りです。

if 条件 then
  処理
end

ifは日本語で「もし」、thenは「そのときは」と訳することができます。

つまり、もし「条件」が満たされる、「そのときは」、「処理」を実行して終了(end)する。という流れになります。

具体的なサンプルで確認してみましょう。

# サンプルa

# ユーザがお酒を飲める年齢かどうか判定する処理
age = 18 # ユーザの年齢
if age < 20 then
  puts "あなたは未成年です。"
end

# 実行結果

あなたは未成年です。

“条件”にあたる部分が「 age < 20 」の箇所です。

今回は変数ageには’18’が入っていますので、「 18 < 20 」は数式として正しく、条件を満たしたので、その下にある処理(puts 〜)が実行されました。

ageの箇所を20以上の数値に変えて、実施すると「あなたは〜」の文字が出てこないことをご自身の環境で確認してみてください。

以上が、基本的なif文の形ですが、以下のように書くこともできます。

# サンプルb

age = 18
if age < 20  # thenを省略
  puts "あなたは未成年です。"
end

# サンプルc

age = 18 # ユーザの年齢
puts "あなたは未成年です。" if age < 20  # if文を後ろに配置する

サンプルb,cともに出力結果はサンプルaと同一です。

それぞれ、基本的な形に比べて、プログラムコードの書く量を少なくできたり、1行にまとめることができるなどの特徴があります。どの書き方を選ぶかはプログラムを書く人の好みや開発チームの方針により様々です。

どのような場面でも柔軟にプログラムを読み書きできるように、上記のバリエーションを知っておくと良いでしょう。

基本的なif文の書き方の最後の締めとして、if文の結果を変数に代入する書き方をご紹介します。

まずはサンプルをご覧ください。

# サンプルd

age = 18
# if文の結果をresultに代入
result = if age < 20
  "あなたは未成年です。"
end
puts result

if文( if から end まで)の出力結果を変数resultに代入し、最後にputsでその中身を表示しています。

このようにif文の処理結果を後ろに続く処理で活用したい場合などには便利な使い方となりますので覚えておくと良いでしょう。

if else文で複数の条件を処理する方法

前の章で解説した基本形では、if文の条件を満たす場合のみif文の中の処理が行われる書き方でした。

ただ、条件を満たさないときにも別の処理を行いたい場合もあります。そのような時に使うのが「if else文」、そして「if elsif 文」です。

まずは文の構成を確認しましょう。

# if else 文の構成

if 条件
  条件を満たす場合の処理
else
  条件を満たさない場合の処理
end

# if elsif 文の構成

if 条件イ
  条件イを満たす場合の処理
elsif 条件ロ
  条件ロを満たす場合の処理
elsif 条件ハ
  条件ハを満たす場合の処理
else
  条件イ、ロ、ハを全て満たさない場合の処理
end

elseのあとは”条件を満たさない”時に行いたい処理を書くのがポイントです。また、elsif は複数の異なる条件によって処理を分けたい場合に活用します。

そして、elsifは上に書かれている条件から順番に条件を満たすか判定を行い、満たした時点でその後ろにある条件式の判定は実行されません。

それでは、具体的なサンプルコードで確認していきましょう。

# if else 文のサンプル

age = 23
if age < 20
  puts "あなたは未成年です。"
else
  puts "あなたはすでに大人の仲間入りです。"
end

# 実行結果

あなたはすでに大人の仲間入りです。

# if elsif 文のサンプル

age = 60
if age < 20
  puts "あなたは未成年です。"
elsif 60 <= age  
  puts "あなたは還暦を迎えられています。"
else
  puts "あなたは成人です。"
end

# 実行結果

あなたは還暦を迎えられています。

実際に上のサンプルにある変数ageの値を色々と変更して、どのputs処理が行われるか確認すると理解が深まるので是非試してみてください。

そして、ここで気をつけるポイントをお伝えします。Ruby以外のプログラミングを学んでいる方は特に注意すべきポイントになります。

それは、elsifという文字のつづりです。他のプログラム言語では、「else if」という書き方がよくあるのですが、Rubyではelsifと書きますので覚えておきましょう。

それでは本章の最後に、elsifと関連性の強いcase文について軽くご紹介します。elsifとcase文は複数の条件を扱うという点でとても良く似ています。

サンプルコードでそれぞれの処理の流れを比較してみましょう。

# elsif文

blood_type = "B"
if blood_type == "A"
  puts "几帳面な性格ですね"
elsif blood_type == "B"
  puts "マイペースと言われませんか?"
elsif blood_type == "O"
  puts "協調性がありますね"
elsif blood_type == "AB"
  puts "好奇心が旺盛な性格ですね"
else
  puts "血液型を調べてみませんか?"
end

# case文

blood_type = "B"
case blood_type
when "A" then
  puts "几帳面な性格ですね"
when "B" then
  puts "マイペースと言われませんか?"
when "O" then
  puts "協調性がありますね"
when "AB" then
  puts "好奇心が旺盛な性格ですね"
else
  puts "血液型を調べてみませんか?"
end

# 実行結果(両方のサンプルともに)

マイペースと言われませんか?

使われている語句(caseやwhen)の違いはもちろんありますが、elsif文とcase文の構成はとても似ていることがわかりますね。

case文についてより詳しく知りたい方は以下の記事も参考にしてみると良いでしょう。

はじめてのRuby!case文の使い方をマスターしよう!
更新日 : 2019年4月24日

unlessを使い「〜では無い場合」の条件を処理する方法

基本編の最後に登場するのは、「もし仮に〜では無い場合」を実現するunless文についてご紹介します。

「もし仮に〜では無い場合」ときくと、少しまわりくどい条件に感じ、そもそもif文だけで良いのではと感じる方もいるかもしれませんね。

ですが、もし条件を満たさない時の処理だけを記述したい場合などは、このunless文を使うことを検討します。

では、サンプルをみてみましょう。

member_type = "premium"
unless member_type == "normal"
  puts "通常会員ではありません。"
  # プレミアム会員向けの処理が続く、、
end

# 実行結果

通常会員ではありません。

上記のサンプルのように、通常会員以外の場合は、セール商品の値引額を変更したり、特別な情報をメールで送るなどの処理へ続けるための最初の判定にunlessを活用しています。

また、unlessではelseと併用することも可能です。

ただし、elsifとは併用できず、エラーとなりますので注意が必要です。

member_type = "normal"
unless member_type == "normal"
  puts "通常会員ではありません。"
  # プレミアム会員向けの処理が続く、、
else
  puts "通常会員です。"      
end

# 実行結果

通常会員です。

そして、unlessの使い方をif文で代用するために、以下のサンプルのような書き方も可能です。

member_type = "premium"
if not member_type == "normal"
  puts "通常会員ではありません。"
  # プレミアム会員向けの処理が続く、、
end

# 実行結果

通常会員ではありません。

unlessの箇所に「 if not 」と書くことで同様の処理が実現できます。また、if not はelsifを正常に併用できる点がunelssと異なるところです。

if文の応用

では、次にif文の使い方についてより応用的な内容を解説していきましょう。

or演算子で「AもしくはB」条件を実現する

例えば、移動手段が電車かバスの場合は経費の精算を行う処理をif文で実現するとします。

このようにAかBかのいずれかの条件を満たすかどうか判定するためには、or もしくは || という記号を使います。この記号のことを論理演算子と呼びます。

具体的にサンプルで確認してみましょう。

transportation = "train"
if transportation == "train" or transportation == "bus"
    puts "経費精算の対象です。"
    # 経費精算処理に続く
end

transportation_2 = "bus"
if transportation_2 == "train" || transportation_2 == "bus"
    puts "経費精算の対象です。"
    # 経費精算処理に続く
end

# 実行結果

経費精算の対象です。
経費精算の対象です。

このように複数の条件を合わせて一つの判定式とすることができるのが、論理演算子の特徴です。

and演算子で「AかつB」条件を実現する

では次に、他の論理演算子として良く使われるものがand演算子です。こちらはAもBの両方の条件を満たして初めて満たすという判断になるものです。

# 通勤手当対象者かを勤続年数と通勤時間で判断する
carrier = 5 #勤続年数5年
commuting_time = 2 #通勤時間2時間
if carrier > 3 and commuting_time > 1.5
    puts "通勤手当対象者です。"
    # 通勤手当処理に続く
end

# &&を使用した例
carrier_b = 10
commuting_time_b = 0.5
if carrier_b > 3 && commuting_time_b > 1.5
    puts "通勤手当対象者です。"
    # 通勤手当処理に続く
else
    puts "対象外です。"
end

# 実行結果

通勤手当対象者です。
対象外です。

上のサンプルのように、and もしくは && という論理演算子を使用することで、「AかつB」条件を実現できます。

nilかどうかを判定する

プログラムにおいて、オブジェクト(データや処理内容を入れることができる箱のようなもの)が存在しないことを表現する為の値として nil があります。

この nil の状態なのかどうかを判定する方法が if 文とよく一緒に利用されるので、ここでご紹介します。

# 会員さんの個人情報として名前と年齢が配列データとして存在
member_010 = { "name" => "tanaka", "age" => "25" }
if member_010["birth"].nil?
    puts "誕生日に関するデータは存在しません。"
end

# 実行結果

誕生日に関するデータは存在しません。

nil? という箇所に注目してください。

はてなを付けることで、nil状態ですか?と判定することができます。そして、その結果を元にif文で処理を行うプログラミングの実践例が多いので、覚えておくと良いでしょう。

さらに詳しくnil?について知りたい方は以下の記事を参考にしてください。

【Ruby入門】nil?empty?blank?present?の基礎と応用!
更新日 : 2017年9月19日

三項演算子を使い1行にコードをまとめる方法

本記事の最後に、三項演算子なるものをif文と関連してご紹介します。

ポイントとしては三項演算子を使うと、if文の記述内容が1行でスッキリまとめて書くことができます。

age = 23

# 通常のif文
result = if age < 20
  "あなたは未成年です。"
else
  "あなたはすでに大人の仲間入りです。"
end
puts result

# 三項演算子で書いた場合


result_b = age < 20 ? "あなたは未成年です。" : "あなたはすでに大人の仲間入りです。" # 1行にまとまる
puts result_b

ただし、今回は”あなたは未成年です。”など処理結果が短い文字列を出すだけの場合であれば、三項演算子で見やすくなりますが、処理結果が複雑なものの場合は、if文を利用したほうが読みやすいプログラムコードになります。

三項演算子について詳しく知りたい方は以下の記事を参考にしてみるのも良いでしょう。

【脱Ruby初心者!】さまざまな演算子の使い方を理解しよう!
更新日 : 2018年10月12日

Rubyを独学で頑張っているけど先が見えない方のために

独学でRubyを頑張っているわけだけど、先が見えない・・・

そんな方、実はいらっしゃるのではないでしょうか?

いや、おれは違うぞ。先のキャリアもしっかり見えてるし、独学の成果も出てきている

そんな方であれば、これから先の話は必要ないでしょう。そっとページの閉じるボタンを押しましょう。

しかし、「先が見えない」と心の底では勘付いているそこの奥さん。この先を読み進めて、一緒に課題を深堀りしていきましょう。

なぜ「先が見えない」という不安や悩みを抱えてしまうのか

さて、「一寸先は闇だ・・・」とお悩みを抱えている方に、なぜ独学でRubyを勉強しているにもかかわらず、そのような現状を抱えてしまうのか、一緒に考えていきましょう。

先が見えない現状を踏まえ、課題として考えられるものは以下のどれかに該当するでしょう。

  • プログラミングの上達が見えない
  • プログラミングを継続できない気がする
  • プログラミングスキルを習得した姿がイメージできない
  • プログラミングスキルを活かした仕事を獲得するイメージができない

これらのどれかに該当することによって、「なんとなくプログラミング学習をしている」という状態になってしまいます。

これらの要因は、三日坊主になる理論と同じなんですが、「プログラミング学習をしなきゃ」とプログラミング学習を頑張ってしまっている状態になってしまっています。

受験勉強をやった経験のある方なら頭がもげるほどに首を縦に振ってしまう方も多いのですが、「今日も5時間勉強するぞ」や「今日はこの章を終わらすぞ」というように、学習を進めることに意識が行き過ぎてしまうと、ある程度学習を継続した後に「先が見えない・・・」となってしまいます。

未来に光を当て、プログラミング学習を「成果が出るもの」にするために

先ほど、「なぜ先が見えないという悩みや不安を抱えてしまうのか」という疑問に対しての答えを示していきました。

これらの課題というのは、独学をしていれば9割の方がぶつかってしまう壁だそうで、いわば、あるあるの現象なのです。

独学をしていて、「なんか前に進めていないぞ」と感じるのはこのせいなんですね。甘く見がちですが、非常にやっかい。

これがさらにやっかいさを極めているのは、上記に挙げた課題のほとんどが、1人で解決できないものばかりだからです。

実は、これらのほとんどが経験者に助けてもらいながら解決しないと、すぐに違う方向へと流れてしまいます。

そう言い切れるのは、以前の私もそうだったからです。

エンジニアやプログラマー関連のキャリアに詳しい方や現役のエンジニアに相談しながら修正を加え、学習を実践して今があります。

そうは言っても、周りにそういう人がいないし・・・

という方もいるでしょう。そういう時にこそ、プログラミングスクールの無料体験レッスンを利用するのです。

営業をかけられて時間の無駄に終わるでしょ?

という考えに辿りついてしまいますよね。結論から言うと弊社では、そういった強引な営業等を行うことはありませんので、安心して受講できます。

「プログラミング学習の先ある未来」を光で明るく照らすには、弊社の無料体験レッスンがぴったりだと断言できます。それくらい無料体験レッスンに自信を持っているのです。

さらに、無料体験レッスンには以下の3大特典もついてきます!

  • 「最短1ヶ月で開発ができる学習方法」電子書籍(非売品)
  • 効率的なオリジナル学習カリキュラム
  • 未経験の転職(フリーランス)を可能にするキャリアサポート

上記の特典だけでも他のスクールにはないポイントだと自信を持っている無料体験レッスン特典です。

ただプログラミング学習をする毎日から、ワクワクしながらプログラミング学習できる毎日に変える体験を一度でいいのでしてみませんか?

無料体験レッスン予約はこちら

まとめ

いかがでしたか?

今回はrubyのif文について基本から応用まで一気にご紹介しました。

if文には条件がいくつ必要なのか、条件を満たさない場合も必要なのか、もしくは条件を満たさないことを期待した処理を書く必要があるのか、など様々なケースに対応する構文がありました。

if else や elsif そして、unlessや if notなど関連する条件判断の書き方は色々とありますが、ひとつひとつ実際に自分の手で動かして試してみることがマスターへの近道です。

そして、ぜひ本記事をブックマークして、if文の使い方を忘れた時はすぐに確認できるようにしておくことをオススメします。もし今後、if文に関して迷うことがあれば、ぜひこの記事を思い出して下さいね。

LINEで送る
Pocket

SEからWebエンジニアへ転職した理由

侍エンジニア塾卒業生の小池さんは、以前は社内SEとして約5年ほど勤務していました。しかし業務内容は社内のヘルプデスク対応など、プログラムを書く仕事は全くなかったそうです。

SEながらプログラムを書けない現状に「将来仕事がなくなるんじゃないか」と不安を感じ、プログラミング学習を決意。

弊社スクールで学習し、無事ベンチャー企業のプログラマーとして転職に成功しました。そんな小池さんの学習法や転職体験談を伺いましたので、是非ご覧ください。

「プログラミングができないSEは仕事がなくなる」不安を感じたSEが未経験から転職成功するまで
更新日 : 2019年10月7日

書いた人

湯浅 桃太郎

湯浅 桃太郎

20代は役者、30代はエンジニア、そして40代を迎えた現在、Webライターとして活動しながら、3人の息子たちの家庭教育、アンチエイジングなどにも力を入れて日々ノマドライフを楽しんでいます。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説