アプリ開発では、アプリと別のプロセスで動作する App Extension を開発できます。昔からある仕組みですが、近年特にアプリの機能をOSに渡すことでリッチな動きを実現する Widgets や Apple Intelligence (App Intents) で利用する機会が格段に増えています。この仕組みではアプリ本体とは別プロセスで動作するため、データの一貫性や安全な共有が求められます。しかし、 UserDefaults や FileManager、 Core Data、 Keychain など、共有・永続方法は多岐にわたります。また AppExtension は利用できるメモリにも上限があり、正しく設計しなければクラッシュやデータ破損、一貫性を損なうバグの原因にもなりかねません。
本トークでは、 App Extension を利用する際に安全かつ効率的にデータを扱うための指針について紹介します。基本的な設計に加え、実践的なTipsを幅広く紹介します。たとえば、起動処理で必ず行われるセットアップ処理に関する罠や、 App Extension 特有の制約に伴う DB のマイグレーションの扱い、 App と App Extension 間で発生したイベントをどのように通知しあうか、等です。
App Extension の活用が進む中、「データの正しい共有設計」はますます重要になります。 Widgets や Apple Intelligence にこれから対応しようとしている方にも、すでに導入済みで改善のヒントを得たい方にも役立つ内容です。