【Ruby】レッスン3-04:真偽値を返すメソッドの書き方と活用例を学ぼう

50110130

一つ前のページではメソッドの戻り値について学習しました。

今回は 真偽値を返すメソッド について見ていきましょう。

Lesson1:基礎文法編
Lesson2:制御構造編
Lesson3:メソッド

 ・Lesson3-1:メソッドの基本を理解しよう
 ・Lesson3-2:デフォルト引数とキーワード引数を理解しよう
 ・Lesson3-3:メソッドの戻り値を理解しよう
 ・Lesson3-4:真偽値を返すメソッドを理解しよう ◁今回はココ
 ・Lesson3-5:エラーメッセージを読めるようになろう
 ・Lesson3-6:例外処理を理解しよう
 ・確認問題3-☆1:石取りゲームを作ろう
 ・確認問題3-☆2:丁半賭博ゲームを作ろう
Lesson4:コレクション
Lesson5:オブジェクト指向編

<<前のページ

Rubyの記事一覧

次のページ>>

Rubyの「真偽値メソッド」とは|true/falseを返す基本構文

Rubyにはメソッドが true または false といった真偽値を返すメソッドがあります。

主に条件式の判定に使用されるこれらのメソッドは、メソッド名の末尾に「?」を付けるのが特徴で、プログラムの可読性を向上させる役割も担っています。

ここでは真偽値を返すメソッドの基本的な使い方や、定義の方法について解説します。

真偽値を返すメソッドの定義方法

Rubyではメソッド名の末尾に「?」を付けることで、そのメソッドが真偽値を返すことを示すことができます。

これはRubyの命名規則の一つで、他のプログラミング言語にはない特徴です。

例えば「empty?」や「include?」といったメソッドは、名前の通り「空であるか?」「含んでいるか?」といった判定を行い、その結果に応じて true または false を返します。

このような命名規則は、コードを読む際に直感的にメソッドの役割を理解できるため、コードの可読性が向上します。

真偽値を返すメソッドを作成する際には次のような構造が一般的です。

def メソッド名(引数)
  条件 ? true : false
end

単に条件式を記述するだけで、その評価結果(true または false)が返されるため、条件式を直接返すシンプルな書き方もよく使用されます。

コード例と実際の使い方

以下は真偽値を返すメソッドの例です。

# 偶数かどうかを判定するメソッド
def even?(number)
  number % 2 == 0
end

# 配列が空かどうかを判定するメソッド
def array_empty?(array)
  array.empty?
end

このコードではeven? メソッドが「与えられた数が偶数であるか」を判定し、true または false を返します。

またarray_empty? メソッドは「配列が空であるか」を判定し、結果に応じて true または false を返します。

これらのメソッドは条件式での判定によく使用され、以下のような場面で役立ちます。

number = 4
if even?(number)
  puts "#{number}は偶数です"
else
  puts "#{number}は奇数です"
end

my_array = []
if array_empty?(my_array)
  puts "配列は空です"
else
  puts "配列には要素が含まれています"
end

上記のように真偽値を返すメソッドを使うことで、条件判定が簡潔で読みやすいコードになります。

※配列については第4章で細かく説明します。

真偽値メソッドの利点

真偽値を返すメソッドはコードの可読性と表現力を向上させる利点があります。

たとえば「偶数かどうか」「空かどうか」などの判定を行う際、直接的に条件式を書くよりも、こうしたメソッドを利用することで、コードの意図が明確に伝わりやすくなります。

また条件式で「if even?(number)」のように使うことで、コードが自然な日本語のように読めることも特徴です。

まとめ

【初心者向け】Rubyのメソッドと例外処理と使い方を分かりやすくまとめた概念図と使用例。 特にメソッドの呼び出しや戻り値、デフォルト引数とキーワード引数、例外処理の仕組みについて視覚的に理解できるようまとめている。

Rubyの真偽値を返すメソッドは、メソッド名の末尾に「?」を付ける命名規則が特徴で、条件式の判定に広く活用されています。

これらのメソッドを使うことでコードがシンプルかつ直感的に理解できるようになり、Rubyらしい表現が可能です。

次の学習ではメソッドのスコープについて学び、Rubyのメソッドについてさらに理解を深めていきましょう。

練習問題|真偽値メソッドで奇数を判定しよう

真偽値を返すメソッドをしっかりと身に着けるため、練習問題に挑戦しましょう。

「真偽値を返すメソッド」の練習問題

Rubyで「奇数かどうかを判定するメソッド」を作成してみましょう。

このメソッドは引数として数値を受け取り、奇数の場合には true を返し、偶数の場合には false を返します。

ユーザーに数値を入力してもらい、その数値が奇数か偶数かを判定し、結果を出力するプログラムを完成させてください。

