本リポジトリは書籍「Swift Concurrency入門」のサンプルコードを提供するリポジトリです。
「Swift Concurrency入門」はSwift 5.5から登場したSwift Concurrencyを解説する技術本です。
Swift Concurrencyの概念はもちろん、async/await
、Actor
、@MainActor
、Task
、AsyncSequence
、Sendable
といったSwift Concurrencyを利用する上で欠かせない型の使い方や、以前のコードとSwift Concurrencyのコードがどのように異なるのかの比較も紹介しています。
「Swift Concurrency入門」は同人版と商業版があります。 どちらもサンプルコードは本リポジトリで管理します。
サンプルコードの改定や本文の改定・誤字修正も本リポジトリでお知らせします。
- 商業版「一冊でマスター!Swift Concurrency入門」
- 同人版「Swift Concurrency入門」
非同期処理をasync/await
で記述できるようになりました。従来クロージャーによるコールバックと比べてどのように簡潔、安全になったのかを解説します。
マルチスレッドプログラミングにおいて、データ競合(data race)は典型的な不具合のひとつです。Swift Concurrencyではデータ競合を防ぐ新しい型、Actor
が導入されました。どのような特徴があるのかを解説します。
繰り返し処理でお馴染みのfor
文を非同期で書きましょう。
for await in
ループとそれを実現するAsyncSequence
プロトコルを学びます。
Swift Concurrencyの並行処理はTask
という単位で行われます。Task
の特徴を解説します。
Actor
を始め、並行コードにおいて、データ競合なしにデータを同時並行処理間で渡せるかどうかを表す新しいプロトコルSendable
が登場しました。Sendable
を解説し、コンパイラがエラーを出力した場合の対処方法を探ります。
既存のプロジェクトにSwift Concurrencyを導入する方法を解説します。async/await
、@MainActor
だけでなく、Swift 5.6の対応も行います。
本サンプルコードはMITで配布しています。 詳細はこちらをご覧ください。
サンプルコード自体の疑問や改善点があれば、ぜひPull Requestやissueの作成をお願いします。 ただし、書籍上、解説のためにわざとワーニングを出している箇所があるので予めご了承ください。
書籍本文自体の疑問があれば下記メールアドレスにまでご連絡ください。
releaseページをご覧ください。
https://github.com/SatoTakeshiX/first-step-swift-concurrency/releases