0Pricing
Swift Academy · レッスン

async letと並行する子タスク

async letバインディングで独立した非同期処理を並行して実行します。

「async letと並行する子タスク」はCoddyKit上の無料Swift Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwift Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Swift Academyコースには全4レッスンが含まれています。

ようこそ

`async let` は複数の非同期処理を並行して実行します。すべての処理が直ちに開始され、必要なときに `await` で結果を待機します。

逐次実行と並行実行

```swift // Sequential — slow: let a = try await fetchA() let b = try await fetchB() // Concurrent with async let — fast: async let a = fetchA() async let b = fetchB() let (resultA, resultB) = try await (a, b) ```

async let の構文

```swift async let title = fetchTitle(id) async let author = fetchAuthor(id) async let content = fetchContent(id) let article = Article( title: try await title, author: try await author, content: try await content ) ```

すべて成功するか、すべて失敗するか

いずれかの `async let` バインディングがエラーを投げると、そのエラーが伝播します。システムは兄弟タスクを自動的にキャンセルします。

ループ内の async let

```swift var results: [Data] = [] await withTaskGroup(of: Data.self) { group in for url in urls { group.addTask { try await URLSession.shared.data(from: url).0 } } for await data in group { results.append(data) } } ```

TaskGroup

```swift await withTaskGroup(of: Int.self) { group in for i in 1...5 { group.addTask { i * i } } var squares: [Int] = [] for await square in group { squares.append(square) } print(squares.sorted()) // [1,4,9,16,25] } ```

ThrowingTaskGroup

```swift try await withThrowingTaskGroup(of: User.self) { group in for id in ids { group.addTask { try await fetchUser(id: id) } } for try await user in group { process(user) } } ```

構造化された並行処理のツリー

`async let` と TaskGroup はタスクのツリーを形成します。親タスクはすべての子タスクの完了を待機します。親をキャンセルすると、すべての子タスクもキャンセルされます。

async let と TaskGroup の使い分け

• `async let` — コンパイル時に、並行して実行する処理の数が決まっている場合に使用します • `TaskGroup` — 配列の処理など、タスク数が動的に変わる場合に使用します

TaskGroup で並行実行数を制限する

```swift await withTaskGroup(of: Void.self) { group in let concurrency = 4 var running = 0 for url in urls { if running >= concurrency { await group.next() } group.addTask { await process(url) } running += 1 } } ```

クイックチェック

いずれかの `async let` タスクがエラーを投げると、兄弟タスクはどうなりますか?

振り返り

主なポイント: • `async let x = asyncWork()` — 直ちに並行して開始されます • `try await x` — 結果を待機します • すべて成功するか、すべて失敗するか: 失敗すると兄弟タスクがキャンセルされます • `withTaskGroup` — 並行タスクの動的な集合を扱います • 構造化された並行処理 = 子タスクの自動管理 次はアクターです。

よくある質問

「async letと並行する子タスク」レッスンは無料ですか?

はい。「async letと並行する子タスク」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Swift Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Swift Academyコースには全4レッスンが含まれています。

「async letと並行する子タスク」で何を学びますか?

async letバインディングで独立した非同期処理を並行して実行します。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Swift Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのSwift Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「async letと並行する子タスク」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このSwift Academyレッスンでコードを書いて実行できますか?

はい。すべてのSwift Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. async/await構文と非同期関数の呼び出し
  2. TaskとTaskのキャンセル
  3. async letと並行する子タスク
  4. アクター:共有可変状態の保護
← Swift Academyに戻る