メイン モジュールで Swift 拡張機能 API を使用するように移行する

Swift ネイティブ API をより幅広く利用できるようにし、将来的に新しい Swift 言語機能をサポートする能力を高めるため、Swift 拡張機能 SDK をメイン SDK に統合します。変更の内容と、想定されるお客様のプロジェクトへの影響は以下のとおりです。

変更点

Firebase for Apple SDK 10.17.0 以降、Swift 拡張機能 SDK は対応するメイン SDK に統合されていますたとえば、FirebaseFirestoreSwift モジュールのすべての API が FirebaseFirestore に追加されたため、これらの API にアクセスするために FirebaseFirestoreSwift モジュールのインポートは不要になりました。

すべての Swift 拡張機能がメイン モジュールに組み込まれているため、拡張機能 SDK は不必要になり、非推奨になりました。Swift 拡張機能 SDK を含めたり使用したりすると、コンパイラ警告が表示され、早ければ 2024 年 2 月には Swift 拡張機能のリリースは完全に停止されます。

★ 注: 現在または以前にリリースされたバージョンの Swift 拡張機能は引き続き機能します。ただし、引き続き修正を受け取り、変更と新機能を活用できるようにするために、メイン モジュールから Swift API を使用するようにアプリを移行することをおすすめします。

この変更の重要な日程

2023 年 10 月

Swift 拡張機能 SDK はメイン SDK に統合されて非推奨となり、メイン SDK に置き換えられます。この変更については、バージョン 10.17.0 のリリースノートをご覧ください。

Swift 拡張機能 SDK API はメイン SDK モジュールから直接使用できるようになりました。次のメジャー バージョンがリリースまで、拡張機能 SDK は引き続き使用できますが、使用時に非推奨警告が表示されます。

2024 年 2 月移行

Google は、Swift 拡張機能の新バージョンのリリースを停止し、Swift 拡張機能を Firebase の Package.swift から削除します。以前のバージョンも引き続きご利用いただけますが、更新を受け取ることはありません。

メイン モジュールから Swift ネイティブ API を使用するように移行する方法

現在 Swift 拡張機能 SDK を使用していない場合、対応は必要ありません。Swift 拡張機能 SDK を使用している場合は、プロジェクトで次の変更を行います。

ワークスペースの変更

Swift Package Manager

Firebase をバージョン 10.17.0 以降に更新したら、ターゲット設定の [General] タブにある [Frameworks, Libraries, and Embedded Content] セクションに移動し、Swift 拡張機能 SDK(FirebaseFirestoreSwift など)を削除します。

CocoaPods

Firebase をバージョン 10.17.0 以降に更新したら、Podfile に移動し、ターゲットのフレームワークの追加セクションでプロジェクトの依存関係に対応する行を削除し、Swift 拡張機能 SDK(Pod FirebaseFirestoreSwift など)を削除します。その後、pod install コマンドを再実行します。

Zip ディストリビューションと Carthage

Firebase をバージョン 10.17.0 以降に更新したら、プロジェクト内の Swift 拡張機能 xcframeworksFirebaseFirestoreSwift.xcframework など)をすべて削除します。

ソースコードの変更

以前に使用したすべての Swift 拡張機能 SDK について、以下の操作を行います。

  1. Swift 拡張機能 SDK を参照しているインポート ステートメントをすべて削除します。メイン SDK が個別にインポートされていない場合は、行の末尾にある Swift を削除して、Swift 拡張機能のインポートをメイン SDK のインポートに置き換える必要があります。
  2. Swift の明示的なモジュールの名前空間を使用して Swift 拡張機能 SDK タイプを参照している場合は、それらを対応するメイン SDK に置き換える必要があります。たとえば、FirebaseFirestoreSwift.QueryPredicateFirebaseFirestore.QueryPredicate に名前を変更する必要があります。