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

Kotlinでコレクションの要素を変換するmap()の基本と応用例

Kotlinでコレクションの要素を変換するmap()の基本と応用例
Kotlinでコレクションの要素を変換するmap()の基本と応用例

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

生徒

「Kotlinのmap()関数って、どんなときに使うんですか?」

先生

map()関数は、コレクションの各要素に対して同じ処理をして、新しいコレクションを作るときに使いますよ。」

生徒

「それって例えばどんな処理ですか?」

先生

「たとえば、数字のリストを全部2倍にするような処理です。それでは、Kotlinのmap()関数の使い方を詳しく見ていきましょう!」

1. Kotlinのmap()関数とは?

1. Kotlinのmap()関数とは?
1. Kotlinのmap()関数とは?

Kotlinのmap()関数は、リストや配列などのコレクションの中身を別の形に変換するための基本的な機能です。すべての要素に同じ処理を行い、その結果をまとめた新しいリストを作ることができます。

大きなポイントは、元のリストは一切変更されないという点です。安全にデータを加工できるため、初心者でも安心して使えます。

たとえば「数字をすべて2倍にする」「文字列を加工する」といった処理を、for文を書かずにシンプルに表現できます。


fun main() {
    val numbers = listOf(1, 2, 3)
    val result = numbers.map { it * 2 }
    println(result)
}

この例では、numbersの各要素に対して「2倍する」処理を行い、[2, 4, 6]という新しいリストを作っています。itはリストの中の1つ1つの値を表しており、初心者は「今処理している要素」と考えると理解しやすいです。

2. 具体的な使い方の例

2. 具体的な使い方の例
2. 具体的な使い方の例

ここでは、map()関数の動きをイメージしやすいように、数字を2倍にするとてもシンプルな例を使って説明します。プログラミングが初めての方でも、「何が起きているか」を追いながら読める内容です。

まず、numbersというリストには複数の数字が入っています。map()は、そのリストの先頭から順番に1つずつ取り出して、指定した処理を行います。


fun main() {
    val numbers = listOf(1, 2, 3, 4, 5)
    val doubled = numbers.map { it * 2 }
    println(doubled)
}

[2, 4, 6, 8, 10]

map { it * 2 }の中のitは、「今処理している1つの数字」を表しています。1 → 2、2 → 4、3 → 6…というように変換され、結果だけを集めた新しいリストが作られます。

このようにmap()を使うと、「繰り返し処理」と「変換」をまとめて書けるため、コードが短くなり、何をしているのかも分かりやすくなります。

3. map()関数で文字列を変換する

3. map()関数で文字列を変換する
3. map()関数で文字列を変換する

map()は数字だけでなく、文字列のリストを加工したいときにも便利です。たとえば「名前を表示用に整える」「大文字・小文字をそろえる」「末尾に敬称を付ける」など、同じルールでまとめて変換できます。

ここでは分かりやすく、名前のリストをすべて大文字にしてみましょう。文字列の変換でも、流れは数字のときと同じで、1つずつ取り出して処理した結果が新しいリストになります。


fun main() {
    val names = listOf("taro", "hanako", "jiro")
    val upperNames = names.map { it.uppercase() }
    println(upperNames)
}

[TARO, HANAKO, JIRO]

uppercase()は、文字列をすべて大文字に変換するKotlinの関数です。map { it.uppercase() }itは、リストの中の「今処理している名前」を指します。つまり、"taro""TARO"のように順番に変換されます。

初心者向け:少しだけ実用的な例(敬称を付ける)

同じ要領で、各名前の後ろに「さん」を付けることもできます。


fun main() {
    val names = listOf("taro", "hanako", "jiro")
    val withHonorific = names.map { "${it}さん" }
    println(withHonorific)
}

文字列の結合もmap()でまとめて処理できるので、表示用データの整形やラベル付けにも使いやすいです。

4. map()でオブジェクトのプロパティを取り出す

4. map()でオブジェクトのプロパティを取り出す
4. map()でオブジェクトのプロパティを取り出す

map()は、数値や文字列だけでなく、クラス(オブジェクト)のリストにもよく使われます。特に「必要な情報だけを取り出したい」ときにとても便利です。

たとえば、人物データのリストがあり、その中から「名前だけ」「年齢だけ」といった一部のプロパティだけを集めたい場合、map()を使うとシンプルに書けます。


data class Person(val name: String, val age: Int)

fun main() {
    val people = listOf(
        Person("Taro", 20),
        Person("Hanako", 25),
        Person("Jiro", 30)
    )
    val names = people.map { it.name }
    println(names)
}

[Taro, Hanako, Jiro]

ここでのitは、リストの中のPersonオブジェクトを1人ずつ表しています。it.nameと書くことで、「その人の名前」だけを取り出しています。

初心者向け:別のプロパティを取り出す例

同じ書き方で、年齢のリストを作ることもできます。


fun main() {
    val people = listOf(
        Person("Taro", 20),
        Person("Hanako", 25),
        Person("Jiro", 30)
    )
    val ages = people.map { it.age }
    println(ages)
}

このようにmap()を使えば、オブジェクトのリストから必要な情報だけを抜き出して、扱いやすい形に変換できます。

5. map()と他の処理を組み合わせる

5. map()と他の処理を組み合わせる
5. map()と他の処理を組み合わせる

Kotlinではmap()を単体で使うだけでなく、ほかのコレクション操作(filterなど)とつなげて書くことができます。これを使うと、「条件でしぼる → 形を変える」という流れを、上から下へ読むだけで理解できるコードになります。

たとえば「偶数だけを取り出して、それを2倍にする」という処理は、次のように1行でまとめられます。


