真偽値を返すメソッドを使いこなそう

学習の目標

本章では、以下の内容を学習します。

  • 配列に特定の要素が含まれているかを確認する方法を理解する
  • 文字列に特定の文字や部分文字列が含まれているかを確認する方法を習得する
  • 配列や文字列、ハッシュが空かどうかを判定する方法を学ぶ
  • 値がnilかどうかを判定する方法を理解する
  • 真偽値を返すメソッドをプログラムで活用する方法を習得する

はじめに

プログラミングでは、「このデータには特定の値が含まれているか?」「このデータは空なのか?」などの判断をする場面がよくあります。例えば、ユーザーの入力した値が有効かどうかをチェックしたり、データベースから取得した結果が空かどうかを確認したりする場合です。

Rubyでは、このような判断をするための便利なメソッドがいくつも用意されています。これらのメソッドは、結果として真(true)または偽(false)という真偽値を返します。

本章では、配列、文字列、ハッシュなどで使える真偽値を返す便利なメソッドを学んでいきましょう。これらを使いこなせるようになると、プログラムの条件分岐がとても書きやすくなります。

配列に要素が含まれているかを確認する

include?メソッドの基本

配列に特定の要素が含まれているかを確認するには、include?メソッドを使います。このメソッドは、配列に引数で指定した要素が含まれていればtrueを、含まれていなければfalseを返します。

VS Codeでboolean_methods.rbというファイルを作成し、以下のコードを入力してみましょう。

numbers = [1, 2, 3, 4, 5]
# 3が含まれているかを確認
result1 = numbers.include?(3)
puts "配列に3が含まれているか: #{result1}"
# 10が含まれているかを確認
result2 = numbers.include?(10)
puts "配列に10が含まれているか: #{result2}"

このプログラムを実行すると、次のような結果が表示されます。

配列に3が含まれているか: true
配列に10が含まれているか: false

include?メソッドは、配列に要素が存在するかどうかを簡単に確認できる便利なメソッドです。例えば、ユーザーが選択した項目が許可されたリストに含まれているかをチェックするような場面で使えます。

文字列の配列での使用例

include?メソッドは数値だけでなく、文字列の配列でも同様に使えます。

fruits = ["りんご", "バナナ", "オレンジ"]
# "バナナ"が含まれているかを確認
result1 = fruits.include?("バナナ")
puts "配列に「バナナ」が含まれているか: #{result1}"
# "ぶどう"が含まれているかを確認
result2 = fruits.include?("ぶどう")
puts "配列に「ぶどう」が含まれているか: #{result2}"

実行結果は以下のようになります。

配列に「バナナ」が含まれているか: true
配列に「ぶどう」が含まれているか: false

このように、include?メソッドは配列の中に特定の要素があるかどうかを簡単に確認できます。配列の中を一つずつ調べなくても、このメソッドを使えば一行で判定できるので便利です。

文字列に特定の文字が含まれているかを確認する

文字列での include? メソッド

include?メソッドは文字列でも使えます。文字列に対して使う場合は、引数で指定した文字や部分文字列が含まれているかどうかを確認します。

message = "Hello World"
# "World"が含まれているかを確認
result1 = message.include?("World")
puts "「Hello World」に「World」が含まれているか: #{result1}"
# "Ruby"が含まれているかを確認
result2 = message.include?("Ruby")
puts "「Hello World」に「Ruby」が含まれているか: #{result2}"

実行結果は以下のようになります。

「Hello World」に「World」が含まれているか: true
「Hello World」に「Ruby」が含まれているか: false

文字列に対するinclude?メソッドは、部分文字列を検索する場合に便利です。例えば、ユーザーのコメントの中に特定のキーワードが含まれているかをチェックする場合などに使えます。

大文字・小文字を区別する

文字列のinclude?メソッドは、デフォルトでは大文字と小文字を区別します。例えば、"Hello"と"hello"は異なる文字列として扱われます。

message = "Hello World"
# 大文字の"World"で検索
result1 = message.include?("World")
puts "「Hello World」に「World」が含まれているか: #{result1}"
# 小文字の"world"で検索
result2 = message.include?("world")
puts "「Hello World」に「world」が含まれているか: #{result2}"

実行結果は以下のようになります。

「Hello World」に「World」が含まれているか: true
「Hello World」に「world」が含まれているか: false

大文字・小文字を区別せずに検索したい場合は、検索する前に両方の文字列を大文字(または小文字)に変換すると良いでしょう。

message = "Hello World"
search_term = "world"
# 両方を小文字に変換して検索
result = message.downcase.include?(search_term.downcase)
puts "大文字小文字を区別せずに「world」が含まれているか: #{result}"

実行結果は以下のようになります。

大文字小文字を区別せずに「world」が含まれているか: true

空かどうかを確認する

empty?メソッドの使い方

配列、文字列、ハッシュが空かどうかを確認するには、empty?メソッドを使います。このメソッドは、対象が空であればtrueを、空でなければfalseを返します。

配列が空かどうかを確認する

