今回は引数の可読性を高めることができる機能「キーワード引数」について簡単にまとめたので紹介したいと思います。基本的に引数が2つ以上になる場合はキーワード引数を設定し、可読性の高いコードになるよう心掛けましょう。
キーワード引数とは
キーワード引数とはRuby2.0で導入された機能で、引数の意味を分かりやすく記述することができる機能です。引数の可読性を高め、バグや認識漏れを防ぐことができます。
キーワード引数を導入するメリットとしては以下の2つになります。
- 引数の可読性を高めることができる
- 引数の順序を考慮しなくて良い
引数の基本形
キーワード引数の前に、引数の基本形についておさらいしておきます。
メソッドを呼び出す部分に「本引数」、メソッドを定義している部分に「仮引数」を記載します。本引数と仮引数の名前が同じである必要はありません。
def first_name(name) # 仮引数
puts "私の名前は#{name}です。"
end
name = "千葉"
first_name(name) # 本引数
=> 私の名前は千葉です。
複数の引数を渡す場合は、以下のように順序を考慮しなければなりません。
def person(last_name, first_name, age)
puts "私の名前は#{last_name} #{first_name}で#{age}歳です。"
end
person('田中', '太郎', 35)
=> 私の名前は田中 太郎で35歳です。

キーワード引数
キーワード引数では本引数部分に「キーワード: 値」を、仮引数部分には「キーワード:」を記述します。本引数と仮引数の値がキーワードによって紐づいています。
def person(last_name:, first_name:, age:)
puts "私の名前は#{last_name} #{first_name}で#{age}歳です。"
end
person(last_name: '田中', first_name: '太郎', age: 35)
=> 私の名前は田中 太郎で35歳です。
キーワードによって紐づいているため、順序を考慮しなくても正常に動作します。
def person(last_name:, first_name:, age:)
puts "私の名前は#{last_name} #{first_name}で#{age}歳です。"
end
person(last_name: '田中', age: 35, first_name: '太郎')
=> 私の名前は田中 太郎で35歳です。
デフォルト値の指定
通常の引数でもデフォルト値を設定することができましたが、キーワード引数でも同様にデフォルト値を指定することが可能です。
デフォルト値は仮引数にあらかじめ値をセットしておきます。以下の例では、last_nameとfirst_nameにデフォルト値をセットしています。
def person(last_name: '山田', first_name: '花子', age:)
puts "私の名前は#{last_name} #{first_name}で#{age}歳です。"
end
本引数を指定しなかった場合、デフォルト値が使用されます。
def person(last_name: '山田', first_name: '花子', age:)
puts "私の名前は#{last_name} #{first_name}で#{age}歳です。"
end
person(age: 35)
=> 私の名前は山田 花子で35歳です。
本引数を指定した場合はその値が使用されます。
def person(last_name: '山田', first_name: '花子', age:)
puts "私の名前は#{last_name} #{first_name}で#{age}歳です。"
end
person(last_name: '田中', age: 35, first_name: '太郎')
=> 私の名前は田中 太郎で35歳です。
まとめ
- キーワード引数とは、引数の意味を分かりやすく記述することができる機能のこと
- キーワード引数を導入することで、引数の可読性を高めることができる
- キーワード引数を導入することで、引数の順序を考慮しなくて良い
- キーワード引数では本引数部分に「キーワード: 値」を、仮引数部分には「キーワード:」を記述する
- キーワード引数ではデフォルト値を指定することも可能
参考
- Rubyのキーワード引数の使い方を現役エンジニアが解説【初心者向け】
- Ruby 3.0のキーワード引数変更のスケジュールが変更に
- サンプルコードでわかる!Ruby 2.7の主な新機能と変更点 Part 2 – キーワード引数に関する仕様変更
今回は引数の可読性を高めることができる機能「キーワード引数」について解説しました。引数が2つ以上になる場合はキーワード引数を指定し、可読性の高いコードになるよう心掛けましょう。