GEMINI LABEN
NANOLITE — Nano Banana 2 Liteが登場しました。Googleで最も速く、最もコスト効率の高いGemini Imageモデルで、軽量な画像生成を安く回したい用途に向いていますOMNIFLASH — Gemini Omni Flashがpublic previewになりました。ネイティブにマルチモーダルなモデルで、企業や開発者が独自の動的な動画ワークフローを構築できますAGENTS — Managed Agentsが拡張されました。background: trueでサーバー側の非同期実行とポーリング、リモートMCPサーバー連携、対話をまたぐ認証情報のリフレッシュに対応しますMEMORY — Memory BankのIngestEvents APIが一般提供になりました。イベントの取り込みとメモリ生成を分離し、コンテンツを継続的にストリームできますTHROUGHPUT — Provisioned Throughputで、同一モデル・同一リージョンに対して最大7件の保留オーダーを提出できるようになりましたDEPRECATE — 画像生成モデルは8月17日に、Gemini Enterprise Agent PlatformのGrok 4.1系は8月20日に停止される予定ですNANOLITE — Nano Banana 2 Liteが登場しました。Googleで最も速く、最もコスト効率の高いGemini Imageモデルで、軽量な画像生成を安く回したい用途に向いていますOMNIFLASH — Gemini Omni Flashがpublic previewになりました。ネイティブにマルチモーダルなモデルで、企業や開発者が独自の動的な動画ワークフローを構築できますAGENTS — Managed Agentsが拡張されました。background: trueでサーバー側の非同期実行とポーリング、リモートMCPサーバー連携、対話をまたぐ認証情報のリフレッシュに対応しますMEMORY — Memory BankのIngestEvents APIが一般提供になりました。イベントの取り込みとメモリ生成を分離し、コンテンツを継続的にストリームできますTHROUGHPUT — Provisioned Throughputで、同一モデル・同一リージョンに対して最大7件の保留オーダーを提出できるようになりましたDEPRECATE — 画像生成モデルは8月17日に、Gemini Enterprise Agent PlatformのGrok 4.1系は8月20日に停止される予定です
記事一覧/開発ツール
開発ツール/2026-06-03中級

Gemini 3 Pro と進めた Firebase の CocoaPods → SPM 移行、3週間の所感

個人開発の iOS アプリで Firebase の依存管理を CocoaPods から Swift Package Manager へ移したときの記録です。Gemini 3 Pro をどこで頼り、どこで頼らなかったか、3週間運用して見えた所感を残します。

Gemini 3 Pro2Firebase4Swift Package ManageriOS13個人開発91

朝、Xcode を開くたびに pod install の解決待ちで数十秒持っていかれる。この小さな摩擦が積み重なって、ある週末についに腰を上げました。複数の壁紙アプリと癒し系アプリを2014年から個人で運用していると、同じ Firebase 構成を何本ものプロジェクトで使い回しています。CocoaPods から Swift Package Manager(以下 SPM)への移行は「いつかやる」の筆頭に居座り続けていた課題でした。

今回はその移行を、Gemini 3 Pro を相棒にしながら3週間かけて進めた記録です。結論から言うと、移行そのものは半日で終わる作業ではありませんでしたが、Gemini を「設計の壁打ち相手」として使うと、ひとりで詰まりがちな箇所をかなり減らせました。一方で、最後に効いたのは AI ではなく、リンカエラーを一行ずつ読む地道さでした。その両面を正直に書き残します。

なぜ今、CocoaPods をやめたかったのか

CocoaPods が悪いわけではありません。長く iOS 開発を支えてきた立派なツールです。それでも個人開発の現場でやめたくなった理由は、はっきりしていました。

ひとつは Podfile.lockPods/ ディレクトリがビルド環境ごとに微妙な差異を生み、CI で再現しないエラーに何度か泣かされたこと。もうひとつは、Firebase 公式が SPM を第一級の配布手段として扱うようになり、CocoaPods 側の更新がわずかに遅れる場面が増えてきたことです。Xcode に統合された SPM なら、依存解決の状態がプロジェクトファイルの中で完結します。アプリを長く保守する立場だと、この「外部ディレクトリを持たない」感覚は思った以上に安心感がありました。

両家の祖父がともに宮大工だったせいか、私はものを組み上げるときに「あとから手を入れやすいか」をつい気にします。依存管理も同じで、何年も保守する前提なら、構造はできるだけ素直にしておきたい。SPM への移行は、その素直さを取り戻す作業でもありました。

Gemini 3 Pro に最初にやってもらったこと

いきなり手を動かさず、まず現状の Podfile を Gemini 3 Pro に丸ごと渡して、SPM の各プロダクトへの対応表を作ってもらいました。これが想像以上に効きました。

(プロンプトの要点)
この Podfile を Swift Package Manager に移行したい。
- 各 pod が firebase-ios-sdk のどの product に対応するか表にして
- use_frameworks! を使っている前提で、static / dynamic の注意点も挙げて
- 移行後に不要になる設定(Pods-*.xcconfig 等)も列挙して

Gemini が返してきたのは、Firebase/CoreFirebaseCoreFirebase/AnalyticsFirebaseAnalyticsFirebase/CrashlyticsFirebaseCrashlytics といった対応表でした。地味ですが、pod 名とプロダクト名は一対一で一致しないものがあり、手で調べると地味に時間を食う部分です。ここを最初に俯瞰できたことで、移行のゴール像が一気に明確になりました。

