カテゴリ: Swift 更新日: 2026/01/03

Swiftの高階関数map・filter・reduceを完全解説!初心者でもわかる配列操作の基本

Swift 高階関数(map, filter, reduce)の使い方
Swift 高階関数(map, filter, reduce)の使い方

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

生徒

「Swiftで配列の中身を一気に変換したり、条件で取り出したりできる方法ってありますか?」

先生

「はい、Swiftには『高階関数(こうかいかんすう)』という便利なしくみがあります。たとえばmapfilterreduceなどがそれにあたりますよ。」

生徒

「それって難しそうな名前ですね…。初心者でも使えるものなんですか?」

先生

「もちろんです!例を交えながら、一つひとつ丁寧に説明しますね!」

1. 高階関数(こうかいかんすう)とは?

1. 高階関数(こうかいかんすう)とは?
1. 高階関数(こうかいかんすう)とは?

高階関数とは、「関数を引数にしたり、関数を戻り値として返す関数」のことです。

難しく聞こえるかもしれませんが、Swiftではmapfilterreduceなどが代表的な高階関数で、特に配列(Array)と一緒に使うことが多いです。

高階関数を使うと、for文やif文を使わずに、短くわかりやすいコードで配列を処理することができます。

2. map関数:配列の中身を変換する

2. map関数:配列の中身を変換する
2. map関数:配列の中身を変換する

map関数は、配列の中身を一つずつ取り出して、別の形に変換するために使います。

例えば、「全ての数字を2倍にする」といった操作が簡単にできます。


let numbers = [1, 2, 3, 4, 5]
let doubled = numbers.map { $0 * 2 }
print(doubled)

[2, 4, 6, 8, 10]

$0は、「今処理している値」を意味します。ここでは、各要素に* 2して、全体を変換しています。

3. filter関数:条件に合うものだけを取り出す

3. filter関数:条件に合うものだけを取り出す
3. filter関数:条件に合うものだけを取り出す

filter関数は、配列の中から条件に合うものだけを取り出すときに使います。

たとえば、「偶数(2で割り切れる数)だけを取り出す」場合に便利です。


let numbers = [1, 2, 3, 4, 5]
let even = numbers.filter { $0 % 2 == 0 }
print(even)

[2, 4]

この例では、$0 % 2 == 0という条件を使って、2で割り切れる数だけを取り出しています。

4. reduce関数:すべてをまとめて一つの値にする

4. reduce関数:すべてをまとめて一つの値にする
4. reduce関数:すべてをまとめて一つの値にする

reduce関数は、配列のすべての値を使って一つの結果にまとめるときに使います。

よくあるのが、「すべての数の合計を出す」というパターンです。


let numbers = [1, 2, 3, 4, 5]
let total = numbers.reduce(0) { $0 + $1 }
print(total)

15

$0が「これまでの合計」、$1が「今の値」です。最初の値は0(初期値)にしています。

5. map・filter・reduceの使い分け

5. map・filter・reduceの使い分け
5. map・filter・reduceの使い分け

ここで、高階関数の使い分けを簡単にまとめておきます。

  • map:すべての要素を別の形に変換したいとき
  • filter:条件に合うものだけを取り出すとき
  • reduce:すべての要素を一つの結果にまとめるとき

これらを上手に使うことで、Swiftの配列処理が劇的にわかりやすくなります

6. 複数の高階関数を組み合わせて使う

6. 複数の高階関数を組み合わせて使う
6. 複数の高階関数を組み合わせて使う

map、filter、reduceは、組み合わせて使うこともできます

例えば、「1〜10のうち偶数だけを2倍にして、合計を出す」というようなことも簡単です。


let total = (1...10)
    .filter { $0 % 2 == 0 }
    .map { $0 * 2 }
    .reduce(0) { $0 + $1 }

print(total)

60

このように、filtermapreduceの順に処理することで、複雑な操作も読みやすく書けるのが特徴です。

7. 初心者がつまずきやすいポイント

7. 初心者がつまずきやすいポイント
7. 初心者がつまずきやすいポイント

高階関数は便利ですが、最初に覚えるときに注意する点があります。

  • $0$1などの記法に慣れないと混乱しやすい
  • 処理の流れをイメージするのが難しいと感じることもある
  • 複雑に組み合わせすぎると、逆に読みにくくなることがある

最初はfor文などと比べながら使ってみると、理解が進みやすいです。

まとめ

まとめ
まとめ

