• Xでシェア
  • LINEでシェア
  • このエントリーをはてなブックマークに追加

Ruby returnの使い方

この記事のポイント

  • メソッドから値を返すための明示的な制御文
  • 基本的な戻り値の返し方から早期リターン・複数値の返却まで網羅
  • 実際の開発で使える8つの実用的なサンプルコード

目次

Rubyのreturnとは?

Rubyのreturnは、メソッドから値を明示的に返すためのキーワードです。メソッドの実行を終了し、指定した値を呼び出し元に返します。例えば、動物の年齢計算メソッドで計算結果を返したり、動物の検索メソッドで見つかった動物情報を返すことができます。Rubyではメソッドの最後に評価された式が自動的に戻り値となりますが、returnを使用することで明示的に戻り値を制御できます。Webアプリケーション開発では、データベース検索結果の返却、バリデーション処理の結果返却、API レスポンスの生成など、さまざまな場面でreturnが活用されます。特に条件分岐での早期returnや、エラー処理での異常終了など、制御フローを明確にする重要な役割を果たします。適切にreturnを使用することで、コードの可読性と保守性が大幅に向上します。

【関連】
Rubyをもっと詳しく学ぶならpaizaラーニング

基本構文

Rubyにおけるreturnの基本的な使用方法は、returnキーワードに続いて返したい値を記述する構文です。単一の値だけでなく、複数の値をカンマで区切って返すことも可能です。returnを記述した時点でメソッドの実行が終了し、その後のコードは実行されません。また、returnキーワードを省略した場合は、メソッドの最後に評価された式が自動的に戻り値となります。

# 基本的なメソッド定義と呼び出し def animal_age(birth_year) return 2024 - birth_year end def get_animal_info return "ポチ", "犬", 3 end puts animal_age(2020) name, species, age = get_animal_info puts "#{name}は#{age}歳の#{species}"

出力結果:

4
ポチは3歳の犬

実用例

ここからは実際の開発現場でよく使われるreturn文の具体例を紹介します。基本的な値の返却から始まり、早期return、エラーハンドリング、複雑なデータ構造の返却まで、段階的に学んでいきます。各例では動物をテーマにしたメソッドを使用し、実際にコードを実行して結果を確認できるよう構成しています。これらのサンプルコードを理解することで、returnを使った効果的な制御フローの作成方法を習得できます。実際のWebアプリケーション開発において、データ処理、バリデーション、API応答生成など、さまざまな場面でreturnが重要な役割を果たしています。

基本的なreturn文の使用

最もシンプルなreturn文の使用例です。メソッド内で計算や処理を行い、その結果を明示的に返します。動物の情報処理や基本的なデータ変換など、単純な値の返却が必要な場面で使用されます。コードの意図を明確にし、メソッドの責任を明示する重要な書き方です。

def animal_sound(species) return "ワンワン" if species == "犬" return "ニャー" if species == "猫" return "不明" end puts animal_sound("犬") puts animal_sound("猫")

出力結果:

ワンワン
ニャー

条件による早期return

条件を満たした場合に早期にメソッドから抜け出すパターンです。ガード節とも呼ばれ、異常なケースや特別なケースを先に処理することで、メイン処理のネストを浅くして記述できます。バリデーション処理やエラーチェックなど、防御的プログラミングで重要な技法です。

def check_age(age) return "年齢が不正" if age < 0 return "子供" if age < 1 return "大人" end puts check_age(-1) puts check_age(0) puts check_age(2)

出力結果:

年齢が不正
子供
大人

複数の値を返すreturn

一つのメソッドから複数の値を同時に返すパターンです。関連する複数のデータをまとめて返すことで、メソッドの呼び出し回数を減らし、効率的なデータ処理を実現できます。座標データや統計情報など、複数の関連する値を扱う場面で活用されます。

def animal_stats(count, species_count) return count, species_count, count > 0 end def min_max_age(ages) return ages.min, ages.max end total, species, has_animals = animal_stats(5, 3) min_age, max_age = min_max_age([1, 3, 7]) puts "動物数: #{total}, 種類: #{species}, 存在: #{has_animals}" puts "年齢範囲: #{min_age}〜#{max_age}歳"

