カテゴリ: Kotlin 更新日: 2025/12/07

Kotlinの関数リテラル(匿名関数)の作り方と使い方をやさしく解説!初心者向け関数型プログラミング入門

Kotlinの関数リテラル(匿名関数)の作り方と使い方
Kotlinの関数リテラル(匿名関数)の作り方と使い方

先生と生徒の会話形式で理解しよう

生徒

「Kotlinで関数を作るときに、名前をつけない書き方があるって聞いたんですが…それってどういうものなんですか?」

先生

「それは『関数リテラル』とか『匿名関数』と呼ばれる書き方ですね。関数に名前をつけずに、必要なときだけその場で書く方法です。」

生徒

「関数に名前をつけないって、どういう場面で使うんですか?普通の関数と何が違うんでしょうか?」

先生

「とても良い疑問です。ではこれから、Kotlinで関数リテラル(匿名関数)を作る方法と、その使い方を一つずつ見ていきましょう!」

1. 関数リテラル(匿名関数)とは?

1. 関数リテラル(匿名関数)とは?
1. 関数リテラル(匿名関数)とは?

Kotlinの「関数リテラル」は、関数に名前をつけずに定義する方法です。「匿名関数」とも呼ばれます。通常の関数はfunを使って名前をつけますが、関数リテラルはその場だけで使う一時的な関数です。

たとえば次のように書きます。


val greet = fun(name: String): String {
    return "こんにちは、$name さん"
}
println(greet("田中"))

funのあとに名前を書かないで、直接(引数): 戻り値の型と書いているのが特徴です。

2. ラムダ式との違いは?

2. ラムダ式との違いは?
2. ラムダ式との違いは?

Kotlinでは関数リテラルとよく似た書き方として「ラムダ式」があります。どちらも名前のない関数ですが、書き方と使い道に違いがあります。


val greetLambda = { name: String -> "こんにちは、$name さん" }

ラムダ式は、{ 引数 -> 処理 }という形で、とても短く書けます。一方、匿名関数はreturnが使えたり、複雑な処理に向いています。

3. 匿名関数を使う場面とは?

3. 匿名関数を使う場面とは?
3. 匿名関数を使う場面とは?

関数リテラル(匿名関数)は、以下のような場面で使うと便利です。

  • 関数の中でちょっとだけ一時的な処理をしたいとき
  • ラムダ式では書きにくい複雑な処理をしたいとき
  • returnを明確に使いたいとき

特に、関数からの戻り方にこだわりたいときは、ラムダ式よりも匿名関数の方が向いています。

4. 匿名関数の基本の書き方

4. 匿名関数の基本の書き方
4. 匿名関数の基本の書き方

もう一度、基本的な書き方を整理しておきましょう。


val 関数名 = fun(引数: 型): 戻り値の型 {
    return 処理
}

たとえば、2つの数を足す匿名関数はこう書きます。


val add = fun(a: Int, b: Int): Int {
    return a + b
}
println(add(3, 5))

5. ラムダ式ではできないこともできる

5. ラムダ式ではできないこともできる
5. ラムダ式ではできないこともできる

ラムダ式では、returnを書くと外側の関数に戻ってしまうことがあります。でも匿名関数では、自分の中だけでreturnが使えるのが特徴です。


val action = fun(x: Int): String {
    if (x < 0) return "マイナス"
    return "プラスかゼロ"
}
println(action(-3))

このように、ifreturnを組み合わせて書きたいときにも、匿名関数は向いています。

6. 匿名関数とラムダ式の選び方のコツ

6. 匿名関数とラムダ式の選び方のコツ
6. 匿名関数とラムダ式の選び方のコツ

初心者のうちは、どちらを使えばいいか迷うこともあると思います。次のように覚えると使いやすいです。

  • 短く書きたい → ラムダ式
  • returnを使いたい → 匿名関数
  • 複雑な処理や分岐がある → 匿名関数
  • 簡単なフィルターや変換 → ラムダ式

7. 関数型の理解を深めるために

7. 関数型の理解を深めるために
7. 関数型の理解を深めるために

関数リテラルやラムダ式は、Kotlinの「関数型プログラミング」を理解するための大切な一歩です。最初は戸惑うかもしれませんが、何度か使ってみると違いや便利さがわかってきます。

関数を“データのように”変数に入れたり、他の関数に渡したりできるという考え方は、これまでのプログラミングとは少し違っていて面白い特徴です。

まとめ

まとめ
まとめ

Kotlinの関数リテラル(匿名関数)は、普段のプログラミングでよく使われるfunで名前をつける関数とは違い、その場だけで動かしたい処理を短くまとめるための便利な書き方でした。ラムダ式と見た目が似ていますが、returnの扱い方や、複雑な処理をまとめたい場面では匿名関数のほうが分かりやすく書けるという違いがありました。短いフィルターや簡単な処理にはラムダ式、明確にreturnを使いたいときや分岐が増えるときは匿名関数を選ぶと自然です。

実際に、valで変数のように扱えたり、引数として渡せたり、他の関数の戻り値にできたり、関数を「データ」のように扱えるのはとても大きな特徴です。これは、Kotlinが関数型プログラミングの考え方を取り入れている言語だから実現できる書き方です。普段のクラスやオブジェクトを使った開発とは少し違う感覚があり、最初は不思議に思うかもしれませんが、一度慣れてしまうと「あれ、ここはわざわざ関数名をつけなくてもいいな」と感じる場面が増えていくはずです。