公式ドキュメントにも対応関係は載っていますが、自分の Podfile という具体的な入力に対して「あなたの構成だとこの product を選ぶ」と返してくれる点が、汎用ドキュメントとの違いでした。AI を使う価値は、まさにこの「自分の文脈に翻訳してくれる」ところにあると感じています。

実際の移行手順

対応表ができたら、作業自体は淡々としています。

まず Xcode で File > Add Package Dependencies から https://github.com/firebase/firebase-ios-sdk を追加し、必要なプロダクトだけをターゲットに紐付けます。私のアプリでは FirebaseAnalyticsFirebaseCrashlytics、それに FirebaseRemoteConfig の3つでした。広告まわりは別 SDK なので、ここでは Firebase に絞ります。

次に CocoaPods 側を片付けます。

# CocoaPods の痕跡を消す
pod deintegrate
rm -f Podfile Podfile.lock
rm -rf Pods/
# .xcworkspace ではなく .xcodeproj を直接開く運用に戻す

pod deintegrate は Build Settings に書き込まれた Pods-*.xcconfig の参照を外してくれますが、完全ではありません。OTHER_LDFLAGSFRAMEWORK_SEARCH_PATHS に CocoaPods 由来の値が残っていないか、ここは目で確認したほうが安全です。私の場合、$(inherited) だけ残してあとは消す、という形に落ち着きました。

Crashlytics を使っている場合、dSYM をアップロードする Run Script の中身も変わります。CocoaPods 時代の "${PODS_ROOT}/FirebaseCrashlytics/run" というパスはもう存在しないので、SPM が展開する場所を参照するスクリプトに差し替えます。ここは公式の案内どおりで問題ありませんでした。

いちばん時間を溶かした壁

順調に見えた移行で、最後にぶつかったのがリンカエラーでした。ビルドは通るのに、実機起動時に dyld: Library not loaded 系のエラーで落ちる。Gemini に状況を伝えると、いくつか候補を挙げてくれましたが、決め手にはなりませんでした。

結局、原因は use_frameworks! :linkage => :static を前提に組んでいた既存設定の名残で、SPM 側のリンク方式と噛み合っていなかったことでした。これに気づけたのは、AI の助言よりも、Xcode のビルドログを一行ずつ追って、どのフレームワークが二重に取り込まれているかを地道に突き止めたからです。

この経験は良い戒めになりました。AI は「ありえる原因の地図」を素早く広げてくれますが、その地図のどこに自分がいるのかを確かめるのは、結局こちらの手作業です。Gemini が出した候補リストは、調査の出発点としては確かに有用でした。ただ、最後の一歩は読む・試す・また読むの繰り返しでしか埋まらない。当たり前のことですが、移行のような実務でこそ痛感します。

3週間運用してみての所感

移行後、3週間ほど複数アプリのうち1本を SPM 構成で本番運用してみました。

体感で最も変わったのは、クリーンビルドからの立ち上がりです。Pods/ の再生成がなくなった分、新しい Mac で環境を作り直すときの手数が明確に減りました。累計5,000万ダウンロードといっても運用しているのは私ひとりなので、この「環境を作り直すコスト」が下がるのは、地味ですが日々の精神的な余裕に直結します。

一方で、SPM がすべてにおいて優れているとは言いません。複数のバージョンを固定しつつ細かく制御したい場面では、CocoaPods の Podfile の素直さが恋しくなる瞬間もありました。SPM の依存解決はときどき「なぜそのバージョンを選んだのか」が見えにくく、Package.resolved を読み解く必要があります。万能の正解ではなく、自分のプロジェクトの性質に合うかどうかで選ぶものだと、改めて思いました。

Gemini 3 Pro の使いどころも同じです。対応表づくりや設定の棚卸しのような「広く浅く確認したい」作業では大きく時間を節約できました。逆に、自分のプロジェクト固有の歴史的経緯が絡む不具合では、AI はあくまで補助線でした。この線引きを掴めたことが、3週間でいちばんの収穫だったかもしれません。

次に同じ移行をするなら、私はまず Podfile を Gemini に渡して対応表を作り、pod deintegrate の後に Build Settings を必ず目視する、という順番で進めます。もし今あなたが同じ移行を迷っているなら、いきなり全アプリではなく、影響範囲の小さい1本から試してみることをおすすめします。最後までお読みいただき、ありがとうございました。

シェア

お読みいただきありがとうございます

Gemini Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

Workspace 連携2026-05-24
NotebookLM と Gemini Deep Research を Firebase SPM 移行調査で2週間並行運用した所感
個人開発のiOS壁紙アプリ群(累計5,000万DL超)をCocoaPodsからSPMに移行する下調べに、NotebookLMとGemini Deep Researchを2週間並行で使った所感を整理。どちらが何に強いかをそのまま記録します。
開発ツール2026-07-18
難読化されたスタックトレースを Gemini に渡していました — retrace を前段に置くまで、診断はもっともらしく外れ続けます
release ビルドのスタックトレースは R8 で名前が潰れています。それをそのまま Gemini に渡すと、診断は落ち着いた文体のまま外れます。retrace を前段に置き、mapping を versionCode で突合し、復元できないときは断定させない。42件で数え直した記録です。
開発ツール2026-07-14
TTS の継ぎ目を耳に残さない — 長文ナレーションの抑揚と無音境界を整える設計
長文を文単位で割って合成すると、文の変わり目で抑揚がリセットされ継ぎ目が耳につきます。文脈プライミング・ゼロクロス整合・句読点別の適応的無音・冪等なシーム台帳の四層で、繋ぎ目を聞こえなくする設計を実装ごとまとめます。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →