カテゴリ: 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の非同期処理は、見た目がシンプルなだけでなく、エラー処理やデータ処理と組み合わせることで、さらにパワフルな書き方ができるようになります。

カテゴリの一覧へ
新着記事
Go言語の構造体でインターフェースを実装する方法を初心者向けにやさしく解説!
Kotlinの演算子一覧と使い方!算術・比較・論理演算子の基本を解説
Go言語の文字列フォーマット!fmt.Sprintfで簡単に出力を整形する方法
Go言語のエラーと例外の違いを初心者向けに整理!わかりやすく解説
人気記事
No.1
Kotlin・Go・Swift記事の人気No1
Swiftのwhile文とrepeat while文を完全マスター!初心者にもわかる繰り返し処理の使い方と違い
No.2
Kotlin・Go・Swift記事の人気No2
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.3
Kotlin・Go・Swift記事の人気No3
Swift入門ガイド|基本構文と書き方をマスターしよう
No.4
Kotlin・Go・Swift記事の人気No4
Kotlinの正規表現(Regex)の使い方をやさしく解説!文字列操作の基本を初心者向けに学ぼう
No.5
Kotlin・Go・Swift記事の人気No5
Kotlinのコンパニオンオブジェクトとは?初心者向けに使い方と役割をわかりやすく解説!
No.6
Kotlin・Go・Swift記事の人気No6
Kotlinで画面を作る!レイアウトXMLとビューの基本操作をやさしく解説
No.7
Kotlin・Go・Swift記事の人気No7
Kotlinのwhen式を完全ガイド!初心者でもわかるパターンマッチング的な使い方
No.8
Kotlin・Go・Swift記事の人気No8
Swiftのオプショナル型とは?初心者でもわかる使い方とアンラップの基礎