カテゴリ: 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(フォーイーチ)というのは、配列の中の要素を順番に処理してくれる関数で、中身の処理をクロージャで書くのがポイントです。


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

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

Swift実践入門をAmazonで見る

※ Amazon広告リンク

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. 実生活でのイメージ:クロージャは料理のレシピ

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

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

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

カテゴリの一覧へ
新着記事
New1
Go言語
Go言語の短絡評価(ショートサーキット)を使った条件式の工夫をやさしく解説!初心者でも理解できる基本知識
New2
Go言語
Go言語の構造体の初期化パターンとコンストラクタ的関数の書き方を徹底解説!初心者でもわかる基本と実用例
New3
Kotlin
Kotlinの例外処理とキャンセルの連携を完全ガイド!初心者でもわかるCoroutineExceptionHandlerの使い方
New4
Go言語
Go言語のクロージャとは?関数内関数の活用例と仕組み
人気記事
No.1
Java&Spring記事人気No1
Kotlin
KotlinのChannelでデータをやり取りする方法を完全ガイド!初心者にもわかる非同期通信の基本
No.2
Java&Spring記事人気No2
Go言語
Go言語でのDB接続情報を環境変数で管理する方法|初心者でも安全に設定
No.3
Java&Spring記事人気No3
Kotlin
Kotlinのビルド設定エラーと解決法まとめ!初心者向けGradleトラブル対処ガイド
No.4
Java&Spring記事人気No4
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.5
Java&Spring記事人気No5
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.6
Java&Spring記事人気No6
Kotlin
Kotlinでテキスト表示・編集!初心者でもわかるTextViewとEditTextの使い方
No.7
Java&Spring記事人気No7
Kotlin
Kotlin DSLとGroovy DSLの違いをやさしく解説!初心者でもわかるGradleスクリプトの使い分け
No.8
Java&Spring記事人気No8
Go言語
Go言語のgo.modファイル完全ガイド!初心者でもわかる仕組みと書き方

💻 作業効率アップに

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

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

※ Amazon広告リンク