CLAUDE LABEN
FORK — Claude Code 2.1.212で/forkの挙動が変わりました。会話を新しいバックグラウンドセッションへ複製し、作業を続けたまま並走できます。従来のセッション内サブエージェントは/subtaskに移りましたLIMITS — WebSearchの呼び出しがセッション単位で既定200回に制限されました。サブエージェントの起動も既定200回が上限で、暴走した検索・委譲のループを止められますMCPBG — 2分を超えるMCPツール呼び出しは自動的にバックグラウンドへ移り、セッションが固まらなくなりました。しきい値はCLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますPLANFIX — プランモードがtouchやrmといったファイルを変更するBashコマンドを、許可プロンプトもcanUseToolコールバックも通さずに実行してしまう不具合が修正されましたSONNET5 — Claude Sonnet 5は導入価格として入力100万トークンあたり2ドル、出力10ドルで提供中です。8月31日を過ぎると3ドルと15ドルに戻りますIPO — Anthropicが早ければ10月の株式公開を視野に、引受銀行が投資家との面談を組み始めたと報じられていますFORK — Claude Code 2.1.212で/forkの挙動が変わりました。会話を新しいバックグラウンドセッションへ複製し、作業を続けたまま並走できます。従来のセッション内サブエージェントは/subtaskに移りましたLIMITS — WebSearchの呼び出しがセッション単位で既定200回に制限されました。サブエージェントの起動も既定200回が上限で、暴走した検索・委譲のループを止められますMCPBG — 2分を超えるMCPツール呼び出しは自動的にバックグラウンドへ移り、セッションが固まらなくなりました。しきい値はCLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますPLANFIX — プランモードがtouchやrmといったファイルを変更するBashコマンドを、許可プロンプトもcanUseToolコールバックも通さずに実行してしまう不具合が修正されましたSONNET5 — Claude Sonnet 5は導入価格として入力100万トークンあたり2ドル、出力10ドルで提供中です。8月31日を過ぎると3ドルと15ドルに戻りますIPO — Anthropicが早ければ10月の株式公開を視野に、引受銀行が投資家との面談を組み始めたと報じられています
記事一覧/Claude Code
Claude Code/2026-05-17中級

CocoaPods 廃止まで残り半年 — Beautiful HD Wallpapers の Firebase SPM 移行を Claude Code でやり切った記録

2026年10月に Firebase Apple SDK の CocoaPods 配信が停止されます。4本のiOSアプリを個人で運営している廣川政樹が Beautiful HD Wallpapers を先行移行した経験と、Claude Code が詰まりをどう突破してくれたかを記録しました。

Claude Code197Firebase4Swift Package Manager2iOS24CocoaPods2移行2

2026 年 10 月、Firebase Apple SDK の CocoaPods 配信が正式に停止されます。これを知ったのは Firebase のリリースノートをたまたま眺めていたときで、4 本の iOS アプリを個人で運営している身としては「半年以内に全部移行しなければ」という現実が急に降ってきました。

壁紙・癒し・引き寄せ系のアプリを 2014 年から運営してきて、累計 5,000 万ダウンロードを超えるまでになりました。その分、歴史あるコードベースが残っており、CocoaPods と Swift Package Manager(SPM)が共存した状態で動いているアプリもあります。移行するには手順を丁寧に踏む必要がありました。

最初の 1 本として選んだのは Beautiful HD Wallpapers です。Firebase Crashlytics と Analytics を組み込んでいるシンプルな構成で、先行検証に向いていると判断しました。この記録が、同じように複数のアプリを運営している個人開発者の方の参考になれば幸いです。

Dolice Labs の運営も2014年からの個人開発と地続きで、ここで扱う題材は実際の現場で検証してから記事に起こしています。

CocoaPods から SPM への移行、何が大変なのか

公式の移行ガイドを読むと手順自体はシンプルに見えます。ところが実際に作業を始めると、いくつかの落とし穴に当たります。

最初の問題は Dropbox の競合コピー です。Xcode プロジェクトが Dropbox フォルダ内にある場合、Pods/ を削除してもすぐに .xcuserdata などが Dropbox に同期されようとして競合が起きます。移行中に Xcode が壊れた状態のファイルを掴んでしまうと、謎のビルドエラーが出続けます。2014 年以来ずっと Dropbox にプロジェクトを置いているので、これは以前からの悩みでした。

もう一つは dSYM の自動アップロード設定が消える 問題です。CocoaPods 経由で Firebase を入れていると、Pods/FirebaseCrashlytics/run を呼ぶ Run Script フェーズが Pods に管理されていました。SPM に移行するとこれがそのまま消えるため、Crashlytics にシンボルが届かなくなります。クラッシュレポートが「Symbolicate 不可」のまま積み上がる状態に気づかず数週間経過している、ということが個人開発では起きやすいです。

こうした「公式ガイドには書かれていないが、実際に詰まる箇所」を洗い出すのに Claude Code がかなり役立ちました。

Claude Code との作業フロー

移行作業を始める前に、Claude Code にプロジェクト構造と Podfile を読み込ませ、「Firebase 関連 Pod の SPM 置き換え手順」と「Crashlytics の dSYM 設定で注意すべきこと」を整理させました。

claude "このプロジェクトの Podfile を読んで、
Firebase 関連の Pod を SPM Package に置き換えるための
具体的な手順と、注意点を教えてください。
特に Crashlytics の dSYM アップロード設定について詳しく。"

返ってきた回答に「Run Script フェーズを手動で追加する必要がある」という記述があり、これが後々の詰まりを未然に防いでくれました。一人で作業していると「設定が消えた」と気づくまでに時間がかかりますが、事前にリストアップしてもらえると意識して確認できます。

Dropbox 競合を防ぐ xattr トリック

