カテゴリ: Ruby 更新日: 2025/12/21

Rubyのcase-when文を完全ガイド!初心者でもわかるthen・ガード条件・パターンマッチの使い方

case-when文の使い方:then・ガード条件・パターンマッチを徹底解説
case-when文の使い方:then・ガード条件・パターンマッチを徹底解説

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

生徒

「Rubyで条件をたくさん分けたいとき、if文だと長くなって読みにくいんですが、もっと簡単に書ける方法はありますか?」

先生

「そのときに便利なのがcase-when文です。複数の条件をきれいに整理して書くことができますよ。」

生徒

「なるほど!if文よりも見やすいんですか?」

先生

「はい。さらにRubyではthenガード条件パターンマッチといった機能もあって、柔軟に使い分けられるんです。それでは基本から見ていきましょう。」

1. case-when文とは?

1. case-when文とは?
1. case-when文とは?

Rubyのcase-when文は、ひとつの値に対して複数の条件を分けて処理するための構文です。if文を何回も書くよりも、すっきりと整理できるのが特徴です。


score = 85

case score
when 100
  puts "満点です!"
when 70..99
  puts "合格です"
when 50..69
  puts "あと少し頑張りましょう"
else
  puts "不合格です"
end

合格です

このように、点数によって異なるメッセージを表示することができます。if文を連続で書くよりも、条件が整理されていて読みやすいのがわかります。

2. thenを使った省略記法

2. thenを使った省略記法
2. thenを使った省略記法

Rubyのwhenの後にthenを書くことで、処理を1行で書けます。短い処理をするときに便利です。


day = "月曜日"

case day
when "月曜日" then puts "週の始まりです"
when "金曜日" then puts "明日はお休みです"
else puts "普通の日です"
end

週の始まりです

ただし、処理が複数行になるときは改行して書いた方が読みやすいので、状況に応じて使い分けましょう。

3. ガード条件を使った柔軟な分岐

3. ガード条件を使った柔軟な分岐
3. ガード条件を使った柔軟な分岐

case-when文では、ifを組み合わせて「ガード条件」を追加できます。ガード条件とは、「さらに条件を絞り込むための条件」のことです。


age = 20

case age
when 0..12
  puts "子どもです"
when 13..19
  puts "ティーンエイジャーです"
when 20..29 if age.even?
  puts "20代で偶数の年齢です"
when 20..29
  puts "20代です"
else
  puts "30歳以上です"
end

20代で偶数の年齢です

この例では「20代」の中でもさらに偶数の年齢かどうかを分けています。ガード条件を使うと、複雑な条件をきれいに整理して書くことができます。

4. パターンマッチの活用

4. パターンマッチの活用
4. パターンマッチの活用

Ruby 2.7以降では、case文でパターンマッチが使えるようになりました。これは、値の形や構造に応じて条件分岐できる新しい機能です。


user = {name: "太郎", age: 18}

case user
in {name: "太郎", age: 18}
  puts "太郎さんは18歳です"
in {name: "花子", age: 20}
  puts "花子さんは20歳です"
else
  puts "データが一致しません"
end

太郎さんは18歳です

このように、ハッシュの内容をそのまま条件にして判定できます。従来のif文では煩雑になりがちな処理を、シンプルに表現できるのがメリットです。

5. 複数の値をまとめて判定する

5. 複数の値をまとめて判定する
5. 複数の値をまとめて判定する

whenではカンマで区切ることで、複数の値を同時に判定できます。


fruit = "りんご"

case fruit
when "りんご", "みかん", "ぶどう"
  puts "フルーツです"
when "にんじん", "キャベツ"
  puts "野菜です"
else
  puts "不明です"
end

フルーツです

この書き方を覚えておくと、同じ種類に分類したい条件を簡単にまとめられます。

6. case-when文を使うときの読みやすさのコツ

6. case-when文を使うときの読みやすさのコツ
6. case-when文を使うときの読みやすさのコツ

初心者の方がRubyでcase-whenを使うときに気をつけると良いポイントをまとめます。

  • インデントを揃えて、条件と処理を見やすくする
  • 処理が短いときはthenを活用する
  • 複雑な条件にはガード条件を使う
  • データ構造を扱うときはパターンマッチが便利
  • 複数の値をまとめるときはカンマ区切りを活用

Rubyは「人間が読みやすいコード」を大切にしている言語なので、読みやすさを意識した書き方を心がけましょう。

まとめ

まとめ
まとめ

Rubyのcase-when文は、複数の条件を自然な流れで整理できる書き方として非常に便利で、if文を重ねるよりも読みやすく、処理内容も明確に表現できる構文です。特に、日常的な分岐処理やデータの分類、複雑な条件を扱う場面では、thenを使った一行記述や、ガード条件による細かい絞り込み、Ruby 2.7以降で加わったパターンマッチによる構造的な判定が非常に役立ちます。これらの組み合わせによって、単純な条件分岐からハッシュや配列の構造を判定するような高度な処理まで、柔軟に書けるのがRubyらしい魅力です。 また、複数の値をカンマでまとめて判定する書き方も覚えておくと、似た処理を多数書く必要がなくなるため、コードの整理と可読性向上に貢献します。読みやすいコードはそのままバグの減少にもつながり、初心者から上級者まで大切にしたいポイントです。特に全体の流れを把握しやすくするためには、インデントや改行の位置を意識し、処理内容がひと目で分かるように構造を整えることが欠かせません。 ここでは、今回の記事で扱った重要なポイントを振り返りつつ、シンプルな例を交えて再確認できるように構成しています。基本的なcase-whenの使い方に加えて、実際の開発でも活用しやすい工夫を踏まえて理解を深めていきましょう。

