Firebase Apple SDK 13でCocoaPods配布が終了|Swift Package Managerへの移行手順

FirebaseがApple向けSDK 13.0.0を公開し、CocoaPodsでの配布を終えた

Googleのアプリ開発基盤Firebaseは、2026年10月7日(米国時間)にiPhoneやMac向けのSDK「Firebase Apple SDK 13.0.0」を公開しました(GitHubのリリース)。13.0.0は、Xcode標準のライブラリ管理機能であるSwift Package Manager(以下SPM)専用のリリースです。

これまで多くのiOSアプリは、CocoaPodsというライブラリ管理ツールでFirebaseを取り込んできました。Firebaseの移行ガイドによると、CocoaPodsへの新しい版の公開は2026年10月で終わり、Firebase 12がCocoaPodsで入手できる最後のメジャーバージョンになります。CocoaPods自体も、CocoaPodsの公式ブログで、2026年12月2日に新しいライブラリやバージョンの登録受付を止める予定を示しています(11月1〜7日に試験運用)。

この記事では、13.0.0で必要になる環境と書き換えが必要なコードを整理し、CocoaPodsで作った最小のアプリをSPMへ移して動かした結果を紹介します。読み終えると、自分のアプリを今SPMへ移すか、当面12.xのまま使うかを決められます。

3つの要点

Firebaseの更新を受け取り続けるには、SPMへの移行が必要

13.0.0の入手方法

SPMのみ

CocoaPodsで入手できる最新は12.19.0。ZipとCarthageの配布は、Analyticsの修正を含む13.0.1から。

必要な開発環境

Xcode 26.2以上

アプリの対応OSはiOS 15以上。

CocoaPodsで導入済みのアプリ

12.xのまま動く

13以降の修正と新機能は届かない。Xcode 27では設定の追加が必要だった。

13.0.0を使うにはXcode 26.2以上とiOS 15以上が必要

13.0.0のリリースノートでは、開発環境とアプリが対応するOSの最低ラインが引き上げられました。Xcode 26.2より古いXcodeでは、Firebaseのパッケージを読み込む段階で止まります。

Firebase Apple SDK 13.0.0の最小要件

開発環境

Xcode 26.2

Swiftコンパイラー6.2.3を含む版

アプリの対応OS

iOS 15

tvOS 15、macOS 11、watchOS 8

Firestoreを使う場合

C++17

Build Settingsの「C++ Language Dialect」を確認

通信ライブラリ

GTMSessionFetcher 4.0

PodfileやPackage.swiftで3.xを指定していたら更新

出典:Firebase Apple SDK リリースノート 13.0.0(2026年10月7日)

13.0.0で削除・名前変更されたAPIの書き換え

13.0.0では、以前から非推奨になっていたAPIがまとめて削除されました。アプリのコードに影響する変更を、変更前と変更後で並べます。

13.0.0で書き換えが必要なコード

AI機能のライブラリ名

FirebaseAI → FirebaseAILogic(パッケージの製品名と import の両方)

Vertex AI経由の呼び出し

Backend.vertexAI() → Backend.agentPlatform(location:)。location を省略したときの地域は us-central1 から global に変わるので、これまでの地域を使うなら location: "us-central1" を指定する。リリースノートは、新しいGeminiモデルの多くがus-central1で使えない点も注意している

AIに渡すツールの型名

Tool → GenerativeModel.Tool。型名を書いている箇所を置き換える

削除されたライブラリ

FirebaseMLModelDownloader と、Appleの端末内AIと組み合わせる旧API(HybridModel など)

通知とアプリ内メッセージのリンク

画面単位の処理(SceneDelegate)を使うアプリでは、通知やアプリ内メッセージのリンクがSceneDelegate側で処理されるようになった。AppDelegateにリンクの処理を書いているなら、リンクを開いたときの動作を確かめる

出典:Firebase Apple SDK リリースノート 13.0.0

パッケージの製品名に FirebaseAI を指定したままにすると、ビルドの前の依存関係を解決する段階でXcodeが止まります。手元のサンプルでは、次のエラーが出ました。

xcodebuild: error: Could not resolve package dependencies:
  product 'FirebaseAI' required by package 'sample-oldai' target 'Sample' not found in package 'firebase-ios-sdk'.

このエラーが出たら、Package.swiftやXcodeの「Frameworks, Libraries, and Embedded Content」で製品を FirebaseAILogic に差し替え、コードの import FirebaseAI も import FirebaseAILogic に直します。

