複数の引数を扱うメソッドを書いてみよう

学習の目標

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

  • 複数の引数を持つメソッドの定義方法を理解する
  • 複数の引数を使ったメソッドの呼び出し方を習得する
  • 引数の順序の重要性を学ぶ
  • 引数の数が合わない場合のエラーについて理解する
  • 複数の引数を活用した実践的なコード例を学ぶ

はじめに

前回の章では、1つの引数を持つメソッドの作り方と使い方を学びました。メソッドに情報を渡せるようになると、より柔軟なプログラムが書けるようになります。

しかし、実際のプログラミングでは、複数の情報を同時にメソッドに渡したい場合があります。例えば、長方形の面積を計算するには「幅」と「高さ」の2つの値が必要です。あるいは、ユーザーに挨拶をするときに「名前」と「挨拶のメッセージ」の2つの情報が必要な場合もあります。

このような場合に便利なのが、複数の引数を持つメソッドです。今回は、複数の引数を扱うメソッドの書き方と使い方を学んでいきましょう。

ファイルの準備

まずは、実習用のファイルを作成しましょう。

エディタで新しいファイルを開き、multiple_arguments.rbという名前で保存します。これから、このファイルにメソッドを定義していきます。

メソッドの定義

足し算を行うメソッドを作成して、複数の引数の使い方を見てみましょう。次のコードを入力します。

def add(number1, number2)
number1 + number2
end
puts add(5, 3) # 8が表示される
puts add(10, 20) # 30が表示される

このメソッドでは、number1number2という2つの引数を定義しています。メソッドの中では、これら2つの値を足した結果を返しています。

複数の引数を定義するときは、**カンマ(,)**で区切って書きます。同様に、メソッドを呼び出すときも、カンマで区切って値を渡します。

上記のコードを実行すると、最初の呼び出しでは5 + 3の結果である8が、次の呼び出しでは10 + 20の結果である30が表示されます。

複数の引数を使った別の例

もう一つ例を見てみましょう。長方形の面積を計算するメソッドを作ってみます。

def calculate_rectangle_area(width, height)
width * height
end
puts calculate_rectangle_area(5, 4) # 20が表示される
puts calculate_rectangle_area(2, 10) # 20が表示される

このメソッドも2つの引数(幅と高さ)を取り、それらを掛け算して長方形の面積を計算します。このように、計算に必要な複数の値を引数として受け取ることで、より汎用的なメソッドを作ることができます。

引数の順序を意識する

複数の引数を使う際に重要なのが、引数の順序です。引数は定義した順番通りに渡す必要があります。

引数の順序が大切であることを理解するために、新しいメソッドを追加しましょう。

def greet(name, message)
puts "#{name}さん、#{message}"
end
greet("田中", "おはよう") # 田中さん、おはようと表示される
greet("おはよう", "田中") # おはようさん、田中と表示される

このメソッドは、「名前」と「メッセージ」の2つの引数を受け取り、挨拶文を表示します。

1つ目の呼び出しでは、「名前」に"田中"、「メッセージ」に"おはよう"を渡しているので、「田中さん、おはよう」と正しく表示されます。

しかし、2つ目の呼び出しでは、引数の順序を逆にしているため、「おはようさん、田中」という意図しない結果になってしまいます。

このように、引数の順番を間違えると、プログラムは動きますが、意図した結果にはなりません。複数の引数を使う際は、定義した順序どおりに値を渡すことが重要です。

引数の順序を分かりやすくする工夫

引数の順序を間違えないようにするためには、以下のような工夫があります。

  1. 関連性の高い引数を隣接させる
  2. 一般的な規則に従う
  3. 引数名を分かりやすくする

関連性の高い引数を隣接させる場合、例えば住所を表す引数は「都道府県」「市区町村」「番地」のように、論理的に関連するものを順番に並べるとよいでしょう。

一般的な規則に従う例としては、座標は通常「x, y」の順、日付は「年, 月, 日」の順などがあります。

また、引数名を分かりやすくすることも重要です。例えばdef create_user(name, age)のように、引数の名前から何を渡すべきかが明確になるようにしましょう。

引数の数を確認する

メソッドを呼び出すときは、定義された引数の数と同じ数の値を渡す必要があります。足りない場合も、多すぎる場合もエラーになってしまいます。

このことを確認するために、掛け算のメソッドを追加しましょう。

def multiply(x, y)
x * y
end
puts multiply(3, 4) # 12が表示される
# puts multiply(3) # エラー:引数が足りない
# puts multiply(3, 4, 5) # エラー:引数が多すぎる

このメソッドは2つの引数を期待しています。1つだけ値を渡したり、3つ値を渡したりすると、エラーになります。

コメントアウトされている行のコメントを外して実行してみると、以下のようなエラーメッセージが表示されます。

# 引数が足りない場合
wrong number of arguments (given 1, expected 2)
# 引数が多すぎる場合
wrong number of arguments (given 3, expected 2)

これらのエラーメッセージは、「渡された引数の数(given)」と「期待される引数の数(expected)」が一致していないことを示しています。

引数の数や順序を間違えると、プログラムが意図した動作をしなくなるか、エラーになってしまいます。そのため、メソッドを呼び出す際は、定義に合った正しい順序と数の引数を渡すよう注意する必要があります。

実践的な例:個人情報を表示するメソッド

複数の引数を使った実践的な例として、個人情報を表示するメソッドを作成してみましょう。

def display_profile(name, age, city)
puts "【プロフィール】"
puts "名前: #{name}"
puts "年齢: #{age}歳"
puts "居住地: #{city}"
end
display_profile("鈴木一郎", 28, "東京都")

このメソッドは、「名前」「年齢」「居住地」の3つの引数を受け取り、整形されたプロフィール情報を表示します。実行すると、以下のように表示されます。

【プロフィール】
名前: 鈴木一郎
年齢: 28歳
居住地: 東京都

このように、複数の引数を使うことで、より詳細な情報をメソッドに渡すことができます。

引数の組み合わせと使いどころ

複数の引数を持つメソッドは、以下のような場面で特に役立ちます。

  1. 計算処理

    • 複数の数値を計算する(四則演算、座標計算など)
    • 複数の条件に基づいて計算する(割引率の計算、税金計算など)
  2. 情報の整形

    • 複数の情報を組み合わせて整形する(氏名のフォーマット、住所の整形など)
    • 特定の形式に変換する(日付や時間のフォーマット変換など)
  3. 条件判定

    • 複数の条件を組み合わせて判定する(ログイン認証、アクセス権限のチェックなど)

複数の引数を適切に活用することで、メソッドの汎用性と実用性が大きく向上します。

まとめ

本章では、複数の引数を持つメソッドについて学習しました。以下の内容をマスターできたことと思います。

  • 複数の引数を定義するときは、カンマで区切って書く
  • メソッドを呼び出すときは、定義した順番通りに、正しい数の値を渡すことが大切
  • 引数が多すぎたり少なすぎたりするとエラーになる
  • 引数の順番を間違えると、意図しない結果になる可能性がある
  • 複数の引数を使うことで、より柔軟で汎用的なメソッドを作ることができる

複数の引数を適切に使いこなせるようになると、より実用的で柔軟なプログラムを作成できるようになります。引数の順序や数には特に注意して、メソッドを設計・使用するようにしましょう。

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

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

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

作成者:とまだ
Previous
メソッドに引数を渡そう