Kotlinのラムダ式と通常関数の使い分けポイントをやさしく解説!初心者でも理解できる関数の選び方
生徒
「Kotlinのラムダ式って何ですか?普通の関数とはどう違うんでしょうか?」
先生
「ラムダ式は、簡単にいうと“名前のない関数”のことです。関数をその場でパッと書いて使える便利な方法なんです。」
生徒
「名前がない関数って、どういうときに使うんですか?普通の関数とどう使い分けるのか知りたいです。」
先生
「いいですね。それでは、Kotlinの通常関数とラムダ式の違いや、どんな場面で使い分ければいいのかを一緒に見ていきましょう!」
1. Kotlinの関数とは?プログラムの「再利用」を支える基本構造
Kotlin(コトリン)の学習で最初に出てくる「関数(Function)」とは、特定の処理をひとまとめにして名前をつけた“命令のセット”のことです。例えば、「挨拶をする」「計算をする」といった何度も使う動きを関数として作っておけば、同じコードを何度も書く必要がなくなり、プログラムがスッキリと読みやすくなります。
プログラミング未経験の方なら、関数を「特定の材料を入れると、決まった作業をしてくれる魔法の箱」だとイメージすると分かりやすいでしょう。
もっとも一般的な「通常の関数」は、fun(ファンクションの略)というキーワードを使って、以下のように名前を付けて定義します。
// 「sayHello」という名前の関数を作成(定義)
fun sayHello() {
println("こんにちは!Kotlinの世界へようこそ。")
}
fun main() {
// 関数を呼び出すことで、中の処理が実行される
sayHello()
}
この例では、sayHello()という名前の箱の中に「メッセージを表示する」という命令をしまっています。一度これを作っておけば、あとは一行書くだけで、いつでも誰でもこの「挨拶」を再利用できるようになるのが、関数の最大のメリットです。
また、関数はただ命令を実行するだけでなく、外からデータ(数値や文字)を受け取って処理することも可能です。このように、基本となる「通常の関数」を理解することが、Kotlinマスターへの第一歩となります。
2. ラムダ式とは?「名前のない関数」でコードを身軽にする
次に、Kotlinを使いこなす上で欠かせない「ラムダ式(Lambda Expression)」について解説します。ラムダ式を一言でいうと、名前をつけずにその場でサッと作れる関数のことです。
プログラミング未経験の方には「料理のレシピ」に例えると分かりやすいでしょう。通常、関数は「肉じゃがの作り方」という名前をつけて保存しますが、ラムダ式は「今この時だけ、ちょっとジャガイモを切る」といった、名前をつけるまでもない小さな処理をパッと書くときに使います。
まずは、最もシンプルなラムダ式の書き方を見てみましょう。
val greet = { println("こんにちは!") }
greet() // 保存した処理を実行する
このコードでは、{ println("こんにちは!") } の部分がラムダ式です。波括弧 { } の中に、実行したい処理を直接書き込んでいます。
本来、関数を作るには fun キーワードを使って名前を決める必要がありますが、ラムダ式なら val greet という変数に処理そのものを代入して、好きなタイミングで呼び出すことが可能です。
ラムダ式を活用することで、コードが冗長にならず、視覚的にも「何をしているか」がパッと見て理解しやすいスッキリとしたプログラムを書くことができるようになります。これはKotlinがモダンで初心者にも扱いやすいと言われる大きな理由の一つです。
3. 引数ありのラムダ式と通常関数の比較
プログラミングにおいて「引数(ひきすう)」とは、関数に渡す「材料」のようなものです。ここでは、2つの数字を足し算する処理を例に、通常の関数とラムダ式の書き方の違いを初心者の方にも分かりやすく解説します。
通常の関数(funキーワード)で書く場合
まずは、見慣れた一般的な関数の書き方です。名前を付けて定義し、どこからでも呼び出せるのが特徴です。
// addという名前の関数を定義
fun add(a: Int, b: Int): Int {
return a + b
}
// 呼び出し(材料として3と5を渡す)
val result = add(3, 5)
println(result) // 実行結果: 8
ラムダ式(変数に代入する形)で書く場合
同じ処理をラムダ式で書くと、非常にスッキリします。ラムダ式は「名前のない使い捨ての関数」を変数の中にギュッと閉じ込めるイメージです。
// 変数addに足し算の処理を代入
val add = { a: Int, b: Int -> a + b }
// 変数名を使って呼び出し
val result = add(3, 5)
println(result) // 実行結果: 8
ここで重要なのは ->(アロー演算子)の存在です。左側(a: Int, b: Int)に受け取る材料(引数)を書き、右側(a + b)にその材料を使った計算内容を書く、というルールになっています。
一見すると難しそうですが、「わざわざ関数を作るほどではないけれど、ちょっとした計算処理をひとまとめにしておきたい」という場面で、このラムダ式が抜群の威力を発揮します。書き方は違いますが、コンピュータの中では同じ足し算が行われているので安心してくださいね。
4. ラムダ式と通常関数の使い分けポイント
「どちらを使えばいいの?」と迷うかもしれませんが、判断基準はとてもシンプルです。基本的には「その処理に名前をつけて、後で何度も呼び出したいか」という視点で選ぶのがコツです。
● 通常関数(fun)を使うべき場面
通常関数は、プログラムのどこからでも呼び出せる「道具箱のツール」のような存在です。
- 再利用性が高い: 2回以上同じ処理を使い回すとき。
- 処理が複雑: コードが5行〜10行以上になり、1つずつステップを説明したいとき。
- 可読性重視: 「calculateTax(税金計算)」のように、名前を見ただけで何をするか分かるようにしたいとき。
例えば、商品の税込価格を計算する処理は、アプリ内の色々な場所で使うため、通常関数で定義するのが正解です。
// 名前があるから、どこで何を計算しているか一目でわかる
fun calculatePrice(price: Int): Int {
val taxRate = 1.1
return (price * taxRate).toInt()
}
fun main() {
println(calculatePrice(1000)) // 1100
}
● ラムダ式を使うべき場面
ラムダ式は、その場限りで使い捨てる「付箋(ふせん)」のようなイメージです。
- 一回きりの処理: その場所でしか使わない、ちょっとした計算や加工をしたいとき。
- 「高階関数」への引数:
filter(絞り込み)やmap(変換)など、他の関数に「やり方」を伝えたいとき。 - 記述の簡略化: 1〜3行程度の短いコードで、わざわざ関数名を考えるのが面倒なとき。
特に、リストの中から特定の条件(例:100円以上の商品だけ選ぶ)に合うものを探すといった「データの操作」には、ラムダ式が最適です。
fun main() {
val prices = listOf(80, 120, 200, 50)
// 「100より大きいものだけ選ぶ」という処理を、その場でサッと渡せる
val expensiveItems = prices.filter { it > 100 }
println(expensiveItems) // [120, 200]
}
このように、「しっかり定義して再利用するなら通常関数」、「その場で軽快に処理を渡すならラムダ式」と使い分けることで、プロ級の読みやすいコードになります。
5. 実例:ラムダ式を使ってリストを操作する
Kotlinでは、filterやmapなどの関数にラムダ式を渡すことで、リスト(複数のデータ)を簡単に操作できます。
次の例は、偶数だけを取り出すコードです。
val numbers = listOf(1, 2, 3, 4, 5, 6)
val even = numbers.filter { it % 2 == 0 }
println(even)
filterにラムダ式{ it % 2 == 0 }を渡すことで、条件に合うものだけを取り出せます。
6. ラムダ式が使えない場面と注意点
便利なラムダ式ですが、すべての場面で使えるわけではありません。次のような注意点があります。
- 複雑な処理を書くと読みづらくなる
- 再利用しにくい(使い回しにくい)
- 特定の関数の外では使いにくい
たとえば、長い処理や分岐がある処理をラムダ式で書くと、コードがゴチャゴチャして見にくくなることがあります。その場合は、通常の関数に切り出したほうがわかりやすいです。
Kotlinを基礎からしっかり学びたい人や、 Java経験を活かしてモダンな言語にステップアップしたい人には、 定番の入門書がこちらです。
基礎からわかるKotlinをAmazonで見る※ Amazon広告リンク
7. 初心者におすすめの使い分け方法
最後に、プログラミング初心者の方が迷ったときの使い分けルールを紹介します。
- 最初はすべて通常関数で書くのが安心
- リスト操作や一時的な処理でラムダ式を使ってみる
- コードを短くしたいときにだけラムダ式を使う
慣れてきたら、少しずつラムダ式を取り入れるといいでしょう。いきなりすべてラムダ式で書こうとすると混乱してしまうので、まずは通常の関数で確実に書けるようになるのが大切です。
【未経験OK】Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験する60分
「プログラミングを始めたい」を形にする。最新言語Kotlinで楽しむ、ものづくりの第一歩。
本講座は、プログラミング経験が全くない方のためのエントリー講座です。「コードを書くってどういうこと?」という基本から、世界中で使われている最新言語Kotlin(コトリン)を使って、実際にプログラムを動かすまでを体験します。難しい理屈よりも、まずは「自分の手で動かす楽しさ」を最短距離で実感していただきます。
具体的な体験内容と環境
【つくるもの】
簡単な言葉を入力すると自動で返答してくれる「対話型ミニプログラム」や、計算を自動化する「便利ツール」をゼロから作成します。黒い画面に自分の書いた文字が表示される瞬間は、最高の感動体験です。
【開発環境】
プロのエンジニアが実際に使っている開発ツールIntelliJ IDEA(インテリジェイ)をインストールします。ボタン一つで日本語化し、初心者でも迷わず操作できる「魔法の設定」を一緒に行います。
この60分で得られる3つの体験
プロと同じ道具を揃えることで、明日から一人でもプログラミングを続けられる環境が整います。
「変数」や「型」といった難しい言葉も、身近な例え話で解説。モヤモヤをゼロにします。
Kotlinは英語に近くて読みやすいのが特徴。自分でコードを読んで、間違いを見つけるコツも伝授します。
※本講座は、パソコン操作が不安な方でも安心して受講いただける完全マンツーマンです。あなたのペースに合わせて、一つずつ丁寧に進めていきます。
Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験