真偽値を返すメソッドを使いこなそう
学習の目標
本章では、以下の内容を学習します。
- 配列に特定の要素が含まれているかを確認する方法を理解する
- 文字列に特定の文字や部分文字列が含まれているかを確認する方法を習得する
- 配列や文字列、ハッシュが空かどうかを判定する方法を学ぶ
- 値が
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 = nilresult1 = name1.nil?puts "name1はnilか: #{result1}"
# 空でない値name2 = "太郎"result2 = name2.nil?puts "name2はnilか: #{result2}"
実行結果は以下のようになります。
name1はnilか: truename2は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か: falseemailの値: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のプログラミングでは頻繁に使用されるので、ぜひ使いこなせるようになりましょう。
Starterプランでより詳しく学習
この先のコンテンツを読むにはStarterプラン以上が必要です。より詳細な解説、実践的なサンプルコード、演習問題にアクセスして学習を深めましょう。