CocoaPodsのままだと12.19.0から先へ更新できない

CocoaPodsで作った最小のiOSアプリを用意して、CocoaPodsのまま使い続けた場合の動きを確かめました(2026年10月18日、Apple M4のMac、CocoaPods 1.16.2)。ビルドは移行先のXcode 27.0を基本にし、比較のためXcode 26.4.1でも試しています。Firebaseの範囲を '~> 12.0' にして pod install すると、12.19.0が入り、Firebaseからの非推奨の案内が表示されます。

[!] FirebaseCore has been deprecated in favor of the Firebase Apple SDK via Swift Package Manager. Existing CocoaPods versions will remain available and installations will remain functional, but new versions will no longer be published to CocoaPods after October 2026.

範囲を '~> 13.0' に変えると、CocoaPodsは条件に合う版を見つけられずに止まります。CocoaPodsの配布サーバーに登録されたFirebaseCoreの最新版も12.19.0でした。

[!] CocoaPods could not find compatible versions for pod "FirebaseCore":
  In Podfile:
    FirebaseCore (~> 13.0)

None of your spec sources contain a spec satisfying the dependency: `FirebaseCore (~> 13.0)`.

もう一つ、Xcodeの版によってビルド結果が変わりました。同じCocoaPodsのプロジェクトは、Xcode 26.4.1ではビルドに成功し、Xcode 27.0では次のエラーで失敗しました。Firebaseが使う部品GoogleUtilitiesの対応OSがiOS 12からになっていて、Xcode 27が受け付けるiOS 15以上の範囲から外れるためです。

error: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 12.0, but the range of supported deployment target versions is 15.0 to 27.0.x. (in target 'GoogleUtilities' from project 'Pods')

Podfileの最後に次の処理を足し、CocoaPodsで入れた部品の対応OSを15.0にそろえると(すでに post_install がある場合は、その中へ内側の処理だけを足します)、Xcode 27.0でもビルドが通りました。SPMへ移すまでの間、CocoaPodsのままXcode 27へ上げたいときの対処として使えます。

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '15.0'
    end
  end
end

CocoaPodsからSPMへ移す4つの手順

Firebaseの移行ガイドの手順に、13.0.0の要件確認とコードの書き換えを加えて、同じサンプルアプリをSPMへ移しました。Firebase以外にCocoaPodsで入れているライブラリがある場合は、先にそれぞれがSPMに対応しているかを確認します。同じターゲットでCocoaPodsとSPMを混ぜると、依存関係が循環してビルドが失敗することがあると、ガイドは注意しています。

CocoaPodsからSPMへ移す手順

01 XcodeとアプリのiOSの版を確認

Xcode 26.2以上を使い、アプリのMinimum Deployments(対応OSの下限)をiOS 15以上にする。Podfileに直接書いたFirebaseのPod名を控えておく。

02 Xcodeを閉じて pod deintegrate を実行

プロジェクトのフォルダーで実行すると、CocoaPodsが追加した設定とPodsフォルダーが取り除かれる。CocoaPodsが作った .xcworkspace は残るので削除する(ほかのプロジェクトをまとめたワークスペースなら、Podsの参照だけを外す)。PodfileとPodfile.lockも、CocoaPodsを使わなくなったら削除してよい。

03 File > Add Package Dependencies でFirebaseを追加

.xcodeproj を開き、URLに https://github.com/firebase/firebase-ios-sdk を入れる。控えたPodに対応する製品を選ぶ(FirebaseAuth なら FirebaseAuth、Firebase/Auth のような書き方なら FirebaseAuth)。選んだ製品をアプリのターゲットへ追加する。

04 コードとスクリプトを直してビルド

前の節で挙げたAPIを書き換える。CrashlyticsのRun Scriptが ${PODS_ROOT} を指していたら、Crashlyticsの導入ガイドにあるSPM用のパスへ直す。「ライブラリが見つからない」と出たら、Build PhasesのLink Binary with Librariesに製品が入っているかを見る。

手元では、pod deintegrate の実行後に「Project has been deintegrated. No traces of CocoaPods left in project.」と表示され、ワークスペースが残っている旨の注意も出ました。手順03のパッケージ追加は、Xcodeの画面操作の代わりに、設定ファイルからXcodeプロジェクトを作るツールXcodeGenで同じ依存関係(firebase-ios-sdk 13.0.0のFirebaseCore)を設定しました。Xcode 27.0でビルドし、iPhoneのシミュレーターで起動した画面が次です。