Claude Code が提案した解決策の中で最も実用的だったのが、この xattr コマンドです:

# .xcuserdata と Pods ディレクトリを Dropbox 同期対象から外す
xattr -w com.dropbox.ignored 1 YourProject.xcodeproj/project.xcworkspace/xcuserdata
xattr -w com.dropbox.ignored 1 Pods
 
# SPM のキャッシュディレクトリも同様
xattr -w com.dropbox.ignored 1 .swiftpm/xcuserdata

これを実行してから pod deintegrate を行うことで、Dropbox が競合コピーを作る前に同期対象から除外できます。CocoaPods の公式ドキュメントにも Firebase の移行ガイドにも書かれていない対処法で、Dropbox にプロジェクトを置いている個人開発者には必須の作業だと感じています。

dSYM アップロードの Run Script 設定

SPM 移行後に Crashlytics を正常に動かすには、ビルドフェーズに Run Script を手動で追加する必要があります。

# Build Phases → Run Script に追加
# Shell: /bin/sh
 
"${BUILD_DIR%Build/*}SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run"

あわせて、Scheme の Archive 設定で DWARF with dSYM File を有効にします。これが有効になっていないと dSYM が生成されず、Upload Script が何も送らない状態で静かに終わります。実際に Beautiful HD Wallpapers の設定を見直したところ、古いスキームが Debug 設定のままになっていました。このような「見えにくいが重要な設定漏れ」を事前にリストアップしてもらえることが、Claude Code を使う最大のメリットの一つだと感じています。

ATT プロンプトの順序も整理した

Firebase 移行の流れで AdMob の初期化フローも見直すことにしました。ATT(App Tracking Transparency)プロンプトの表示タイミングは、広告収益に直結します。

// ✅ 正しい順序
ATTrackingManager.requestTrackingAuthorization { status in
    // ATT の結果を受け取ってから MobileAds を初期化
    GADMobileAds.sharedInstance().start(completionHandler: nil)
}
 
// ❌ 誤った順序(広告収益が下がる可能性がある)
GADMobileAds.sharedInstance().start(completionHandler: nil)
// その後に ATT プロンプト…

この順序を守らないと、ATT の許可を得る前に広告 SDK が動き始めて「許可なし」前提でトラッキングが設定されます。結果として広告ターゲティングの精度が下がり、eCPM に影響が出ます。AdMob の収益はアプリ維持の重要な原資なので、見落としたくない箇所です。

Claude Code にこの部分のコードを見せたところ、「ATT 認証の完了コールバック内で MobileAds を初期化するパターンに変更すべきです」と指摘してくれました。コードベースの文脈を持ったまま指摘してもらえるのは、ドキュメントを読むだけでは気づきにくい部分です。

残りの 3 本への展開

Beautiful HD Wallpapers の移行は 1 日で完了しました。Crashlytics のシンボル化が正常に動作しているか確認するため、デバッグビルドで強制クラッシュを起こして Firebase Console を確認し、スタックトレースが正しく表示されることを検証しました。

残りの 3 本(Ukiyo-e Wallpapers / Law of Attraction Everyday / Relaxing Healing)についても、先行検証で得た手順を CLAUDE.md にまとめました。次の移行では「Dropbox の xattr 設定 → pod deintegrate → SPM パッケージ追加 → Run Script 復元 → ATT フロー確認」という手順を、プロジェクトごとに Claude Code と一緒に実行する予定です。

全体を振り返って

Firebase CocoaPods → SPM 移行で特に注意すべきポイントをまとめます:

まず着手すべきことは xattr で Dropbox の同期を止めてから pod deintegrate を実行することです。これをしないと競合コピーが溢れてビルドが壊れます。

次に dSYM アップロードの Run Script を手動で追加すること。Scheme の Archive 設定で DWARF with dSYM File になっているかも同時に確認してください。

最後に ATT → MobileAds の初期化順序を確認すること。古いコードでは逆になっているケースが少なくありません。

Claude Code が役立ったのは「プロジェクトの実際の状態を読んだ上で、抜け漏れを防ぐ順序を整理してくれる」点です。10 年以上一人で作り続けてきた中で、こういった「見えにくいが重要な設定確認」を一緒にやってくれる存在は、体感としてかなりの安心感があります。

CocoaPods を使った iOS アプリをお持ちで、まだ移行に着手していない方は、ぜひ早めに先行 1 本で試してみてください。


Xcode 環境での Claude Code セットアップについては Claude Code × Xcode — iOS/macOS 開発者のためのセットアップと実践ガイド もあわせてご覧ください。

シェア

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

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

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

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

関連記事

Claude Code2026-06-01
Claude Code を相棒に Firebase を CocoaPods から SPM へ移したときの実装メモ
個人開発の iOS アプリで Firebase を CocoaPods から Swift Package Manager へ移行した記録です。Claude Code に何を任せ、何を自分で判断したか、Crashlytics の dSYM でつまずいた点まで率直にまとめました。
Claude Code2026-06-04
Crashlytics の「Missing dSYM」をClaude Codeで潰した実装メモ
Firebase を SPM へ移行した直後、Crashlytics のクラッシュが記号化されず address のまま並びました。Missing dSYM 警告の原因をClaude Codeで切り分け、再発しないアップロード経路を組むまでの実作業メモです。
Claude Code2026-05-24
Claude Code で「死蔵 SDK」を計画的に剥がす — 個人開発12年で堆積した非アクティブ依存を安全に棚卸しする運用設計
個人開発12年で iOS/Android の壁紙アプリ4本に堆積した、もう誰も使っていないのに依存だけ残り続けている SDK — それを Claude Code で安全に棚卸しして剥離するパイプラインを、実コードと数値付きで共有します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →