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

Swiftのクロージャと制御構造を徹底解説!初心者でも理解できる使い方と活用法

Swift クロージャと制御構造の組み合わせ活用法
Swift クロージャと制御構造の組み合わせ活用法

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

生徒

「Swiftのクロージャって聞いたことあるけど、どうやって使うんですか?しかも制御構造と一緒に使うってどういうことですか?」

先生

「いい質問ですね。クロージャとは、小さな処理のかたまりのことで、関数のように使えます。そして、if文for文などの制御構造と組み合わせることで、より柔軟なコードが書けるようになるんですよ。」

生徒

「なるほど!でも、具体的にどうやって使うんですか?」

先生

「それでは、Swiftのクロージャと制御構造の組み合わせ方を、初心者でも分かるように順を追って説明していきましょう!」

1. クロージャとは?まずは基本を理解しよう

1. クロージャとは?まずは基本を理解しよう
1. クロージャとは?まずは基本を理解しよう

Swift(スウィフト)におけるクロージャとは、「処理のかたまり」を変数のように扱えるものです。簡単に言えば、関数をその場で定義して使うイメージです。

クロージャは、特にリストや配列を並び替えたり、繰り返し処理を簡潔に書いたりするときに活用されます。

例えば、以下のようなコードがクロージャの基本形です。


let greet = {
    print("こんにちは、Swiftの世界へようこそ!")
}
greet()

ここではgreetという変数に、メッセージを表示する処理を持たせています。そしてgreet()と書くことで、それを実行できます。

2. 制御構造とは?Swiftのif文やfor文もチェック!

2. 制御構造とは?Swiftのif文やfor文もチェック!
2. 制御構造とは?Swiftのif文やfor文もチェック!

制御構造(せいぎょこうぞう)とは、プログラムの流れをコントロールする仕組みのことです。代表的なものに、以下のような構文があります。

  • if文:条件によって処理を分ける
  • for-in文:繰り返し処理をする
  • while文:条件が合う限り繰り返す

このような制御構造とクロージャを組み合わせることで、柔軟で効率の良いプログラムを書くことができます。

3. クロージャとfor文の組み合わせ例

3. クロージャとfor文の組み合わせ例
3. クロージャとfor文の組み合わせ例

Swiftでは、for文とクロージャを一緒に使うことで、配列の中身を1つずつ取り出して何らかの処理を行う、というコードが非常にシンプルに書けます。


let names = ["さくら", "たろう", "はなこ"]

names.forEach { name in
    print("こんにちは、\(name)さん!")
}

forEach(フォーイーチ)というのは、配列の中の要素を順番に処理してくれる関数で、中身の処理をクロージャで書くのがポイントです。


こんにちは、さくらさん!
こんにちは、たろうさん!
こんにちは、はなこさん!

4. 条件分岐とクロージャの活用

4. 条件分岐とクロージャの活用
4. 条件分岐とクロージャの活用

次は、if文のような条件分岐の中でクロージャを使うパターンです。


let isLoggedIn = true

let showMessage = {
    print("ログイン成功です!")
}

if isLoggedIn {
    showMessage()
}

このように、クロージャを事前に定義しておき、条件に合ったときだけ実行するという使い方もできます。

5. クロージャと配列のfilterメソッド

5. クロージャと配列のfilterメソッド
5. クロージャと配列のfilterメソッド

もう少し応用的な使い方として、filter(フィルター)というメソッドで、条件に合った要素だけを取り出すときにもクロージャが使えます。


let numbers = [1, 2, 3, 4, 5, 6]
let evenNumbers = numbers.filter { number in
    return number % 2 == 0
}
print(evenNumbers)

[2, 4, 6]

filterの中で使っている{ number in ... }がクロージャです。2で割り切れる数字だけを取り出す処理をしています。

6. 引数付きクロージャで柔軟な処理

6. 引数付きクロージャで柔軟な処理
6. 引数付きクロージャで柔軟な処理

クロージャは、関数のように引数(ひきすう)を受け取ることもできます。


let sayHello = { (name: String) in
    print("こんにちは、\(name)さん!")
}

sayHello("ゆうき")

こんにちは、ゆうきさん!

このように、使いたいタイミングで名前を渡して実行することができます。

7. クロージャの中に制御構造を入れることも可能

7. クロージャの中に制御構造を入れることも可能
7. クロージャの中に制御構造を入れることも可能

逆に、クロージャの中でif文やfor文を使うこともよくあります。


let numbers = [1, 2, 3, 4, 5]

let checkNumbers = {
    for number in numbers {
        if number % 2 == 0 {
            print("\(number) は偶数です")
        } else {
            print("\(number) は奇数です")
        }
    }
}

checkNumbers()

1 は奇数です
2 は偶数です
3 は奇数です
4 は偶数です
5 は奇数です

このように、クロージャの中にforifを入れて、少し複雑な処理も書けます。

8. 実生活でのイメージ:クロージャは料理のレシピ

8. 実生活でのイメージ:クロージャは料理のレシピ
8. 実生活でのイメージ:クロージャは料理のレシピ

初心者の方には、クロージャを「料理のレシピ」に例えるとわかりやすいかもしれません。

レシピを作っておけば、必要なときにその通りに作ることができますよね。それと同じように、クロージャは「どういう処理をするかを記録しておいて、あとで実行するもの」なんです。

制御構造は、「どのレシピを使うか決める判断」や「何回料理を作るか決めるタイマー」のようなものです。

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

Swift実践入門をAmazonで見る

※ Amazonアソシエイト・プログラムを利用しています

カテゴリの一覧へ
新着記事
New1
Go言語
Go言語のfmt.Errorf関数を使ったエラーメッセージ整形方法
New2
Kotlin
Kotlinで依存性注入を実現するDagger/Hiltの基本をやさしく解説!初心者向けDI入門
New3
Go言語
Go言語のhttp.ResponseWriterとhttp.Requestの仕組みを理解しよう
New4
Kotlin
Kotlinの正規表現(Regex)の使い方をやさしく解説!文字列操作の基本を初心者向けに学ぼう
人気記事
No.1
Java&Spring記事人気No1
Go言語
Go言語のテストでタイムアウト・並行処理を扱うポイント
No.2
Java&Spring記事人気No2
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.3
Java&Spring記事人気No3
Kotlin
KotlinのAPI通信でGETリクエストを送る方法!初心者向け徹底ガイド
No.4
Java&Spring記事人気No4
Swift
SwiftのURLSessionでのネットワークエラー対策!再試行とタイムアウトを初心者向けに解説
No.5
Java&Spring記事人気No5
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.6
Java&Spring記事人気No6
Kotlin
Kotlinのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.7
Java&Spring記事人気No7
Go言語
Go言語のテストフレームワークTestify入門!初心者でもわかるテストとデバッグ
No.8
Java&Spring記事人気No8
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!