Sendableについて教えて

Asked on 09/09/2024

1 search

Sendableは、Swiftにおける型の特性で、異なる並行処理ドメイン間で安全に値を共有するためのものです。Swift 6では、データレースの安全性がコンパイル時に完全に検証されるようになり、Sendableはその一環として重要な役割を果たします。Sendableな値は、並行アクセスからその状態を保護する必要があります。例えば、型がSendableと見なされるためには、可変状態を読み書きする際にロックを取得するなどの方法で状態を保護する必要があります。

Swiftでは、内部型に対しては自動的にSendableと見なされますが、公開型に対しては明示的にSendableの準拠を追加する必要があります。これは、Sendableとしてマークすることがクライアントに対する保証となるためです。将来的に可変状態を持たせる可能性がある場合、Sendableを早まって設定することを避けるためです。

具体的な例として、Migrate your app to Swift 6のセッションでは、Sendableの適用方法や、Sendableとしてマークすることによって複数の警告を一度に解消する方法について説明されています。