2026 年に入ってから、Anthropic が公開した Claude on Xcode を業務 IDE に組み込み、Firebase の更新作業の段取りを大きく組み直しました。Xcode 16.4 / Claude on Xcode 0.4 系の組み合わせで、累計 5,000 万ダウンロードを支えてきた壁紙・癒し・引き寄せ系のアプリを 6 本まとめて 13 系まで持ち上げた工程を、ここに残します。
Dolice Labs の運営も 2014 年からの個人開発と地続きで、今回扱う Firebase SDK 更新の題材は、実際に App Store / Google Play の最新リリースに含めたものを、検証順に書き直しています。
Claude on Xcode が「Firebase 更新ストレス」を変えた最初の 30 分
最初に Claude on Xcode を入れて触ったのは、Beautiful HD Wallpapers のプロジェクトでした。CocoaPods から SPM への移行は別記事で記録済みで、その時点では Firebase SDK のバージョンは 12.4 系でした。
Xcode を開いた状態で右側のサイドバーに Claude のパネルを並べて、まず投げたのは次のプロンプトです。
Claude on Xcode は IDE のコンテキストとして Package.resolved や *.xcodeproj/project.pbxproj を読み取れるので、firebase-ios-sdk の現在ピン留めバージョンを正確に把握した上で、Crashlytics の setCrashlyticsCollectionEnabled 周りの API 変更可能性、Analytics のイベント命名規約のリント強化、Google Mobile Ads SDK 12 系との互換マトリクスを最初の応答で並べてくれました。完全に正しいわけではないので、最後は Firebase のリリースノートを自分で見直す前提です。それでも「リリースノートを読む順番」が決まるだけで、最初の 30 分が劇的に短くなる感覚は、Xcode 単体で作業していた頃には味わえないものでした。
ここで重要なのは、Claude on Xcode は Xcode 内のシンタックス情報やビルド設定を読めますが、Firebase Console や App Store Connect のような外部システムにはアクセスできない点です。役割分担を最初に決めておくと、後で迷いません。
インストールと初期セットアップ — Xcode 16.4 / Claude on Xcode 0.4 系の前提
公式の手順そのままでは、個人開発のプロジェクトに入れた時に詰まる箇所がいくつかあります。
Anthropic アカウントの API キーを Claude on Xcode の設定に登録します。チーム開発であれば Claude Console 側で Workspace を作って権限を絞るのが順当ですが、私のように一人で運営しているプロジェクトでは個人ワークスペースの専用キーをそのまま使い、月次の使用量を Console の Usage タブで眺める運用に落ち着きました
Claude on Xcode は project.pbxproj の PBXShellScriptBuildPhase セクションを直接読み書きできるので、変更案を Pull Request の diff のような形で出してくれます。私はその出力を Xcode の UI 上で手動で適用する派ですが、claude コマンド経由で apply まで任せることもできます。失敗しても git の restore で戻せるので、最初は AI に直接書き換えさせる運用も悪くありません。
バージョン互換ロックの確認(自分の手で残した工程)
Google Mobile Ads SDK と Firebase SDK の組み合わせは、毎回バージョンマトリクスを確認しています。AdMob は壁紙系アプリの月間 100 万円超の収益源で、メディエーション設定とも絡んでいるため、Claude on Xcode の応答だけで判断するのは怖い領域です。
このプロンプトを送ると、Xcode 内のターミナルで xcodebuild test -workspace ... -scheme XXXTests -destination ... のようなコマンドを生成して走らせます。実行ログを Claude on Xcode が読み取り、失敗テストがあれば該当のテストケースをエディタで開いた上で、修正候補を提案してくれます。
これらは Firebase の公式ドキュメントが推奨しているものではなく、12 年の運用経験から、私が「ここで毎回壊れる」と感じている箇所を Test に変換したものです。Claude on Xcode に「6 アプリすべてに同じテストを足したい、書き方を統一して」と頼むと、テストファイルのテンプレートを生成してくれて、6 本のテストプロジェクトに展開する時間が劇的に縮みます。
6 本のアプリで観察した詰まりどころと回避策
6 本全てで同じ手順を踏んだわけではありません。アプリごとに観察した詰まりどころを並べておきます。
壁紙アプリ A では、32bit 時代の古い .lproj フォルダが残っていて、Firebase 13 系の Privacy Manifest と相互作用しておかしな警告が出ました。Claude on Xcode に「Privacy Manifest の警告を整理してほしい」と頼んだら、.lproj フォルダの整合性まで含めて提案してくれて、結果的に古いローカライズフォルダを撤去する判断に至りました。
癒し系アプリ B では、Firebase Performance の初期化が applicationDidFinishLaunching 内ではなく独自の setupAnalytics() メソッドに分離されていたため、Claude on Xcode の自動移行提案が「AppDelegate.swift の 24 行目を書き換える」と読み違えました。実際に書き換えるべきは別ファイルでした。AI の提案は鵜呑みにせず、必ず diff で確認するという原則を強化する結果になりました。
引き寄せ系アプリ C では、AdMob の Mediation Adapter が古く、Firebase の Analytics For Firebase 連携で予期しない依存関係エラーが出ました。Claude on Xcode に依存関係グラフを整理させたら、AdMob 12.x への先行アップデートが必要だと提案され、その通りでした。AdMob 側の eCPM 推移を Claude in Chrome で監視しているのと組み合わせて、3 日かけて段階的に上げました。
残り 3 本は同じ系統のアプリだったので、最初の 1 本の手順を Claude on Xcode に「再現する手順書として整理してほしい」と頼み、docs/firebase-13-migration.md のような形で残しました。2 本目以降はその手順書を参照しながら作業したので、所要時間は 1 本目の 1/3 程度に収まりました。
Claude on Xcode を「採用しない」と判断した工程
念のため、ここは AI を使わなかった工程も書いておきます。
Crashlytics に届くクラッシュのトリアージは、スタックトレースを Claude in Chrome 側に読ませる方が、Firebase Console の UI を直接見られる分、効率が良いと感じました。Claude on Xcode は IDE 内のコードに紐づいた読解は強いですが、サーバ側のダッシュボードを横断的に見る用途には向いていません
段階公開の判断は AI に意思決定を委ねず、自分でやります。TestFlight 配信して 24 時間でクラッシュ率を見て、本番ロールアウトに踏み切る判断は、誤った判断のコストが大きすぎる工程です。責任の所在を明確にしておく方が、長期的に良い運用になると考えています
App Store の審査返信は、Claude on Xcode の用途から外れています。文面は別途、Claude.ai 側で下書きさせて、最後は自分で書き直して投函しています
「使わない判断」を明文化しておくことで、AI への依存と自律の境界がはっきりします。私自身は「Xcode の中で完結する作業は Claude on Xcode、外を跨ぐ作業はそれぞれの環境の AI」という分け方に落ち着きました。
次に取り組むこと
Firebase SDK 13 系への移行は完了しましたが、Claude on Xcode の使い倒し方はまだ序盤です。次に試してみたいのは、Swift 6 の Strict Concurrency 対応を Claude on Xcode に分担させる工程です。Sendable への適合と @MainActor の境界設計は機械的に置換できる部分と、設計判断が必要な部分が混ざっていて、AI と人間の役割分担を考える良い題材になりそうです。
同じように個人開発で複数アプリを保守している方が、Firebase の更新に億劫さを感じているなら、Claude on Xcode を入れる初日のセットアップだけ済ませてみることをお勧めします。最初の 30 分で「IDE の中に常駐する助手」がいる感覚を体験できれば、後はその助手にどこまで任せるか、どこは自分で抱えるかを、自分の判断で組み立てていけるようになります。