Swiftの高階関数であるmap・filter・reduceは、配列操作を効率よく行うための基本的かつ非常に重要な機能です。特にコードの簡潔さや見やすさを保ちながら、複雑な処理を自然な流れで書ける点が大きな魅力です。この記事で紹介したように、mapは「すべての要素を変換する処理」、filterは「条件に合うものだけを取り出す処理」、reduceは「複数の値をひとつにまとめる処理」を担当します。それぞれの役割が明確であるため、組み合わせて使うことでSwiftの配列処理は一気にわかりやすく整理されます。 また、初心者がつまずきやすいポイントとして、処理の流れを頭の中でイメージしにくいことや、クロージャ内で使われる$0や$1といった省略記法に慣れる必要があることも挙げられます。しかし、一度慣れてしまえばfor文と比較しても読みやすく、関数型のスタイルで整ったコードを書く手助けになります。特に複数の操作を連続で書ける点は、データ変換や条件抽出、集計処理が多いアプリケーションでは大きな力を発揮します。 実務レベルでも、SwiftUIや非同期処理と組み合わせて利用する場面は非常に多く、map・filter・reduceの理解はアプリ開発全体の理解にもつながっていきます。配列操作はどのアプリでも頻繁に登場するため、今回の内容を繰り返し実践しながら慣れていくことで、Swiftの学習効率は大きく向上します。まずはシンプルな例から試し、徐々に複数の高階関数を組み合わせる練習をすると理解が深まりやすくなります。

サンプルプログラムでもう一度整理しよう


let values = Array(1...10)

// 偶数だけ取り出して2倍にし、合計を求める処理
let result = values
    .filter { $0 % 2 == 0 }
    .map { $0 * 2 }
    .reduce(0) { $0 + $1 }

print(result)

上のサンプルでは、filterで偶数を取り出し、mapで数値を2倍にし、reduceで合計を出しています。Swiftの高階関数は、このように「流れ」をつなげて書くことで、処理の意味を自然に読み取ることができます。これがfor文では複数行に分かれ、可読性が下がることも多いため、慣れるほど高階関数のほうが便利で直感的になります。

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

生徒「先生、今日のmap・filter・reduceの説明で、配列操作がすごくわかりやすく感じました!特にmapで変換できるのが便利ですね。」

先生「そうですね。mapは『全部を変換したいとき』に最適です。実務でも一番よく使う関数ですよ。filterやreduceと組み合わせると、処理の流れがきれいにまとまります。」

生徒「filterは条件で取り出すだけなのに、for文で書くより読みやすいのが良かったです。reduceも最初は少し難しく感じたけど、合計をまとめる例でよく理解できました。」

先生「reduceは慣れると強力ですよ。初期値から値を順にまとめていく仕組みは、集計処理や文字結合などにも使えます。組み合わせて使うことでSwiftのデータ処理は本当に柔軟になります。」

生徒「今日の内容を忘れないように、自分でもいくつかmap・filter・reduceの例を作ってみます!」

先生「それが一番大事です。たくさん触って理解を深めていきましょう。高階関数を習得するとSwiftのコードが一気に美しくなりますよ。」

Swiftを基礎から実践レベルまで学びたい人や、 iOSアプリ開発を本格的に始めたい人には、 定番の入門+実践書がこちらです。

Swift実践入門をAmazonで見る

※ Amazon広告リンク

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

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

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

Swiftの高階関数とは何ですか?

Swiftの高階関数とは、「関数を引数に渡したり、関数を戻り値として返す関数」のことです。代表的なものにmap、filter、reduceがあります。
カテゴリの一覧へ
新着記事
New1
Kotlin
Kotlinのインライン関数の基本とメリットを解説!初心者でも理解できる書き方
New2
Go言語
Go言語の変数と定数の基本!var・constの使い方とデータ型の基礎知識
New3
Kotlin
KotlinのLintとコード整形ツールの使い方を解説!初心者でも安心のクリーンコード入門
New4
Kotlin
Kotlinのネストクラス・内部クラス・匿名クラスの使い方を初心者向けにわかりやすく解説!
人気記事
No.1
Java&Spring記事人気No1
Go言語
Go言語でのDB接続情報を環境変数で管理する方法|初心者でも安全に設定
No.2
Java&Spring記事人気No2
Kotlin
KotlinのChannelでデータをやり取りする方法を完全ガイド!初心者にもわかる非同期通信の基本
No.3
Java&Spring記事人気No3
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.4
Java&Spring記事人気No4
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.5
Java&Spring記事人気No5
Kotlin
Kotlinのビルド設定エラーと解決法まとめ!初心者向けGradleトラブル対処ガイド
No.6
Java&Spring記事人気No6
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.7
Java&Spring記事人気No7
Go言語
Go言語のgo.modファイル完全ガイド!初心者でもわかる仕組みと書き方
No.8
Java&Spring記事人気No8
Kotlin
Kotlinでテキスト表示・編集!初心者でもわかるTextViewとEditTextの使い方

💻 作業効率アップに

ノートPCを縦置きしてデスクを広く。
省スペースで片づく定番スタンド

UGREEN 縦型スタンドをAmazonで見る

※ Amazon広告リンク