case-when文の復習コード

まずは、複数の条件を分けるときに最も基本となる書き方を改めて整理しておきます。Rubyの特徴である「読みやすさ」を最大限に活かせる書き方です。


value = {type: "食べ物", name: "りんご"}

case value
in {type: "食べ物", name: "りんご"}
  puts "りんごは食べ物です"
in {type: "食べ物", name: "みかん"}
  puts "みかんは食べ物です"
in {type: "野菜", name: "にんじん"}
  puts "にんじんは野菜です"
else
  puts "分類できません"
end

この例では、パターンマッチを使ってハッシュの内容に応じた処理を選び分けています。元の記事の流れに沿ったRubyの自然な書き方で、複雑な条件を扱うときに非常に役立つ表現です。

thenを使った自然な書き方

処理が短いときは、thenを活用すると読みやすく、コード量も減らせます。ひと目で結果がわかる書き方ができるため、日常的な処理で重宝します。


weather = "晴れ"

case weather
when "晴れ" then puts "おでかけ日和です"
when "雨"   then puts "傘を忘れずに"
when "雪"   then puts "足元に気をつけましょう"
else puts "普通の一日です"
end

実際のアプリでも利用しやすい書き方で、短い条件分岐にはとても向いています。

ガード条件でより柔軟に判定

ガード条件を組み合わせることで、同じ条件範囲の中でもさらに細かな判定ができます。特に年齢や数値の範囲を扱う場面では、より自然な表現で分岐させることが可能です。


age = 24

case age
when 20..29 if age.odd?
  puts "20代で奇数の年齢です"
when 20..29
  puts "20代です"
else
  puts "対象外です"
end

同じ20代でも「偶数か奇数か」といった細かな違いを表現でき、より現実的な条件分岐に対応できます。

複数の値をまとめて判定する利点

カンマ区切りのwhenを使うと、同じ種類に分類したい処理をまとめて扱えるため、冗長なコードを避けることができます。これはRubyの構文の中でも特に便利なポイントで、自然な分類処理を簡潔に表現できます。


color = "赤"

case color
when "赤", "青", "黄"
  puts "原色です"
when "白", "黒"
  puts "ベーシックカラーです"
else
  puts "その他の色です"
end

このように、色や種類をグループ分けする処理は、カンマ区切りを使うだけで格段に書きやすくなります。

先生と生徒の振り返り会話

生徒

「今日はcase-when文の便利さがよくわかりました!if文ばかりで書くより見通しがよくて驚きました。」

先生

「そうですね。Rubyの魅力のひとつは読みやすさです。case-when文はその特徴をよく表している構文ですよ。」

生徒

「ガード条件やパターンマッチも便利でした。実際に書いてみると理解が深まりそうです!」

先生

「ぜひ自分でもいろいろ試してみてください。同じ分岐でも複数の書き方があるので、自然と読みやすいコードを書く力がついていきますよ。」

生徒

「パターンマッチは特に面白かったです!複雑なデータを扱うときに役立ちそうですね。」

先生

「その通りです。今回学んだ内容はRubyの応用にも広がるので、ぜひ積極的に使ってみてくださいね。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Rubyのcase-when文とは何ですか?初心者向けに教えてください。

Rubyのcase-when文は、ひとつの値に対して複数の条件分岐をまとめて記述できる構文です。複数のif文を使うよりも、コードをすっきりと整理できるため、初心者にとっても読みやすく便利です。
関連記事:
カテゴリの一覧へ
新着記事
New1
データベース
SQLの処理が遅くなる原因とは?初心者向けにデータベースパフォーマンス最適化を完全解説
New2
Ruby
RubyのネストHash操作を徹底解説!digとtransformメソッドで複雑なデータも楽々
New3
Rails
Railsインデックス設計の極意!爆速サイトを作るためのスキーマ設計ガイド
New4
データベース
SQLのCOMMITとROLLBACKとは?トランザクション操作を初心者向けに完全解説
人気記事
No.1
Java&Spring記事人気No1
Ruby
PATHと環境変数の正しい設定!Windows・Mac・Linux別チェックリスト付き
No.2
Java&Spring記事人気No2
Rails
Railsで日本語と時刻の設定をしよう!初心者でも安心のlocale/zone初期設定チートシート
No.3
Java&Spring記事人気No3
Ruby
Rubyのハッシュを徹底比較!シンボルキーと文字列キーの違いと使い分け
No.4
Java&Spring記事人気No4
Rails
Railsマイグレーションの型選びを完全ガイド!初心者が迷わないカラム設計
No.5
Java&Spring記事人気No5
Ruby
WindowsでRubyをインストールする方法!RubyInstallerとMSYS2を使った完全ガイド
No.6
Java&Spring記事人気No6
Rails
RailsモデルとActive Record基礎|ID戦略を完全理解!AUTO INCREMENT・UUID・ULIDの比較と導入手順
No.7
Java&Spring記事人気No7
Rails
RailsモデルとActive Record基礎|クエリログの読み方を理解してEXPLAIN・joins・includesの違いを学ぼう
No.8
Java&Spring記事人気No8
データベース
ACID特性とは?データベーストランザクションの信頼性を初心者向けに徹底解説