出力結果:

動物数: 5, 種類: 3, 存在: true
年齢範囲: 1〜7歳

nilやfalseを返すreturn

処理の結果として、意図的にnilやfalseを返すパターンです。データが見つからない場合や処理が失敗した場合など、「何もない」ことを明示的に表現する重要な手法です。検索処理やバリデーション処理など、成功・失敗を明確に区別する必要がある場面で使用されます。

def find_animal(name) animals = { "ポチ" => "犬", "タマ" => "猫" } return animals[name] end def valid_age?(age) return false if age.nil? || age < 0 return true end puts find_animal("ポチ") || "見つかりません" puts find_animal("ジロ") || "見つかりません" puts valid_age?(5) ? "有効" : "無効"

出力結果:

犬
見つかりません
有効

計算結果を返すreturn

数値計算や文字列処理の結果を返すパターンです。動物の年齢計算、エサの量計算、成長率の算出など、計算処理の結果を他の処理で利用する場面で使用されます。ビジネスロジックの計算処理や データ分析など、数値処理が中心となる機能で重要な役割を果たします。

def human_age(animal_age, species) multiplier = species == "犬" ? 7 : 6 return animal_age * multiplier end def food_amount(weight) return (weight * 0.03).round(1) end puts "#{human_age(3, "犬")}歳相当" puts "エサ量: #{food_amount(10)}kg"

出力結果:

21歳相当
エサ量: 0.3kg

ハッシュや配列を返すreturn

複雑なデータ構造であるハッシュや配列を返すパターンです。動物の詳細情報や統計データなど、構造化されたデータを返すことで、呼び出し側で柔軟にデータを活用できます。API開発やデータ処理システムなど、構造化されたデータ交換が必要な場面で頻繁に使用されます。

def create_profile(name, age) return { name: name, age: age, status: age >= 1 ? "成体" : "幼体" } end def get_animals return ["犬", "猫", "鳥"] end profile = create_profile("ポチ", 3) animals = get_animals puts profile puts animals.inspect

出力結果:

{:name=>"ポチ", :age=>3, :status=>"成体"}
["犬", "猫", "鳥"]

エラーハンドリングでのreturn

エラーが発生した場合の処理でreturnを使用するパターンです。異常な状態を検出した際に、適切なエラーメッセージや状態を返して処理を安全に終了させます。アプリケーションの安定性とユーザビリティを向上させる重要な防御的プログラミング手法です。

def register_animal(name, age) return "名前が空です" if name.nil? || name.empty? return "年齢が不正です" if age < 0 return "登録完了: #{name}" end def divide_food(total, count) return "動物数が0です" if count.zero? return total / count end puts register_animal("", 3) puts register_animal("ポチ", 5) puts divide_food(10, 0)

出力結果:

名前が空です
登録完了: ポチ
動物数が0です

returnの省略と暗黙的な戻り値

Rubyではreturnを省略できる特性を活用するパターンです。メソッドの最後に評価された式が自動的に戻り値となるため、よりシンプルなコードが書けます。ただし、明示的なreturnと暗黙的な戻り値の使い分けを理解することで、より読みやすいコードを作成できます。

# returnを省略 def greeting(name) "こんにちは、#{name}さん!" end # returnを明示 def age_group(age) return "幼体" if age < 1 return "成体" end puts greeting("ポチ") puts age_group(3) puts age_group(0)

出力結果:

こんにちは、ポチさん!
成体
幼体

まとめ

return文はRubyプログラミングにおける制御フローの要となる機能です。本記事で解説した8つの実用例を通じて、基本的な値の返却から早期return、エラーハンドリング、複雑なデータ構造の返却まで、幅広いreturn文の活用方法を習得できました。これらの知識を活用することで、より安全で読みやすく、保守性の高いコードが書けるようになり、実際のプロジェクトでも効果的な処理制御が可能になるでしょう。

レベルを更に上げたい方はpaizaプログラミングスキルチェックへ

  1. paizaラーニングトップ
  2. リファレンス
  3. Rubyのリファレンス記事一覧
  4. Ruby returnの使い方