Xcode 27でSwift Package Registryから取得したパッケージをビルドすると、依存解決には成功しているのに、実在しない長い製品名へ変換されてビルドが止まることがあります。Apple Developer ForumsでApple DTSが案内した回避策は、Package IDをすべて小文字に統一することです。
表示されるエラー
error: Missing package product 'Registry.Package_Package.Package'
(in target 'Target' from project 'Project')
本来の製品名がRegistry.Packageであるにもかかわらず、Registryのscope、package名、product名が重複して連結されたような名前になります。
原因
Xcode 27系のSwift Package Registry連携で、Registry名やPackage IDに大文字が含まれると、内部ビルドグラフのノード名が誤って生成される既知問題です。認証トークンやレジストリ設定が正しく、パッケージ解決が完了していても、ビルド段階で存在しないproductを参照して失敗します。
Apple DTSは、すべてのPackage IDを小文字に変更する回避策を案内しています。Xcode 27 RCでも再現報告があり、2026年9月29日時点で修正版は公式に特定されていません。
発生条件・対象バージョン
- Xcode 27 beta 4以降、少なくともXcode 27 RCまで報告あり
- JFrog Artifactoryなど、SE-0292互換のSwift Package Registryを使用
- Registry名、scope、package IDのいずれかに大文字を含む
- 依存解決は成功するが、ターゲットのビルド時に失敗する
推奨する解決手順
Package.swiftまたはXcodeのPackage Dependencies画面で、RegistryのPackage IDを確認します。- scopeとpackage名を含むPackage IDをすべて小文字に変更します。
- 必要なら
~/.swiftpm/configuration/registries.json側の対応する識別子も小文字へ合わせます。 - Xcodeで「File > Packages > Reset Package Caches」を実行します。
- 「File > Packages > Resolve Package Versions」を実行し、再ビルドします。
// 修正前の例
.Registry("Registry.Package")
// 修正後の考え方
.registry("registry.package")
実際の記述形式は利用しているRegistryとPackage.swiftの構成に従ってください。重要なのは、プロジェクト側とRegistry設定側で同じ小文字のPackage IDを使うことです。
代替策
- 小文字化できない場合は、修正版が明示されるまでXcode 26の既存ビルド環境を維持する
- Registry経由ではなく、許可される場合は一時的に同じパッケージのGit URL依存へ切り替える
- 組織のRegistry管理者と調整し、小文字のscope/package IDを追加する
キャッシュ削除だけでは根本原因の大文字を解消できません。Package IDを変更せずにDerivedDataやPackage Cacheだけを消しても再発する可能性があります。
確認方法
- Package Dependenciesで対象パッケージが小文字IDとして解決されていることを確認します。
- ビルドログから
Registry.Package_Package.Packageのような重複した名前が消えたことを確認します。 - 対象ターゲットをClean Build Folder後に再ビルドします。
- CIでも同じRegistry設定とPackage IDを使い、再現しないことを確認します。
注意点
この問題は通常の「Missing package product」と同じ表示でも、原因が異なります。Package.swiftにproductが存在しない、バージョン条件が競合している、認証に失敗している場合は別の調査が必要です。エラー内でscope・package・productが不自然に重複しているかを確認してください。
まとめ
Xcode 27でMissing package product 'Registry.Package_Package.Package'が出る場合、Registry関連のPackage IDに含まれる大文字が内部名の誤生成を引き起こしている可能性があります。Apple DTSの案内どおりPackage IDを小文字へ統一し、キャッシュをリセットして依存関係を再解決してください。修正版はまだ公式に明示されていないため、Xcodeの更新後もリリースノートとForumスレッドを確認するのが安全です。
