Kotlinの引数の使い方!デフォルト引数・可変長引数・キーワード引数まとめ
生徒
「Kotlinの関数って使えるようになってきたんですけど、引数っていうのがまだよくわかりません……」
先生
「いいですね!次は関数の引数について学んでいきましょう。引数は関数にデータを渡す仕組みなんです。」
生徒
「じゃあ、デフォルト引数とか可変長引数とかキーワード引数って何なんですか?」
先生
「それぞれの意味や使い方を、やさしく丁寧に解説していきましょう!」
1. Kotlinの引数とは?
「引数(ひきすう)」とは、関数にデータを渡すための仕組みです。関数を使うときに、外から値を渡して、それを使って処理を行います。
たとえば、「こんにちは〇〇さん」と表示する関数を作るとき、「〇〇」の部分を呼び出し時に渡せば、毎回違う名前に対応できます。
fun greet(name: String) {
println("こんにちは、$name さん!")
}
fun main() {
greet("たろう")
greet("はなこ")
}
こんにちは、たろう さん!
こんにちは、はなこ さん!
2. デフォルト引数とは?
Kotlinでは、引数に初期値(デフォルト値)をつけることができます。これを「デフォルト引数(ひきすう)」といいます。
呼び出し側で値を渡さなかった場合、自動的にその初期値が使われます。
fun greet(name: String = "ゲスト") {
println("こんにちは、$name さん!")
}
fun main() {
greet("さとし")
greet()
}
こんにちは、さとし さん!
こんにちは、ゲスト さん!
このように、引数を省略しても関数は正しく動きます。
3. 可変長引数(vararg)の使い方
「可変長引数(かへんちょうひきすう)」とは、引数の数が決まっていないときに使う方法です。
varargというキーワードを使うことで、複数の値をまとめて1つの引数として受け取れます。
fun greetAll(vararg names: String) {
for (name in names) {
println("こんにちは、$name さん!")
}
}
fun main() {
greetAll("あきら", "ようこ", "けんた")
}
こんにちは、あきら さん!
こんにちは、ようこ さん!
こんにちは、けんた さん!
このように、いくつでも名前を渡すことができます。中では配列として扱われていて、for文で1人ずつ処理できます。
4. キーワード引数とは?
「キーワード引数」とは、関数を呼び出すときに、引数の名前を明示して値を渡す方法です。
特に複数の引数があるときに、どの値がどの引数に対応しているか分かりやすくなります。
fun greet(name: String, age: Int) {
println("こんにちは、$name さん!あなたは $age 歳ですね。")
}
fun main() {
greet(name = "れいこ", age = 28)
greet(age = 35, name = "けいすけ")
}
こんにちは、れいこ さん!あなたは 28 歳ですね。
こんにちは、けいすけ さん!あなたは 35 歳ですね。
引数の順番が違っていても、キーワードを使えば正しく渡せます。
5. 引数の組み合わせも自由自在!
Kotlinでは、デフォルト引数とキーワード引数を組み合わせて使うことができます。柔軟な関数の作り方ができるのが、Kotlinの魅力の一つです。
fun introduce(name: String = "名無し", hobby: String = "なし") {
println("$name さんの趣味は $hobby です。")
}
fun main() {
introduce()
introduce("りょう")
introduce(hobby = "読書")
introduce(name = "さき", hobby = "スキー")
}
名無し さんの趣味は なし です。
りょう さんの趣味は なし です。
名無し さんの趣味は 読書 です。
さき さんの趣味は スキー です。
このように、値を省略したり、キーワードで明示したりして、関数の呼び方を柔軟に変えられます。
6. Kotlinの引数を使いこなすコツ
Kotlinの関数をもっと便利に使いたいなら、引数の種類を理解して使い分けることが大切です。
- 同じ処理を何度も使いたいとき → 引数で値を渡す
- 一部の値だけ変えたいとき → デフォルト引数を使う
- たくさんの値を一気に渡したいとき → 可変長引数を使う
- 引数の順番を自由にしたいとき → キーワード引数を使う
これらを使いこなすと、コードがスッキリして、読みやすくなります。初心者の方も、何度も書いて試してみましょう!
まとめ
Kotlinの引数には、デフォルト引数、可変長引数、キーワード引数といった便利な仕組みがそろっていて、これらを使いこなすことで関数の表現力が大きく広がります。今回の記事では、引数の役割から始まり、それぞれの特徴や使いどころを順を追って学んできました。引数は関数に値を渡すための大切な仕組みであり、データを自由に切り替えながら柔軟な処理を実行できるようになります。初心者のうちは「どの引数にどんな値が入るのか」「順番をどうして守らないといけないのか」などで戸惑うことがありますが、実際に何度も書きながら試していくことで自然と理解が深まっていきます。 デフォルト引数を使うと、値を渡し忘れても安全に処理が進むようになり、関数呼び出しの簡潔さも向上します。これは、頻繁に使う処理ほど効果が大きく、プログラム全体の見通しも良くなります。また、可変長引数は複数の値を一度に渡す場面で便利で、大人数へのメッセージ送信や、さまざまなデータをまとめて処理したいときに役立ちます。さらに、キーワード引数を活用すれば、引数の順番にとらわれずに値を渡せるため、読みやすくて誤解の少ない関数呼び出しができます。 これらの引数の特徴を理解し、適切な場面で使い分けることで、コードの柔軟性と読みやすさが大きく改善します。特に、可変長引数とキーワード引数を組み合わせれば、一覧データの表示、プロフィール情報の出力、設定値の変更など、さまざまなシーンに対応できる自由度の高い関数が作れるようになります。今回学んだ内容は、実務でも頻繁に使われ、アプリ開発やデータ処理など幅広い場面で役立つ基礎となるものばかりです。引数の理解を深めることで、プログラム設計がしやすくなり、複雑な仕組みにも対応しやすくなるでしょう。 次のステップとしては、戻り値を持つ関数、ラムダ式と組み合わせた関数、クラスと引数の関係など、さらに深い学びへと進むことができます。まずは、今回の内容を自分の手で書いて試し、「動かす→修正する→理解が深まる」というサイクルを積み重ねて、実際のアプリケーションでも活かせるようにしていきましょう。
サンプルプログラムで引数の使い方を総復習
デフォルト引数・可変長引数・キーワード引数の使い方をまとめて確認できるサンプルです。さまざまな呼び出し方に慣れることで、引数の理解がさらに深まります。
fun showInfo(name: String = "ゲスト", age: Int = 0, vararg hobbies: String) {
println("名前:$name")
println("年齢:$age 歳")
if (hobbies.isNotEmpty()) {
println("趣味:")
for (hobby in hobbies) {
println(" - $hobby")
}
} else {
println("趣味:なし")
}
}
fun main() {
// デフォルト引数の使用
showInfo()
// 名前だけ変更
showInfo("たろう")
// 名前と年齢をキーワード引数で指定
showInfo(age = 20, name = "はなこ")
// 趣味を可変長引数で複数渡す
showInfo("さき", 25, "旅行", "映画", "料理")
}
このコードでは、showInfoという関数に名前、年齢、趣味を渡すさまざまな呼び方を試しています。デフォルト引数によって、値を省略した場合でも適切に動作し、キーワード引数によって順番に依存しない柔軟な呼び出しが可能になります。さらに、可変長引数を使うことで、趣味の数が何個でも受け取れるようになり、実際のユーザーデータに近い自由度を持たせることができます。こうした引数の組み合わせは実務でも非常に役立ち、設定項目の管理や情報の表示にとても相性が良い実践的なテクニックです。
生徒
「引数ってこんなにいろいろな種類があったんですね!使い分けができると便利そうだと思いました。」
先生
「ええ、とても便利ですよ。特にデフォルト引数とキーワード引数は読みやすさが大きく変わるので、意識して使うと良いですよ。」
生徒
「可変長引数も面白かったです!いくつでも値を渡せるってすごいですね。」
先生
「複数のデータをまとめて渡したいときにはとても相性が良いですね。その場合はfor文との組み合わせもよく使います。」
生徒
「キーワード引数は順番を気にしなくていいからすごく使いやすいです。入力ミスも減りそう!」
先生
「まさにその通りです。順番に頼らない書き方は誤解を減らし、読みやすさを高めるので積極的に使う価値があります。」
生徒
「今日の内容を使って、自分でももっといろんな関数を作ってみます!」
先生
「素晴らしいですね。引数を理解できれば、これから先の学習もスムーズに進みますよ。」