カテゴリ: Swift 更新日: 2025/12/03

Swiftのasync/awaitと関数の使い方をやさしく解説!初心者でも非同期処理が理解できる

Swift async/await と関数の組み合わせ方
Swift async/await と関数の組み合わせ方

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

生徒

「Swiftで非同期処理を使いたいんですが、asyncとawaitってどうやって関数と組み合わせればいいんですか?」

先生

「とても大事なポイントですね!Swiftでは、非同期処理をより読みやすく、書きやすくするためにasyncawaitというキーワードが導入されました。」

生徒

「でも、今ひとつイメージがわかなくて…。普通の関数とどう違うんですか?」

先生

「それでは、まずは基本の使い方からゆっくり見ていきましょう!」

1. Swiftのasync/awaitとは?

1. Swiftのasync/awaitとは?
1. Swiftのasync/awaitとは?

async(アシンク)とawait(アウェイト)は、Swiftで非同期処理を簡単に書くためのキーワードです。「非同期処理」とは、何か時間がかかる作業(ネットからデータを取ってくるなど)をしている間に、他の処理を止めずに同時に進めることです。

従来のSwiftではcompletionHandlerという形で非同期処理を書いていましたが、読みづらく、ネスト(入れ子)が深くなることも多かったです。

そこで登場したのがasyncawait。まるで「普通の関数」のように、処理の流れを読みやすく書けるのが特徴です。

2. async関数の基本的な書き方

2. async関数の基本的な書き方
2. async関数の基本的な書き方

async関数は、非同期処理を含む関数のことです。定義するには、関数名の前にasyncをつけます。


func fetchMessage() async -> String {
    return "こんにちは、非同期の世界!"
}

このように書くことで、戻り値の型(ここではString)を持つ非同期関数が作れます。

3. awaitの使い方とは?

3. awaitの使い方とは?
3. awaitの使い方とは?

awaitは、async関数を呼び出すときに使います。「この関数の処理が終わるまで待つ」という意味を持ちます。awaitを使うことで、まるで同期処理のように、順序を守ったコードが書けるようになります。


func showMessage() async {
    let message = await fetchMessage()
    print(message)
}

ここではfetchMessage()という非同期関数をawaitで呼び出し、その結果をmessageという変数に入れています。

4. 実行はTask内で行う

4. 実行はTask内で行う
4. 実行はTask内で行う

async関数は、そのままでは直接呼び出すことができません。非同期処理のための「コンテナ」のような役割をするTaskの中で呼び出す必要があります。


Task {
    await showMessage()
}

これで非同期関数showMessage()が実行されます。Swiftのプログラムでは、このようにTaskを使って非同期処理のスタート地点を作ります。

5. 時間のかかる処理を再現してみよう

5. 時間のかかる処理を再現してみよう
5. 時間のかかる処理を再現してみよう

非同期処理の代表的な例は、サーバーからデータを取得することですが、ここでは簡単に、Task.sleepを使って2秒待つような処理を作ってみましょう。


func waitAndPrint() async {
    print("処理を開始します")
    try? await Task.sleep(nanoseconds: 2_000_000_000)
    print("2秒待ちました")
}

これをTaskで呼び出せば、画面に「処理を開始します」と表示されたあと、2秒待ってから「2秒待ちました」と表示されます。


Task {
    await waitAndPrint()
}

処理を開始します
(2秒待つ)
2秒待ちました

6. 非同期処理を使う場面とは?

6. 非同期処理を使う場面とは?
6. 非同期処理を使う場面とは?

非同期処理は、次のような場面でよく使われます:

  • インターネットからデータを取得するとき(APIアクセスなど)
  • 画像やファイルの読み込み処理
  • 音声や動画の再生準備
  • ゲームなどで時間のかかる演出処理

これらの処理は、完了するまでに時間がかかることがあります。もし全部を「同期的」にやってしまうと、アプリが固まってしまう原因になります。非同期処理を使えば、画面を止めずに裏で処理を進めることができます。

7. async/awaitと関数のポイン

7. async/awaitと関数のポイン
7. async/awaitと関数のポイン

この記事では、Swiftで非同期処理を扱うときに使うasyncawaitの使い方を学びました。非同期関数の定義、呼び出し、Taskによる実行など、基本的な部分を丁寧に説明しました。

Swiftの非同期処理は、見た目がシンプルなだけでなく、エラー処理やデータ処理と組み合わせることで、さらにパワフルな書き方ができるようになります。

カテゴリの一覧へ
新着記事
New1
Go言語
Go言語のオブジェクト指向の特徴を完全ガイド!初心者でも理解できる他言語との違い
New2
Go言語
Go言語の条件分岐の見やすい書き方を徹底解説!初心者でもわかるif文の使い方
New3
Kotlin
Kotlinのクラス設計に役立つベストプラクティスまとめ|初心者でもわかるクラス設計の考え方
New4
Kotlin
Kotlinでアーキテクチャ設計の基本!MVC・MVP・MVVMの違いを解説
人気記事
No.1
Java&Spring記事人気No1
Go言語
Go言語の関数パラメータ!値渡しと参照渡しの違いを理解しよう
No.2
Java&Spring記事人気No2
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.3
Java&Spring記事人気No3
Swift
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.4
Java&Spring記事人気No4
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.5
Java&Spring記事人気No5
Kotlin
Kotlinのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.6
Java&Spring記事人気No6
Kotlin
Kotlinの演算子一覧と使い方!算術・比較・論理演算子の基本を解説
No.7
Java&Spring記事人気No7
Go言語
Go言語のWebアプリにおけるセキュリティベストプラクティス集
No.8
Java&Spring記事人気No8
Swift
Swiftのオプショナル型とは?初心者でもわかる使い方とアンラップの基礎