fun main() {
    val numbers = listOf(1, 2, 3, 4, 5, 6)
    val result = numbers.filter { it % 2 == 0 }.map { it * 2 }
    println(result)
}

[4, 8, 12]

filter()は「条件に合うものだけ残す」関数で、ここではit % 2 == 0(2で割って余りが0=偶数)だけを残しています。その結果のリストに対して、続けてmap()で2倍しています。

初心者向け:処理の順番をイメージしよう

このコードは「①偶数だけにする → ②残った数字を2倍にする」という順番で動きます。for文で同じことを書くより短くなりやすく、やりたいことが見えやすいのがポイントです。

6. map()とmapIndexed()の違いとは?

6. map()とmapIndexed()の違いとは?
6. map()とmapIndexed()の違いとは?

さらに応用として、mapIndexed()という関数もあります。これは、各要素の「位置(インデックス)」も使いたいときに便利です。


fun main() {
    val fruits = listOf("apple", "banana", "cherry")
    val labeled = fruits.mapIndexed { index, fruit -> "$index: $fruit" }
    println(labeled)
}

[0: apple, 1: banana, 2: cherry]

mapIndexedでは、最初の引数がインデックス番号、2つ目が要素になります。何番目かを付けて表示したいときなどに便利です。

7. map()関数を使う上での注意点

7. map()関数を使う上での注意点
7. map()関数を使う上での注意点

map()関数は元のリストを変更せず、新しいリストを作るのが基本です。なので、元のデータを壊さずに処理をしたいときにとても安全です。

また、for文を使うよりコードが短くなり、見やすくなります。特に処理が単純な場合、map()を使うことで可読性(読みやすさ)が大きく上がります。

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

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

※ Amazon広告リンク

まとめ

まとめ
まとめ

Kotlinのmap関数は、コレクションを扱ううえで非常に重要な要素であり、要素ごとに変換を加えて新しいリストを生成する操作として、日常的な開発の中で多くの場面で役立ちます。特に、データを加工したり、形を整えたり、必要な値だけを抽出したりする処理はアプリケーションの至るところで発生します。そのため、mapをどのように使うかを理解することは、Kotlinを扱う上での大きな基礎となります。数字を二倍にしたり、文字列を大文字にしたりといった基本的な変換だけでなく、オブジェクトのリストから特定のプロパティを取り出す処理や、filterと組み合わせることでより柔軟なデータ加工もできます。 さらに、mapは元のリストを変更しないという特徴を持つため、安全に変換処理が行える点も大きな強みです。副作用を避けつつ、意図通りの結果に変換できることは、特に複雑なデータを扱うときほど重要になります。また、for文よりも短く、読みやすく書けることが多いため、コード全体の理解がしやすくなる利点もあります。mapを自然に使えるようになると、関数型スタイルでのコーディングがぐっと身近になり、コードの表現力も高まっていきます。 実践的な場面では、mapは単体で使うよりも、filterやmapIndexedなどと組み合わせて処理の流れを整理していくことで本領を発揮します。データを加工しながら分類したり、各要素に番号をつけて整列させたりと、発展的な使い方も豊富です。開発経験を積むほど、mapがどれほど多くの局面で役立つかを実感できるようになるでしょう。そこで、ふり返りとしてmapを活用したサンプルコードを以下に示します。これまでの記事内容で学んだ要素を自然に確認できる構成になっていますので、自分のプロジェクトでも使える形を意識して見てみてください。

ふり返り用サンプルプログラム


data class Product(val name: String, val price: Int)

fun main() {
    val items = listOf(
        Product("apple", 120),
        Product("banana", 90),
        Product("orange", 150)
    )

    val names = items.map { it.name.uppercase() }
    val pricesWithTax = items.map { (it.price * 1.1).toInt() }
    val labelList = items.mapIndexed { index, item -> "${index}番目:${item.name}:${item.price}円" }

    println(names)
    println(pricesWithTax)
    println(labelList)
}

このサンプルでは、mapで文字列を加工したり、金額に税計算を加えたり、mapIndexedで番号付きのラベルに変換したりと、mapの幅広い使い道を一度に確認できる例になっています。特に、日常的な処理でもよく出てくる「数値計算」「ラベル生成」「文字列変換」といった要素が自然に含まれているため、実務でも応用しやすい構造になっています。さらに、mapが元のリストを変更せず、新しい値を返してくれる仕組みのおかげで、変換処理が明確で読みやすく、コードの安全性も高まります。 mapは単純な関数のように見えて、データの流れを整理する強力な道具です。多くの処理を簡潔にまとめられるため、プロジェクトが大きくなるほど、mapの役割はますます大きくなります。今回学んだ内容を基礎として、mapやfilterといった関数を意識的に使い分けることで、より直感的で読みやすいKotlinコードを書けるようになっていきます。ぜひ、今後の実装でもmapの便利さを活かして、わかりやすいコードを意識してみてください。

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

生徒

「mapってただ変換するだけだと思っていましたけど、実際は色々な使い方ができるんですね。特にfilterと組み合わせると、すごく読みやすくなるのがびっくりしました。」

先生

「そうですね。mapは単純そうに見えて、Kotlinではとても重要な仕組みなんです。データを扱う場面ではほとんど登場するので、自然に使いこなせるとコードの質が大きく変わりますよ。」

生徒

「mapIndexedも便利ですね。番号をつけたいときに毎回for文を書いていたので、これからはもっとラクに書けそうです!」

先生

「その通りです。コレクション処理はKotlinの得意分野なので、mapやfilterを組み合わせながら、自分の書きやすい形を見つけていくと良いですね。」

生徒

「今日のまとめですごく理解が深まりました。これからの開発でどんどん使ってみます!」

関連セミナーのご案内

【未経験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の演算子一覧と使い方!算術・比較・論理演算子の基本を解説