# 空の配列
empty_array = []
result1 = empty_array.empty?
puts "空の配列は空か: #{result1}"
# 要素を持つ配列
non_empty_array = [1, 2, 3]
result2 = non_empty_array.empty?
puts "要素を持つ配列は空か: #{result2}"

実行結果は以下のようになります。

空の配列は空か: true
要素を持つ配列は空か: false

文字列が空かどうかを確認する

# 空の文字列
empty_string = ""
result1 = empty_string.empty?
puts "空の文字列は空か: #{result1}"
# 空でない文字列
non_empty_string = "Hello"
result2 = non_empty_string.empty?
puts "空でない文字列は空か: #{result2}"

実行結果は以下のようになります。

空の文字列は空か: true
空でない文字列は空か: false

ハッシュが空かどうかを確認する

# 空のハッシュ
empty_hash = {}
result1 = empty_hash.empty?
puts "空のハッシュは空か: #{result1}"
# 要素を持つハッシュ
non_empty_hash = {name: "太郎", age: 20}
result2 = non_empty_hash.empty?
puts "要素を持つハッシュは空か: #{result2}"

実行結果は以下のようになります。

空のハッシュは空か: true
要素を持つハッシュは空か: false

empty?メソッドは、データが空かどうかを簡単に確認できる便利なメソッドです。例えば、ユーザーから入力されたデータが空でないかをチェックしたり、検索結果が空かどうかを判定したりする場面で使えます。

値が存在するかどうかを確認する

nil?メソッド

値がnil(何も存在しない状態)かどうかを確認するには、nil?メソッドを使います。このメソッドは、対象がnilであればtrueを、そうでなければfalseを返します。

# nilの値
name1 = nil
result1 = name1.nil?
puts "name1はnilか: #{result1}"
# 空でない値
name2 = "太郎"
result2 = name2.nil?
puts "name2はnilか: #{result2}"

実行結果は以下のようになります。

name1はnilか: true
name2はnilか: false

nil?メソッドは、変数に値が設定されているかどうかを確認するのに便利です。例えば、データベースから取得した結果が存在するかどうかをチェックする場合などに使えます。

ハッシュでの存在しないキーの参照

ハッシュで存在しないキーを参照すると、デフォルトではnilが返されます。この性質を利用して、特定のキーが存在するかどうかを確認できます。

user = {name: "太郎", age: 20}
# 存在するキーを参照
name = user[:name]
puts "nameの値: #{name}"
puts "nameはnilか: #{name.nil?}"
# 存在しないキーを参照
email = user[:email]
puts "emailの値: #{email}"
puts "emailはnilか: #{email.nil?}"

実行結果は以下のようになります。

nameの値: 太郎
nameはnilか: false
emailの値:
emailはnilか: true

この例では、:emailキーはハッシュ内に存在しないため、user[:email]の結果はnilとなります。そのため、nil?メソッドはtrueを返します。

これを活用して、ハッシュ内に特定のキーが存在するかどうかを簡単に確認できます。

真偽値メソッドを条件分岐で使う

これまで学んだ真偽値を返すメソッドは、if文などの条件分岐と組み合わせて使うことで、より実用的なプログラムを書くことができます。

fruits = ["りんご", "バナナ", "オレンジ"]
search_fruit = "ぶどう"
if fruits.include?(search_fruit)
puts "#{search_fruit}が見つかりました。"
else
puts "#{search_fruit}は見つかりませんでした。"
end
user_input = ""
if user_input.empty?
puts "何か入力してください。"
else
puts "入力されたテキスト: #{user_input}"
end
user = {name: "太郎", age: 20}
if user[:email].nil?
puts "メールアドレスが設定されていません。"
else
puts "メールアドレス: #{user[:email]}"
end

実行結果は以下のようになります。

ぶどうは見つかりませんでした。
何か入力してください。
メールアドレスが設定されていません。

このように、真偽値を返すメソッドは条件分岐と組み合わせて使うことで、より読みやすく効率的なコードを書くことができます。

まとめ

本章では、Rubyの真偽値を返すメソッドについて学びました。以下のポイントを理解できたことと思います。

  • include?メソッドを使うと、配列や文字列に特定の要素や部分文字列が含まれているかを確認できる
  • empty?メソッドを使うと、配列、文字列、ハッシュが空かどうかを確認できる
  • nil?メソッドを使うと、値がnilかどうかを確認できる
  • これらのメソッドは条件分岐と組み合わせることで、より読みやすく効率的なコードを書ける

これらのメソッドは、プログラムの中でデータの状態を確認し、それに応じた処理を行うために非常に便利です。Rubyのプログラミングでは頻繁に使用されるので、ぜひ使いこなせるようになりましょう。

このセクションは有料サブスクリプションへの登録、またはログインが必要です。完全なコンテンツにアクセスするには、料金ページ(/pricing)をご覧ください。購入済みの場合は、ログインしてください。

Starterプランでより詳しく学習

この先のコンテンツを読むにはStarterプラン以上が必要です。より詳細な解説、実践的なサンプルコード、演習問題にアクセスして学習を深めましょう。

作成者:とまだ
Previous
配列を並び替えてみよう