以下の要件に従ってコードを完成させてください。

  1. odd_number? という名前のメソッドを作成すること
    • メソッド odd_number? は数値 number を引数として受け取ること
    • number が奇数の場合は true、偶数の場合は false を返すこと
  2. ユーザーに数値の入力を促すメッセージを表示すること(例: "数字を入力してください:"
  3. ユーザーの入力値を整数として受け取り、odd_number? メソッドを使用して奇数か偶数かを判定すること
  4. 判定結果を画面に出力すること(例: "入力された数値は奇数です。" または "入力された数値は偶数です。"

ただし、以下のような実行結果となるコードを書くこと。

数字を入力してください: 7
入力された数値は奇数です。

【ヒント】自力で解くのが難しい人へ

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

Q
ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)

1:奇数かどうかを判定するメソッドodd_number?の定義
  □ 奇数であればtrueを返し、偶数であればfalseを返す
2:「数字を入力してください:」と出力
3:ユーザー入力を整数に変換し、変数inputに代入
4:if文でinputが奇数かどうかをチェック
  □ 真の場合、「入力された数値は奇数です。」と出力
  □ 偽の場合、「入力された数値は偶数です。」と出力

Q
ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

# 奇数かどうかを判定するメソッドを定義
def odd_number?(number)
=begin
  【穴埋め問題1】
  ここに引数`number`が奇数かどうかを判定し、奇数なら`true`、偶数なら`false`を返すコードを書いてください。
=end
end

# ユーザーに数値の入力を促す
print "数字を入力してください: "
input = gets.to_i  # 入力を整数に変換

# 入力された数値が奇数かどうかをチェック
if odd_number?(input)
  puts "入力された数値は奇数です。"
else
  puts "入力された数値は偶数です。"
end

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。

この問題の解答例と解説

この問題の正解コードとその解説は以下の通りです。

クリックして開いて確認してください。

Q
正解コード
# 奇数かどうかを判定するメソッドを定義
def odd_number?(number)
  # 奇数であればtrueを返し、偶数であればfalseを返す
  number % 2 == 1
end

# ユーザーに数値の入力を促す
print "数字を入力してください: "
input = gets.to_i  # 入力を整数に変換

# 入力された数値が奇数かどうかをチェック
if odd_number?(input)
  puts "入力された数値は奇数です。"
else
  puts "入力された数値は偶数です。"
end
Q
正解コードの解説

コードをブロックごとに分割して解説します。

奇数かどうかを判定するメソッドの定義

# 奇数かどうかを判定するメソッドを定義
def odd_number?(number)
  # 奇数であればtrueを返し、偶数であればfalseを返す
  number % 2 == 1
end
  • def odd_number?(number)odd_number?というメソッドを定義しています。
    Rubyでは「?」がつくメソッドは通常、truefalse真偽値を返すメソッドとして作られることが多く、ここでもそれに従っています。
  • number % 2 == 1%は「余り」を求める演算子です。
    数値が2で割り切れない場合は余りが1となり、奇数であることを意味します。
    奇数の場合にはtrue、偶数の場合にはfalseが返ります。

ユーザーに数値の入力を促す

# ユーザーに数値の入力を促す
print "数字を入力してください: "
input = gets.to_i  # 入力を整数に変換
  • print "数字を入力してください: ":ユーザーにメッセージを表示し、数値の入力を促しています。
    printは改行せずに文字列を表示するため、ユーザーが次の行に入力しやすくなります。
  • input = gets.to_iユーザーが入力した値をgetsで取得し、それを整数(to_i)に変換して変数inputに代入しています。
    getsは文字列として入力を受け取るので、to_iで数値に変換する必要があります。

奇数かどうかの判定と結果の表示

# 入力された数値が奇数かどうかをチェック
if odd_number?(input)
  puts "入力された数値は奇数です。"
else
  puts "入力された数値は偶数です。"
end
  • if odd_number?(input)odd_number?メソッドを呼び出して、inputが奇数かどうかを判定しています。
    奇数ならtrue、偶数ならfalseを返します。
  • puts "入力された数値は奇数です。"odd_number?trueを返した場合に実行され、ユーザーに「入力された数値は奇数です。」と表示します。
  • elseもしodd_number?falseを返した場合(つまり入力された数値が偶数の場合)は、"入力された数値は偶数です。"と表示されます。

まとめ

このコードは、真偽値を返すメソッドodd_number?を活用して数値が奇数かどうかを判定します。

Rubyでは「?」がつくメソッドが真偽値を返す慣例があり、このコードでもその特徴が使われています。

こうしたメソッドを使うと複雑な条件判定を簡潔に実装できます。今回学んだ基礎を基に、さらにRubyのメソッドや条件分岐を試してみてください。

<<前のページ

Rubyの記事一覧

次のページ>>

FAQ|Rubyの真偽値メソッドについてのよくある質問

Q
Q1. Rubyでメソッド名の末尾に「?」を付ける意味は何ですか?

Rubyでは「?」を付けたメソッドは、trueまたはfalseのいずれかの真偽値を返すことを意図して定義されます。例えばempty?include?のように、ある条件を判定する際に使われ、コードの意図が明確になり読みやすくなります。

Q
Q2. 真偽値を返すメソッドはどのように書けば良いですか?

条件式をそのまま評価結果として返すのが一般的です。例えばdef even?(n); n % 2 == 0; endのように、if文を使わずに条件式そのものを返すことで、コードを簡潔に保つことができます

Q
Q3. Rubyの真偽値メソッドはどのような場面で使うと効果的ですか?

条件分岐やバリデーションなどで、可読性を高めながら判定処理を明確化したい場合に有効です。特に複雑なロジックを見やすく整理する手段として、日常的に活用されます。

記事URLをコピーしました