真偽値を理解しよう
学習の目標
本章では、以下の内容を学びます。
- 真偽値(true/false)の基本概念を理解する
- 比較演算子の使い方を習得する
- 論理演算子(AND/OR)の使い方を学ぶ
- 否定演算子の使い方を知る
はじめに
本章では、Rubyプログラミングにおいて重要な真偽値について学びます。
プログラムでは「はい/いいえ」の判断を頻繁に行います。例えば「ユーザーはログインしているか?」「入力された年齢は18歳以上か?」などの判断です。このような判断を行うための基礎となるのが真偽値です。
基本的な概念から、実際のコードを通して理解を深めていきましょう。
真偽値とは
プログラミングでは、「はい」か「いいえ」、「正しい」か「正しくない」のような、2つに1つの判断が必要な場面が多くあります。
Rubyではこのような「真」か「偽」かの値を真偽値と呼び、trueとfalseという2つの値で表現します。
irbを開いて、trueとfalseを表示してみましょう。
irb(main):001:0> puts truetrue=> nilirb(main):002:0> puts falsefalse=> nilこれらの値を使って、プログラムの中で様々な判断を行うことができます。例えば、「もし天気が晴れなら外出する」というような判断を真偽値を使って表現できます。
比較演算子を使ってみよう
比較演算子は、2つの値を比べて、その結果を真偽値で返します。日常生活でも「この数は5より大きいか?」「この2つは同じか?」などの比較をよく行いますが、それをプログラム上で行うための演算子です。
等値比較(==, !=)
まず、等しいかどうかを調べる==を見てみましょう。
irb(main):003:0> puts 5 == 5  # 5と5は等しいか?true=> nilirb(main):004:0> puts 5 == 3  # 5と3は等しいか?false=> nil次に、等しくないことを調べる!=です。これは「〜ではない」という意味を持ちます。
irb(main):005:0> puts 5 != 3  # 5と3は等しくないか?true=> nilirb(main):006:0> puts 5 != 5  # 5と5は等しくないか?false=> nil大小比較(>, <, >=, <=)
大小関係を調べる場合は、<(より小さい)や>(より大きい)を使います。
irb(main):007:0> puts 5 > 3   # 5は3より大きいか?true=> nilirb(main):008:0> puts 5 < 3   # 5は3より小さいか?false=> nilまた、以上(>=)や以下(<=)も使えます。これらは「より大きいか等しい」「より小さいか等しい」という意味です。
irb(main):009:0> puts 5 >= 5  # 5は5以上か?true=> nilirb(main):010:0> puts 5 <= 3  # 5は3以下か?false=> nil文字列や他のデータ型の比較
数値だけでなく、文字列や他のデータ型も比較できます。
irb(main):011:0> puts "hello" == "hello"  # 文字列の比較true=> nilirb(main):012:0> puts "hello" == "world"false=> nil文字列の場合、大文字と小文字は区別されます。
irb(main):013:0> puts "Ruby" == "ruby"false=> nilAND演算子とOR演算子
複数の条件を組み合わせるには、AND演算子(&&)とOR演算子(||)を使います。これらを使うことで、「AかつB」「AまたはB」のような複合条件を表現できます。
AND演算子(&&)
AND演算子は、左右の条件がどちらも真の場合にのみ、全体が真になります。つまり「AかつB」という条件を表します。
irb(main):014:0> puts true && true    # 真かつ真true=> nilirb(main):015:0> puts true && false   # 真かつ偽false=> nilirb(main):016:0> puts false && true   # 偽かつ真false=> nilirb(main):017:0> puts false && false  # 偽かつ偽false=> nilこの結果からわかるように、AND演算子は両方の条件がtrueの場合にのみtrueを返します。どちらか一方でもfalseであれば、結果はfalseになります。
OR演算子(||)
OR演算子は、左右の条件のどちらかが真であれば、全体が真になります。つまり「AまたはB」という条件を表します。
irb(main):018:0> puts true || true    # 真または真true=> nilirb(main):019:0> puts true || false   # 真または偽true=> nilirb(main):020:0> puts false || true   # 偽または真true=> nilirb(main):021:0> puts false || false  # 偽または偽false=> nilOR演算子はどちらか一方でもtrueであればtrueを返します。両方ともfalseの場合にのみ、結果はfalseになります。
複合条件の例
これらを組み合わせた実践的な例を見てみましょう。
例えば、年齢が20歳以上で、かつ学生ではない場合にtrueを返すプログラムは次のように書けます。
irb(main):022:0> age = 25=> 25irb(main):023:0> is_student = false=> falseirb(main):024:0> puts age >= 20 && !is_student  # 20歳以上かつ学生ではないtrue=> nilこのコードでは、年齢が20以上かを確認し、!is_studentで「学生ではない」という条件を確認しています。
否定演算子(!)
!は否定を表す演算子で、真偽値を反転させます。例を見てみましょう。
irb(main):025:0> puts !true   # 真の否定false=> nilirb(main):026:0> puts !false  # 偽の否定true=> nil
irb(main):027:0> is_sunny = true=> trueirb(main):028:0> puts !is_sunny  # 晴れではない(晴れの否定)false=> nil!演算子を使うことで、trueはfalseに、falseはtrueに変換されます。
これは条件を「〜ではない」と表現したい時に便利です。例えば「雨ではない」は!is_rainy、「閉店していない(営業中)」は!is_closedのように表現できます。
実用的な例
真偽値と各種演算子を使った実用的な例をいくつか見てみましょう。
アクセス制限の条件
ユーザーがコンテンツにアクセスできるかどうかを判断する条件です。
is_logged_in = truehas_subscription = trueis_admin = false
# ログインしていて、かつ(サブスクリプションがあるか管理者である)can_access = is_logged_in && (has_subscription || is_admin)
puts "アクセス可能: #{can_access}"  # trueこの例では、括弧を使って条件の評価順序を制御しています。まずhas_subscription || is_adminが評価され、その結果とis_logged_inがAND条件で結合されます。
年齢による判定
年齢に基づいて入場可能かどうかを判断する例です。
age = 16is_accompanied_by_adult = true
# 18歳以上、または大人同伴の場合に入場可能can_enter = age >= 18 || is_accompanied_by_adult
puts "入場可能: #{can_enter}"  # trueこの例では、OR演算子を使用して「18歳以上」または「大人同伴」のどちらかの条件が満たされれば入場可能としています。
まとめ
本章では、Rubyの真偽値について学びました。
真偽値(trueとfalse)は、プログラム内で条件判断を行うための基本的な要素です。
比較演算子(==, !=, >, <, >=, <=)を使うことで、値を比較して真偽値を得ることができます。
AND演算子(&&)とOR演算子(||)を使うことで、複数の条件を組み合わせることができます。
否定演算子(!)を使うことで、真偽値を反転させることができます。
これらの真偽値と演算子を使うことで、プログラムの中で様々な判断を行い、より柔軟で賢いプログラムを作成することができます。
Starterプランでより詳しく学習
この先のコンテンツを読むにはStarterプラン以上が必要です。より詳細な解説、実践的なサンプルコード、演習問題にアクセスして学習を深めましょう。