カテゴリ: Kotlin 更新日: 2026/03/08

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を基礎からしっかり学びたい人や、 Java経験を活かしてモダンな言語にステップアップしたい人には、 定番の入門書がこちらです。

基礎からわかるKotlinをAmazonで見る

※ Amazon広告リンク

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

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

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

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

Kotlinの関数リテラルとは、名前をつけずにその場で定義できる関数のことです。「匿名関数」とも呼ばれ、一時的に使いたい処理を簡潔に記述できます。

Kotlinの匿名関数とラムダ式はどう違うのですか?

Kotlinの匿名関数はreturnを明示的に使えるなど複雑な処理に向いており、ラムダ式は短く簡単に書けるのが特徴です。使い分けが大切です。
関連セミナーのご案内

【未経験OK】Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験する60分

「プログラミングを始めたい」を形にする。最新言語Kotlinで楽しむ、ものづくりの第一歩。

本講座は、プログラミング経験が全くない方のためのエントリー講座です。「コードを書くってどういうこと?」という基本から、世界中で使われている最新言語Kotlin(コトリン)を使って、実際にプログラムを動かすまでを体験します。難しい理屈よりも、まずは「自分の手で動かす楽しさ」を最短距離で実感していただきます。

具体的な体験内容と環境

【つくるもの】
簡単な言葉を入力すると自動で返答してくれる「対話型ミニプログラム」や、計算を自動化する「便利ツール」をゼロから作成します。黒い画面に自分の書いた文字が表示される瞬間は、最高の感動体験です。

【開発環境】
プロのエンジニアが実際に使っている開発ツールIntelliJ IDEA(インテリジェイ)をインストールします。ボタン一つで日本語化し、初心者でも迷わず操作できる「魔法の設定」を一緒に行います。

この60分で得られる3つの体験

1. 自分のパソコンが「開発基地」に

プロと同じ道具を揃えることで、明日から一人でもプログラミングを続けられる環境が整います。

2. プログラミングの「仕組み」がスッキリ

「変数」や「型」といった難しい言葉も、身近な例え話で解説。モヤモヤをゼロにします。

3. 「読みやすい」から「直せる」へ

Kotlinは英語に近くて読みやすいのが特徴。自分でコードを読んで、間違いを見つけるコツも伝授します。

※本講座は、パソコン操作が不安な方でも安心して受講いただける完全マンツーマンです。あなたのペースに合わせて、一つずつ丁寧に進めていきます。

セミナー画像

Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験

関連記事:
カテゴリの一覧へ
新着記事
New1
Go言語
Go言語のwhile的なforループの使い方!条件式ループの基本を解説
New2
Go言語
Go言語プログラムの実行方法まとめ!VSCode・ターミナルでの実行手順を解説
New3
Swift
Swift意味とは?プログラミング言語・金融・鳥の違いを徹底解説
New4
Swift
Swift 戻り値の扱い方と複数戻り値の返し方|初心者でも分かる関数の基本
人気記事
No.1
Java&Spring記事人気No1
Go言語
Go言語でリダイレクト処理を行う方法(http.Redirect)を初心者向けに解説
No.2
Java&Spring記事人気No2
Swift
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.3
Java&Spring記事人気No3
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.4
Java&Spring記事人気No4
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.5
Java&Spring記事人気No5
Go言語
Go言語のgo.modファイル完全ガイド!初心者でもわかる仕組みと書き方
No.6
Java&Spring記事人気No6
Go言語
Go言語で条件式を1行で書くコツ!三項演算子の代替と短縮記法
No.7
Java&Spring記事人気No7
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.8
Java&Spring記事人気No8
Kotlin
Kotlinの演算子一覧と使い方!算術・比較・論理演算子の基本を解説