たとえば、ボタンを押した時だけ実行したい処理、計算を一回だけまとめたい処理、コレクションのフィルタリングや変換など、ほんの少しの動きをまとめたいときに匿名関数を使うとコードが読みやすく整理しやすくなります。処理が複雑になりがちな場面では、ラムダ式だけを使うよりも匿名関数を使ったほうがコードがはっきり読みやすくなり、他の人が見たときにも理解しやすくなります。

また、匿名関数ではreturnが自分自身に対して働くので、外側の関数にまで戻ってしまう心配がありません。この違いは、実際に動かして試してみるとよく分かります。特に、短いラムダ式の中で複雑な分岐を書くと、どのタイミングでどこに戻るのか分かりにくくなることがありますが、匿名関数なら通常の関数と同じ書き方が使えるので安心です。

もう少し踏み込んで考えると、関数リテラルを活用することで、関数自体を「値」として扱える柔軟さが生まれます。たとえば、処理を「渡す」プログラミングができるようになり、条件によって違う計算を実行したり、コレクションの中身を並び替えたり、ひとまとまりの動きを自由に作れるようになります。これは、アプリやWeb開発でもとてもよく使われる考え方です。

次のサンプルは、匿名関数をリストの処理に渡して動かしてみた例です。


// 数字のリストから「偶数だけ」を取り出す処理を匿名関数で書く
val numbers = listOf(1, 2, 3, 4, 5, 6)

val isEven = fun(x: Int): Boolean {
    return x % 2 == 0
}

val result = numbers.filter(isEven)
println(result) // [2, 4, 6]

このように、関数を変数として扱えることで、あとから別の処理に差し替えたり、組み合わせたりすることもできます。関数そのものを渡したり溜めたりする仕組みは、慣れてくるととても便利で、複雑な処理でも短く整理されたプログラムが書けるようになります。

さらに、関数リテラルは「関数型」を本当に理解するための入口でもあります。関数を作る、渡す、戻す。この考え方が分かると、ライブラリの使い方も理解しやすくなり、より多くのコードが短く読みやすい形に書けるようになります。特にKotlinでは、コレクションのmapfilterforEachなど、関数を渡して動かす処理がたくさん使われます。実際のアプリ開発でも頻繁に登場する考え方です。

また、匿名関数とラムダ式の違いを知っておくと、問題に応じて「短く書く」「読みやすく書く」「returnを含めて分かりやすく書く」といった選び方ができるようになります。書き方の引き出しが増えると、コードはどんどんきれいになり、あとから見返したときの理解もずっと楽になります。

最初は少し難しく感じても、実際に使ってみると「この場面では匿名関数のほうがわかりやすい」と気づく瞬間が来ます。短いサンプルからでもいいので、実際に手を動かして書いてみるのが一番の近道です。

先生と生徒の振り返り会話

生徒

「匿名関数って、ただ短いだけじゃなくて、returnが普通に使えるのが便利なんですね。」

先生

「そうです。ラムダ式も良いのですが、複雑な処理になると匿名関数のほうが読みやすくなります。」

生徒

「リストに渡したり、変数として扱ったりできるのも面白いと思いました。」

先生

「関数を値として扱えると、コードの組み立てがとても自由になりますよ。」

生徒

「次は、自分で匿名関数を使った小さな処理を作ってみたいです!」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Kotlinの関数リテラルとは何ですか?初心者にもわかりやすく教えてください。

Kotlinの関数リテラルとは、名前をつけずにその場で定義できる関数のことです。「匿名関数」とも呼ばれ、一時的に使いたい処理を簡潔に記述できます。
カテゴリの一覧へ
新着記事
Go言語の構造体でインターフェースを実装する方法を初心者向けにやさしく解説!
Kotlinの演算子一覧と使い方!算術・比較・論理演算子の基本を解説
Go言語の文字列フォーマット!fmt.Sprintfで簡単に出力を整形する方法
Go言語のエラーと例外の違いを初心者向けに整理!わかりやすく解説
人気記事
No.1
Kotlin・Go・Swift記事の人気No1
Swiftのwhile文とrepeat while文を完全マスター!初心者にもわかる繰り返し処理の使い方と違い
No.2
Kotlin・Go・Swift記事の人気No2
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.3
Kotlin・Go・Swift記事の人気No3
Swift入門ガイド|基本構文と書き方をマスターしよう
No.4
Kotlin・Go・Swift記事の人気No4
Kotlinの正規表現(Regex)の使い方をやさしく解説!文字列操作の基本を初心者向けに学ぼう
No.5
Kotlin・Go・Swift記事の人気No5
Kotlinのwhen式を完全ガイド!初心者でもわかるパターンマッチング的な使い方
No.6
Kotlin・Go・Swift記事の人気No6
Kotlinのコンパニオンオブジェクトとは?初心者向けに使い方と役割をわかりやすく解説!
No.7
Kotlin・Go・Swift記事の人気No7
Kotlinで画面を作る!レイアウトXMLとビューの基本操作をやさしく解説
No.8
Kotlin・Go・Swift記事の人気No8
Swiftのオプショナル型とは?初心者でもわかる使い方とアンラップの基礎