カテゴリ: Ruby 更新日: 2026/03/19

Rubyのif文とunless文を完全攻略!読みやすい条件分岐の書き方と基本

if/unless 基本文法:可読性を高める書き方とアンチパターン
if/unless 基本文法:可読性を高める書き方とアンチパターン

先生と生徒の会話形式で理解しよう

生徒

「Rubyで、もし雨が降ったら傘をさす、みたいな動きをプログラムにさせることはできますか?」

先生

「はい、Rubyでは if文 や unless文 を使うことで、条件に合わせて処理を分けることができますよ。」

生徒

「if文は何となく聞いたことがありますが、unless文というのは何ですか?」

先生

「unlessは、ifの反対で、もし何々でなければという意味になります。読みやすいコードを書くためにとても大切な要素なので、基本から順番に見ていきましょう!」

1. if文とは?条件分岐の基本を学ぼう

1. if文とは?条件分岐の基本を学ぼう
1. if文とは?条件分岐の基本を学ぼう

Rubyのプログラミングにおいて、最もよく使われる道具の一つがif文です。これは、特定の条件が満たされたときだけ、決まった命令を実行させるための仕組みです。現実の世界で例えるなら、もし冷蔵庫にプリンがあったら食べるという行動と同じです。プリンがあるという条件が正しいときにだけ、食べるという行動に移りますよね。このように、もしもといった状況をコンピュータに教えるのが条件分岐の役割です。

コンピュータの世界では、条件が正しいことを真(true/トゥルー)、正しくないことを偽(false/フォルス)と呼びます。if文の後に書いた条件が真であれば、その中身が実行されます。逆に偽であれば、何もせずに次の処理へと進みます。これをマスターするだけで、プログラムに知能を持たせたような複雑な動きを作ることができるようになります。

Rubyの文法を基礎からしっかり固めたい人や、 現場で役立つ「テスト駆動開発」の考え方まで身につけたい人には、 評価の高いこの一冊がおすすめです。

プロを目指す人のためのRuby入門をAmazonで見る

※ Amazon広告リンク

2. if文の書き方と簡単なプログラム例

2. if文の書き方と簡単なプログラム例
2. if文の書き方と簡単なプログラム例

それでは、実際にRubyでどのように書くのかを見ていきましょう。if文は、ifで始まり、条件を書き、実行したい処理を書いた後に、必ずendで締めくくるというルールがあります。このendを忘れてしまうと、コンピュータはどこまでがif文の中身なのか分からなくなってしまい、エラーという間違いの通知を出してしまいます。

まずは、数字を比較する簡単な例を見てみましょう。例えば、持っているお金が1000円以上なら、高いアイスを買うというプログラムです。比較には記号を使いますが、これは算数で習った不等号と同じ意味です。


money = 1500

if money >= 1000
  puts '高いアイスを買います!'
end

高いアイスを買います!

このコードでは、変数moneyに1500が入っています。1500は1000以上なので、条件は真となり、putsという命令によって画面に文字が表示されます。もしmoneyが500だったら、この文字は表示されません。このように、データの状態によって結果が変わるのがプログラミングの面白いところです。

3. unless文の役割と否定の条件

3. unless文の役割と否定の条件
3. unless文の役割と否定の条件

次に、Ruby特有の便利な命令であるunless文について解説します。unlessは、英語で何々でない限りという意味があります。プログラミングでは、もし条件が偽であれば実行するという動きをします。つまり、if文のちょうど反対の働きをするわけです。例えば、もし雨が降っていなければピクニックに行くといった、何々ではないときに何かをしたい場合に非常に役立ちます。

unless文を使う理由は、人間にとって読みやすいコードを書くためです。if文を使って何々でないという否定の条件を作ることもできますが、頭の中で二重否定のように考えなければならず、読み間違えの原因になります。unlessを使うことで、自然な言葉に近い形で条件を書くことができるようになります。ただし、unlessはif文よりも使いどころを選ぶ必要があります。


weather = '晴れ'

unless weather == '雨'
  puts 'ピクニックに出かけましょう!'
end

ピクニックに出かけましょう!

この例では、天気が雨ではないときにだけメッセージが表示されます。直感的で分かりやすいですね。Rubyを始めたばかりの人は、まずはif文を完璧に覚え、その後にunless文を添える感覚で学習を進めるのがスムーズです。

4. 読みやすいコードにするための後置ifと後置unless

4. 読みやすいコードにするための後置ifと後置unless
4. 読みやすいコードにするための後置ifと後置unless

Rubyには、コードをたった一行でスッキリと書くための後置(こうち)という書き方があります。これは、実行したい命令の後にifやunlessを書くスタイルです。通常は3行ほど必要になる処理が、たった1行に収まるため、非常にスマートに見えます。特に、短いメッセージを出したり、簡単なチェックを行ったりする際に好んで使われます。

ただし、あまりに長い条件を後ろに書くと、何を実行しようとしているのかが分かりにくくなってしまいます。読みやすさ、つまり可読性(かどくせい)を常に意識することが大切です。可読性が高いコードは、自分以外の人が見たときや、数ヶ月後の自分が読み返したときに、すぐに意味が理解できる良いコードのことです。


score = 90

puts '合格です!' if score >= 80

