📚

[随時更新] Swift Concurrencyを学ぶためのリソースまとめ

2025/01/13に公開

私は最近、Swift Concurrencyに関して、網羅的に調査・学習しています。
本記事では、Swift Concurrencyに関わる学習リソースを整理します。

なお、自分用の備忘録・TODOリストも兼ねているので、リストの項目は随時追加・更新していきます。
私自身がきちんと目を通したものについては✅をつけます。
また、特におすすめの学習リソースについては👍をつけます。

公式のリソース

動画

  1. ✅👍 Meet async/await in Swift (WWDC21)
    async/awaitをはじめとするSwift Concurrencyの初歩が解説されている。
  2. ✅👍 Protect mutable state with Swift actors (WWDC21)
    actorSendableといったデータ競合を防ぐ仕組みの初歩が解説されている。
  3. ✅👍 Explore structured concurrency in Swift (WWDC21)
    Structured concurrencyあるいはUnstructured concurrencyとは何かという解説に加え、async letTaskGroupといったStructured concurrencyを実現する仕組みが解決されている。
  4. ✅👍 Meet AsyncSequence (WWDC21)
    AsyncSequence, AsyncThrowingSequenceの初歩的な使い方の説明である。
  5. ✅👍 Swift concurrency: Behind the scenes (WWDC21)
    従来のGCDによる並行処理の性能上の問題点に触れた上で、Swift Concurrencyのスレッド管理の仕組みやactor reentrancyによって、それらの問題点がどのように解消されるのか解説している。Swift Concurrencyの低レイヤの仕組みへの理解を深めたい人には、特に視聴をお勧めする。
  6. Swift concurrency: Update a sample app (WWDC21)
  7. ✅👍 Eliminate data races using Swift Concurrency (WWDC22)
    actorSendableを駆使することで、コンパイラによってデータ競合が生じないことを保証しつつ、並行処理を導入する方法について解説されている。Swift 6以降のstrict concurrencyを有効化する上でも必要となる知識である。
  8. Meet distributed actors in Swift (WWDC22)
    actorを拡張して、分散システム上でのデータの通信・同期に使用可能にする、Distributed actorというオープンソースライブラリの解説。かなり高度なトピックで、関心がある人以外は特に見る必要性は低いと思われる。
  9. Visualize and optimize Swift concurrency (WWDC22)
    Swift Concurrencyを適切に使えているかを、Xcode上のツールで確認する方法が解説されている。
  10. ✅👍 Beyond the basics of structured concurrency (WWDC23)
    Structured concurrencyやTaskGroupに関する、3.よりも詳細かつ最新の言語仕様に沿った解説である。
  11. Migrate your app to Swift 6 (WWDC24)

記事・ドキュメント

  1. Swift: Concurrency
  2. The Swift Programming Language: Concurrency
  3. Migrating to Swift6
  4. SE-0296: Async/await
  5. SE-0297: Concurrency Interoperability with Objective-C
  6. SE-0298: Async/Await: Sequences
  7. SE-0300: Continuations for interfacing async tasks with synchronous code
  8. SE-0302: Sendable and @Sendable closures
  9. SE-0304: Structured concurrency
  10. SE-0311: Task Local Values
  11. SE-0313: Improved control over actor isolation
  12. SE-0314: AsyncStream and AsyncThrowingStream
  13. SE-0316: Global actors
  14. SE-0317: async let bindings
  15. SE-0323: Asynchronous Main Semantics
  16. SE-0327: On Actors and Initialization
  17. SE-0331: Remove Sendable conformance from unsafe pointer types
  18. SE-0336: Distributed Actor Isolation
  19. SE-0337: Incremental migration to concurrency checking
  20. SE-0338: Clarify the Execution of Non-Actor-Isolated Async Functions
  21. SE-0340: Unavailable From Async Attribute
  22. SE-0343: Concurrency in Top-level Code
  23. SE-0344: Distributed Actor Runtime
  24. SE-0381: DiscardingTaskGroups
  25. SE-0388: Convenience Async[Throwing]Stream.makeStream methods
  26. SE-0392: Custom Actor Executors
  27. SE-0412: Strict concurrency for global variables
  28. SE-0417: Task Executor Preference
  29. SE-0418: Inferring Sendable for methods and key path literals
  30. SE-0420: Inheritance of actor isolation
  31. SE-0421: Generalize effect polymorphism for AsyncSequence and AsyncIteratorProtocol
  32. SE-0423: Dynamic actor isolation enforcement from non-strict-concurrency contexts
  33. SE-0424: Custom isolation checking for SerialExecutor
  34. SE-0428: Resolve DistributedActor protocols
  35. SE-0430: sending parameter and result values
  36. SE-0431: @isolated(any) Function Types
  37. SE-0433: Synchronous Mutual Exclusion Lock
  38. SE-0434: Usability of global-actor-isolated types
  39. SE-0442: Allow TaskGroup's ChildTaskResult Type To Be Inferred

3rd Partyのリソース

Swift Concurrency

  1. Modern Concurrency in Swift: Introducing Async/Await, Task Groups & Actors
  2. Modern Concurrency on Apple Platforms: Using async/await with Swift
  3. 一冊でマスター!Swift Concurrency入門

iOS Concurrency

  1. Concurrency by Tutorials: Multithreading in Swift with GCD and Operations

Concurrency一般

  1. Grokking Concurrency
  2. 並行プログラミング入門 ―Rust、C、アセンブリによる実装からのアプローチ

動画

  1. Xcode 16 & Swift 6 キャッチアップ: Swift Concurrencyの基礎と最重要ポイントを総復習
  2. async/awaitやactorでiOSアプリ開発がどう変わるか Before&Afterの具体例で学ぶ
  3. iOSDC Japan 2021: Hello, Swift Concurrency world.
  4. iOSDC Japan 2022: Swift Concurrency時代のiOSアプリの作り方
  5. iOSDC Japan 2022: Swift Concurrency Next Step

記事・ドキュメント

  1. Swift Concurrency Deep Dive [1] — GCD vs async/await
  2. Swift Concurrency Deep Dive [2] — Continuation
  3. Swift Concurrency Deep Dive [3] — Structured concurrency
  4. Swift Concurrency Deep Dive [4] — Task
  5. Swift Concurrency Deep Dive [5] — Actor

Discussion