2026年6月25日付のAppleのリリース情報では、Xcode 26.6が公開済みの安定版として案内されています。Appleのリリース情報を基準にするなら、Xcode 26.6 Swift Package Managerの解決失敗は、まずバージョンと解析入口を固定して調べるべきです。
症状 → 最短の対処
依存関係の解決失敗、missing package product、想定外のバージョンが出る → 全キャッシュを削除せず、Xcode、Package.resolved、xcodebuild の対象を記録します。
リモートMacや自動ビルドだけが失敗する → 実行ユーザー、SSH、Git設定、作業ディレクトリをローカルと比較します。
この手順は、Xcode 26.6へ更新してから問題が出た独立開発者、私有Swift Packageを使う開発者向けです。常駐のiOSビルドマシンを管理し、毎回の再取得や意図しない依存更新を避けたい小規模チームにも適しています。
解析結果の基準線
最初に、修正前の状態を比較可能にします。次の情報を同じログへ保存してください。
Xcode: 26.6
Developer directory: <XCODE_PATH>
Project or workspace: <PROJECT_OR_WORKSPACE>
Scheme: <SCHEME_NAME>
User: <BUILD_USER>
Command: <RESOLVE_COMMAND>
First effective error: <REDACTED_ERROR>
バージョンやパスは実機の値を記録し、リポジトリURL、ユーザー名、ホスト名、Token、SSH Keyは必ず置き換えます。xcode-select -pとxcodebuild -versionで、選択中のDeveloper directoryと実行中のXcodeを確認します。
その後、Xcodeのプロジェクト設定から依存関係を解決し、同じプロジェクトまたはWorkspaceを対象にコマンドラインでも実行します。Appleは継続的インテグレーションでSwift Packageを解決・ビルドする入口を案内しているため、AppleのCI向けSwift Package手順と同じ対象・同じSchemeにそろえます。
GUIだけ失敗するならXcodeセッションやプロジェクトファイルを疑います。コマンドだけ失敗するならShell環境、実行ユーザー、GitまたはSSH設定を疑います。最初の有効なエラーを基準にしないと、後続のコンパイルエラーを依存解決の問題と誤認します。
バージョン固定とPackage.resolved
Package.swiftの依存条件、Xcodeプロジェクトのパッケージ設定、Package.resolvedが同じ依存グラフを示しているか確認します。Swift Package Managerのバージョン解決は、依存パッケージの条件と既存の解決結果の組み合わせで決まります。Swift Package Managerの解決仕様を参照し、単にファイルの一部だけを書き換えないでください。
アプリプロジェクトでは、通常、リポジトリに意図したPackage.resolvedを保存し、レビュー対象にします。一方、再利用されるPackage自体にアプリ用の解決ファイルを持ち込むかどうかは別の判断です。アプリとライブラリの境界を分け、プロジェクトの運用方針を決めてください。
ブランチ切り替えや競合解消の後は、同じパッケージの重複記録、古いリビジョン、現在の制約を満たさない記録が残っていないか見ます。自動更新スクリプトが毎回解決をやり直す設定なら、常駐ビルドでは再現性を失います。リモートMacでは、まずリポジトリにコミットされた解決結果を再現し、新しいバージョンの選択は意図的な変更として扱います。
Gitアクセスと依存グラフ
公開パッケージと私有パッケージを分けて調査します。失敗段階を次の3つに分類してください。
- 接続前:Git URL、DNS、プロキシ、名前解決
- 認証時:SSH Key、Token、ホスト鍵、リポジトリ権限
- 取得時:ブランチ、タグ、リビジョン、サブモジュールやバイナリ依存関係
<PRIVATE_GIT_URL>や<SSH_HOST>のような明確なプレースホルダーを使い、実際の秘密情報をログへ貼り付けないでください。xcodebuildが参照するGit設定と、対話シェルで確認したシステムGitの設定が一致するとは限りません。特に自動ジョブでは、ログインシェルと非対話シェルでHOME、SSHエージェント、秘密鍵の読み込み先が変わることがあります。
「ローカルでは構築できるがリモートMacでは解決できない」場合、パッケージの不具合と決めつける前に、実行ユーザーと認証情報の差を確認します。公開パッケージだけ成功し、私有パッケージだけ失敗するなら、依存グラフよりアクセス経路が先です。
解決後にPackage Productが見つからない場合は、ネットワークを再調査しません。パッケージ名、プロダクト名、Schemeのリンク設定、ローカルパッケージの上書き、循環依存を確認します。バイナリパッケージでは、Appleのバイナリ依存関係確認手順に沿って形式と検証状態を確認します。
キャッシュと実行環境
キャッシュは一括削除する対象ではありません。少なくとも次の層を分けます。
- リポジトリの取得キャッシュ:Git接続やリビジョン取得に関係します。
- 依存パッケージのチェックアウト:特定リビジョンのソースに関係します。
DerivedData:インデックスやビルド中間生成物に関係します。- Archiveやビルド成果物:署名・配布工程の結果に関係します。
まず現在のキャッシュを使った解決結果を保存します。次に影響範囲を限定して、依存取得層、DerivedData、リポジトリ作業領域の順に個別リセットします。削除前に、再取得に必要なGit権限、秘密鍵、署名証明書、Provisioning Profileの保管場所を確認してください。キャッシュを消しても認証情報は直りません。
AppleのXcode設定・ビルド問題の診断資料も参照し、解決、ソース取得、依存グラフ生成、Package Productのリンク、コンパイル、Archiveを別々の状態として記録します。特定のブランチやSchemeだけで起きるなら、依存を最小限にした再現プロジェクトを作り、プロジェクト構造と環境のどちらに原因があるか分けます。
実行順序と判定分岐
次の5段階で進めると、無差別な初期化を避けられます。
xcodebuild -version、xcode-select -p、実行ユーザー、対象ProjectまたはWorkspace、Schemeを記録します。- XcodeのGUIと
xcodebuildで同じ依存解決を実行し、最初の有効なエラーを比較します。 Package.swift、プロジェクト設定、Package.resolvedの制約とリビジョンを照合します。- 公開・私有パッケージごとに、URL、DNS、SSH、認証、権限、取得段階を確認します。
- キャッシュを層別にリセットし、同じコミットと同じ解決ファイルで通常ビルド、続けてArchiveを実行します。
判断条件
- GUIとCLIが同じエラーなら、依存制約、解決ファイル、Git取得を優先します。
- GUIだけ失敗するなら、Xcodeの選択中ディレクトリ、プロジェクト状態、ユーザーセッションを確認します。
- CLIだけ失敗するなら、
HOME、SSHエージェント、Git設定、非対話ジョブの環境を比較します。 - 冷たいキャッシュでも同じ解決結果なら、キャッシュ全削除ではなく依存条件と認証を修正します。
- 同じリポジトリを新しい環境で安定して再現できるなら、既存環境を修復するか移行します。
- 再現できず、再起動・作業領域の削除・再取得後も不安定なら、環境を再構築し、旧環境を予備として残します。
リモートMacの受け入れ基準
リモートMacをiOS打包サーバーとして使う場合、1回の成功だけでは不十分です。同一コミット、同一Package.resolved、同一コマンドで、依存解決、通常ビルド、Archiveを連続して確認します。
さらに、主機の再起動後、作業ディレクトリを削除した後、リポジトリを再取得した後にも同じ手順を繰り返します。自動ジョブと手動SSHセッションで、実行ユーザー、HOME、Git設定、SSH設定が一致しているかをログで照合してください。
MACCOMEのリモートMac環境を検討する場合も、先に実プロジェクトでこの受け入れ基準を通してください。私有パッケージの認証とArchiveまで確認できなければ、単なる「Xcodeが起動する環境」と常駐ビルド機を同一視できません。
選択肢の比較
| 状況 | まず選ぶ対応 | 得られる効果 | 注意点 |
|---|---|---|---|
| 同じMacで再現する | 依存条件とPackage.resolvedを修正 |
変更点をレビューしやすい | Git競合の整理が必要です |
| CLIだけ失敗する | 実行ユーザーとSSH・Git設定を統一 | 自動ビルドとの差を縮められます | 非対話ジョブで再確認が必要です |
| キャッシュだけ壊れている | 該当層だけリセット | 再取得量を抑えられます | 削除前の復旧条件を確認します |
| リモートMacだけ不安定 | 同一条件で環境を再構築 | 再起動後の再現性を検証できます | 物理機器や証明書が必要な用途では別検討です |
| 長期の固定負荷が中心 | 自前Macを比較 | 常時同じ環境を保持できます | 購入費、保守、故障時の代替機が発生します |
手元のWindowsやLinuxから都度つなぐ構成では、SSH鍵の配置、ユーザー差、作業領域の消失が追加の故障点になります。自前のMac miniを購入する場合は、Mac miniの購入方法も比較材料になりますが、短期の検証や一時的なCI用途では、購入後の保守まで含めて判断してください。
Xcode 26.6の補足変更や既知の挙動は、Xcode 26.6 Release Notesで再確認します。2026年8月23日時点ではXcode 27はBeta扱いのため、安定版の障害調査へBetaの挙動を混ぜないでください。
既存環境とMACCOMEの使い分け
現在の環境が、実行ユーザーの不一致、SSH鍵の持ち出し制限、毎回消える作業領域、キャッシュを保持できないCI基盤のいずれかで詰まっているなら、同じ構成を継ぎ足すより、再現可能なMac環境へ切り替える方が合理的です。クラウド上の一時ジョブだけに依存すると、私有Git認証と依存取得を毎回組み直す手間も残ります。
一方、長期間の固定負荷、物理USB機器、特定の社内ネットワーク接続が必要なら、自前Macや専用機の方が適しています。短期のリリース対応、Xcode 26.6の検証、常駐ビルド機の代替が目的なら、MACCOMEのリモートMacで実プロジェクトの解決とArchiveを先に確認し、安定性を見てから運用を移すのが安全です。
最後に、データ核確認日:2026年8月23日。Xcodeの公開状況はAppleのリリース情報、仕様と運用手順はAppleおよびSwift Package Managerの公式資料で確認しています。 Xcode 26.6 Swift Package Managerの解決失敗では、全キャッシュ削除より、固定・分類・再現の順番を守ることが復旧への近道です。