LINE Development center 2, LINE Communication Platform Engineering室, LINE Communication Service開発チーム
はじめに こんにちは、LINEのiOSエンジニアの平井亨武です。LINE Communication Service開発チームに所属して、主にLINE appのiOS版の開発を担当しています。 LINEをはじめとするコンテンツやメディアを扱うアプリケーションでは、クライアントとサーバ間でファイルをアップロード/ダウンロードするのに長時間を要することがあります。このような場面では、プログレスバーなどを用いてユーザに進捗状況を逐一伝えながら処理を進行することがあります。 Swiftにおいてこの類の機能を提供するAPIは、従来progress handlerとcompletion handlerを取る関数として定義する方法が一般的でした。しかし近年CombineやSwift Concurrencyなどの登場により、非同期処理の選択肢が大きく増えベストプラクティスも大きく変化しました。そこで本記事では、Swiftにおいてprogress handlingを伴う非同期処理の関数定義のしかたについて、どの書き方が有利であるのか整理してみたいと思います。本記事では主に呼び出し側から見た使いやすさや実