これまで、データが非同期かつ継続的に流れてくる処理や、いつ発生するか分からないイベントを受け取る処理には、クロージャや Delegate、オブザーバーなどが用いられてきました。また、Apple プラットフォームでは Combine、サードパーティの OSS では RxSwift などといった外部のフレームワークも使用されてきました。
これらのほとんどは、Swift 5.5 で追加された AsyncSequence を使用する方法へと移行できます。実際、Apple が提供するフレームワークでも、従来 Delegate が用いられてきたような非同期にイベントを伝える API について、最近新規に追加されたものは AsyncSequence を採用しています。他のデザインパターンから AsyncSequence に移行することで、Swift Concurrency が持つアクター分離などのさまざまなメリットを享受できます。一方で、非同期なシーケンスならではのメモリリークにも注意が必要です。
このトークでは AsyncSequence の基礎、他のデザインパターンからの移行方法、移行するメリット、注意点まで、UIKit・SwiftUI を用いたアプリの例を使いながら詳しく紹介します。
Delegate、今までありがとう。これからは AsyncSequence でやっていくよ。