合格です!

この書き方をすると、もしスコアが80以上なら合格ですと表示せよという自然な文章のように読めますね。複雑な計算が必要ない場合は、積極的に使ってみるとコードが綺麗になります。

5. unless文でelseを使わないのが鉄則!アンチパターンを避ける

5. unless文でelseを使わないのが鉄則!アンチパターンを避ける
5. unless文でelseを使わないのが鉄則!アンチパターンを避ける

プログラミングには、やってはいけない書き方、いわゆるアンチパターンが存在します。unless文において最大のアンチパターンは、elseを一緒に使うことです。これは初心者の方が最も陥りやすい罠です。unlessの中でelseを使うと、もし何々でなければAを行い、そうでない場合(つまり何々である場合)はBを行うという、非常に複雑な思考を強いるコードになってしまいます。

人間は否定の否定を瞬時に理解するのが苦手です。もしelseを使いたい状況になったら、迷わずunlessを普通のif文に書き換えましょう。Rubyの設計者も、unless文でelseを使うことは推奨していません。シンプルに保つことが、バグというプログラムの間違いを防ぐための最も強力な武器になります。


# 悪い例(アンチパターン)
unless user_active
  puts '停止中です'
else
  puts '活動中です' # 結局どちらが実行されるか混乱する
end

# 良い例(if文で書き直す)
if user_active
  puts '活動中です'
else
  puts '停止中です'
end

このように書き換えるだけで、一気に意味が通りやすくなります。コードは書く時間よりも読まれる時間の方が圧倒的に長いため、常に読み手への優しさを忘れないようにしましょう。

6. 複雑な条件をスッキリ見せるテクニック

6. 複雑な条件をスッキリ見せるテクニック
6. 複雑な条件をスッキリ見せるテクニック

プログラムを作っていると、条件が一つだけではなく、AかつBであるときや、CまたはDであるときのように、複数の条件を組み合わせたくなることがあります。しかし、これらを一つのif文に詰め込みすぎると、コードが横に長く伸びてしまい、非常に読みにくくなります。このような場合は、条件を一度別の名前(変数)に保存する、といった工夫が必要です。

また、if文の中にさらにif文を書くネスト(入れ子)という状態も、可読性を下げる要因になります。できるだけネストを浅く保ち、早めに処理を終わらせる書き方を意識すると、驚くほどスッキリとしたプログラムになります。Rubyの自由度の高さを活かして、美しく整頓されたコードを目指しましょう。

7. 真偽値以外の評価!Rubyのif文の秘密

7. 真偽値以外の評価!Rubyのif文の秘密
7. 真偽値以外の評価!Rubyのif文の秘密

最後に、Rubyの少し特殊な性質についてお話しします。Rubyでは、truefalseそのものだけでなく、あらゆるデータが真か偽として判定されます。具体的には、falsenil(ニル)というデータ以外は、すべてとして扱われます。nilとは、何もない、空っぽであることを表す特別な言葉です。例えば、数字の0や空の文字も、Rubyのif文では真として扱われることに注意してください。

この性質を理解しておくと、データが存在するかどうかをチェックするコードがとても短く書けるようになります。パソコンを触ったことがない人には少し驚きかもしれませんが、Rubyはとても柔軟な言語なのです。基本のif文とunless文を適切に使い分け、読みやすいプログラムを書く喜びを感じてみてください。

関連記事:

関連記事なし

カテゴリの一覧へ
新着記事
New1
Ruby
Rubyのシンボル(:symbol)入門!初心者でもわかる軽量・高速・イミュータブルの特徴と使い方
New2
Ruby
Rubyのヒアドキュメント完全ガイド!初心者でもわかる<<-と<<~の違いとインデント調整のコツ
New3
Rails
Railsのi18n完全入門!lazy lookupの使い方と省略記法を初心者向けにやさしく解説
New4
Rails
YarnとNPMの違いと使い分け方を徹底解説!初心者でもわかるフロントエンド依存管理の基本
人気記事
No.1
Java&Spring記事人気No1
Rails
Railsメール確認(confirmable)の実装手順を完全ガイド!初心者でもわかる有効化リンクと期限設定
No.2
Java&Spring記事人気No2
Ruby
WindowsでRubyをインストールする方法!RubyInstallerとMSYS2を使った完全ガイド
No.3
Java&Spring記事人気No3
Ruby
プロキシ環境でも安心!社内ネットワーク下でのRuby gemインストール完全ガイド【SSL対応も解説】
No.4
Java&Spring記事人気No4
Ruby
RubyのEnumerable完全解説!cycle・zipで繰り返しの達人になろう
No.5
Java&Spring記事人気No5
Ruby
Gemとは?RubyGemsとBundlerを初心者向けに完全解説!依存関係管理も図解でわかりやすく理解
No.6
Java&Spring記事人気No6
Ruby
RubyのEnumerable高速化ガイド!N+1問題や無駄なループを減らす最適化テクニック
No.7
Java&Spring記事人気No7
Rails
asdfで複数言語を一元管理:Ruby/Node/psql をまとめてセットアップ
No.8
Java&Spring記事人気No8
データベース
Redis(レディス)をキャッシュとして使う基本ガイド!初心者でもわかる高速化の仕組み