iPhoneシミュレーターで起動したサンプルアプリ。画面中央にFirebase 13.0.0と表示されている。
SPMへ移したサンプルアプリを、Xcode 27.0のiPhone 18 Proシミュレーター(iOS 27.0)で起動した画面。Firebaseが返す版番号「13.0.0」を表示している(2026年10月18日)。

サンプルでは、FirebaseCoreの FirebaseVersion() が返す版番号を画面とログへ出しています。移行直後に次の1行をデバッグ用に入れておくと、13.0.0が実際に組み込まれたかをすぐ確認できます。

print("Firebase SDK version:", FirebaseVersion())

Firestoreを使わないアプリはトレイトを外すと展開後のバイナリ容量が約6分の1になった

13.0.0では、SPMの「トレイト」という仕組みで、使わない機能をパッケージから外せるようになりました。最初に用意されたのは、データベース機能Firestoreを外すトレイトです。Firestoreを外すと、Firestoreが通信に使う大きな部品gRPCとAbseilを取得しなくなります。

FirebaseCore、Authentication、AI Logicだけを使う最小のパッケージで、トレイトの有無による違いを測りました。標準の設定では依存するパッケージがFirebase本体を含めて13個、展開後のバイナリ(.build/artifacts)が約1,085MBでした。Firestoreのトレイトを外すと、依存するパッケージは11個、展開後のバイナリは約191MBに減りました。

Firebase 13.0.0で展開されたバイナリの容量を比べた横棒グラフ。標準の設定では約1,085MBで、そのうちgRPCが約851MB、Abseilが約43MB。Firestoreトレイトなしでは約191MB。
FirebaseCore・Authentication・AI Logicを使う最小のSwiftパッケージで、Firebase 13.0.0を解決した後に展開された .build/artifacts のディスク容量(2026年10月18日、Xcode 26.5、1MB=1,024KBで換算)。

Swiftパッケージでは、依存関係の指定に traits: [] を足すとFirestoreを外せます。traits: [] は既定で有効なトレイトをすべて外す指定で、13.0.0の既定のトレイトはFirestoreだけです。この書き方は、自分のPackage.swiftの先頭にある swift-tools-version が6.1以上のときに使えます。

.package(
  url: "https://github.com/firebase/firebase-ios-sdk.git",
  exact: "13.0.0",
  traits: []
),

Xcodeのプロジェクトでは、FirebaseのPackage.swiftの説明どおり、プロジェクト設定の「Package Dependencies」でFirebaseの「Traits」からFirestoreのチェックを外します。CIでビルドのたびにパッケージを取り直す環境では、gRPCとAbseilのダウンロードと展開が要らなくなります。図の値は展開後のディスク容量で、ダウンロード量はこれより小さくなります。

移行の前に自分のプロジェクトで確認すること

ここまでの内容を、プロジェクトの状況ごとの確認項目にまとめました。

状況別の確認項目

PodfileでFirebaseを入れている

Firebase以外のPodがSPMに対応しているかを確認し、対応していれば pod deintegrate からSPMへ移す。

SPMに対応していないPodが残る

移行ガイドが示すとおり、Firebaseだけを配布用のZipから手動で組み込むか、代わりのライブラリが見つかるまで12.xで運用する。

当面CocoaPodsのままXcode 27へ上げる

Podfileの post_install で対応OSを15.0にそろえ、ビルドが通るかを確かめる。

FirebaseのAI機能を使っている

FirebaseAIをFirebaseAILogicへ、vertexAIをagentPlatformへ置き換え、地域の指定を確認する。

Firestoreを使っていない

SPMへ移したら、Package DependenciesのTraitsでFirestoreを外す。

FlutterやUnityでFirebaseを使っている場合は、各フレームワーク向けのFirebaseを最新版へ上げると、iOS側のライブラリ管理もSPMへ切り替わると移行ガイドは案内しています。12月2日はCocoaPodsへライブラリを登録する側の期限で、12.19.0までのFirebaseは、CocoaPodsの配布の仕組みが動いている限り、その後も入手して使えます。13以降の修正を受け取るには移行が要るので、まずは手元のプロジェクトで pod deintegrate からビルドまでを一度通し、移行にかかる作業の量を見積もってください。

参考資料