Rubyというと、まつもとゆきひろ氏のイメージや日本で誕生したプログラミング言語、といった華やかな雰囲気があります。よって、どうしても特別なものとして見がちですよね。

Rubyは順次・選択・反復という制御構造をもちます。これは他の言語と変わりません。本記事で取り上げる、条件分岐を実装するときに使う「ifとelse」も、他言語とそう変わらない特徴のその一つです。

本記事では、Rubyにおける条件分岐やifとelseについて、さらにRuby特有の、

・ifの反対のunless
・正規表現を直接ifの条件式に入れる

といった特徴に触れます。
[linkPoteCan word=Rubyへのスキルチェンジを目指すなら! ]

Rubyのif else 基本形

Rubyの if else は以下が基本形です。

if 式
  (処理)
elsif 式
  (処理)
else 式
  (処理)
end

他言語を経験された方は、あまりにおなじみの形式なので拍子抜けしたのではないでしょうか?強いていうなら、JavaやPHPと異なり、elseifではなくelsifと、eがないことくらいでしょうか。

早速Rubyのif文を書いてみましょう。入力した値がpotepanなら「入力した値はポテパンです!」と表示し、そうでなければ「ポテパンじゃありません…」と表示させます。

print "文字を入力してください:"

str = gets.chomp

if str == "potepan"
    print 'ポテパンです!'
else
    print 'ポテパンじゃありません...'
end

chompメソッドは、入力値の最後の改行を除去します。実行後、pateponと入力してEnterします。

[実行結果]

ポテパンじゃありません...

次に、potepanと入力してEnterします。

[実行結果]

ポテパンです!

この例ではpotepanと等しいかそうでないかという2つの条件分岐でした。では、3つの条件分岐になるとこうなります。例として、入力値がゼロまたは正負のいずれかを判断します。gets.chompの次に付けたto_iは、文字列を数値に変換するメソッドです。

print "数値を入力してください:"

i = gets.chomp.to_i

if i == 0 
    print "ゼロです"
elsif i < 0
    print "負数です"
else
    print "正数です"
end

これで、入力値に応じてゼロまたは正負かを判断して結果を表示します。
[linkPoteCan word=3ヶ月間のRuby実践研修プログラムはこちら ]

条件式が1つならRubyのifはシンプルに

条件が1つだけの場合、よりシンプルな記述ができます。

処理 if 条件式

これをif修飾子といいます。if以降の条件式がtrueを返せば、ifの左の処理を実行し結果を戻り値として返します。条件式がfalseを返すと、処理結果はnilになります。具体例を示します。

print "数値を入力してください:"

i = gets.chomp.to_i

print "ゼロです" if i == 0

ゼロを入力した場合のみ「ゼロです」と表示されます。それ以外の数値を入力した場合、処理が実行されず、戻り値はnilになります。

ifとは逆のunless

Rubyにはifの動作に似たunlessというものがあります。これはifとは逆で、条件式がfalseを返すときに処理を実行します。falseになることが普通の条件式によく使います。

以下が基本形です。

unless 式
  (処理)
else
  (処理)
end

ifと異なり、elsifは使えません

unlessを使い、前述ifで紹介したコードを実装してみましょう。通常は何でも入力するけど、たまたまpotepanと入力したときに「ポテパンです!」と表示させる仕様と思ってください。

print "文字を入力してください:"

str = gets.chomp

unless str == "potepan"
    print "ポテパンじゃありません..."
else
    print "ポテパンです!!"
end

pateponと入力してEnterを押下します。

[実行結果]

ポテパンじゃありません・・・

ifと逆の動作をすることがお分かりいただけたでしょうか。
[linkPotefuri word=フリーランス案件をお探しの方はこちら ]

unlessにもある省略形

ifと同じく、unlessにも省略形が存在します。unless修飾子といいます。

処理 unless 条件式

具体的に実装は以下のようになります。

print "数値を入力してください:"

i = gets.chomp.to_i

print "ゼロ以外です" unless i == 0

ゼロ以外を入力すればゼロ以外です、と表示され、ゼロを入力したら何も表示されません。

if修飾子と逆の動作になったことがわかります。

Rubyではifに正規表現が使える

Rubyでは、ifの条件式に正規表現を使うことが可能です。正規表現をifの条件式に記述して・・・というのはどの言語でもありますが、Rubyではこうなります。文字列がメールアドレスかどうかを正規表現で確認してみましょう。

print "メールアドレスを入力してください:"

str = gets.chomp

if str =~ /\A[a-zA-Z0-9_\#!$%&`'*+\-{|}~^\/=?\.]+@[a-zA-Z0-9][a-zA-Z0-9\.-]+\z/
    print "メールアドレスの形式です"
else
    print "メールアドレスの形式ではありません"
end

メールアドレスの形式かどうかによって、メッセージを振り分けています。

ifの条件式の演算子に=~を使うと、ifの条件式の中に直接正規表現を書くことができます。専用のメソッドなり関数なりを呼び出して、戻り値を取って・・・とする必要はないので、シンプルですね。

まとめ

意外と普通といいながら、変わった特徴を含んだifとulessを解説しました。Rubyでコーディングする上で条件分岐は必ずマスターする必要があります。条件式を変えたり、ifで書いたものをunlessで書き直したりしてマスターしてくださいね!

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。