PC パソコン

Xcode「Failed to register bundle identifier」の原因と解決方法

XcodeでiPhoneやiPad向けアプリを実機ビルドしようとした際に、Signing & Capabilitiesで次のようなエラーが表示されることがあります。

Failed to register bundle identifier

さらに詳細として、次のようなメッセージが表示される場合があります。

The app identifier "com.example.myapp" cannot be registered to your development team because it is not available.

このエラーは、Xcodeが現在設定されているBundle IdentifierをApple Developer側のApp IDとして登録できなかったときに発生します。

代表的な原因は、Bundle Identifierがすでに他の開発者や別チームで使用されている、現在のApple AccountにApp IDを登録する権限がない、Bundle Identifierの形式に問題がある、Xcodeで間違ったTeamを選択している、Apple Developer側に既存App IDがあるのに別の設定として登録しようとしている、といったケースです。

  1. 「Failed to register bundle identifier」とは
  2. Bundle IdentifierとApp IDの違い
    1. Bundle Identifier
    2. App ID
  3. 主な原因
    1. 1. Bundle Identifierがすでに使用されている
    2. 2. 他のApple Developer Teamですでに登録している
    3. 3. Bundle Identifierがサンプルのまま
    4. 4. 正しいDevelopment Teamを選択していない
    5. 5. App IDを登録する権限がない
    6. 6. Bundle Identifierの形式に問題がある
    7. 7. 既存App IDとXcode側のBundle Identifierが一致していない
    8. 8. ExtensionのBundle Identifierが重複している
    9. 9. Apple Developer側のCapabilities設定と競合している
  4. 代表的な発生状況
  5. 最初に確認する手順
    1. 1. Bundle Identifierを確認する
    2. 2. Teamを確認する
    3. 3. Apple Accountを確認する
  6. 解決方法1:Bundle Identifierを一意な値へ変更する
  7. 解決方法2:正しいTeamを選択する
  8. 解決方法3:Automatically manage signingを有効にする
  9. 解決方法4:Apple Developer側のApp IDを確認する
  10. 解決方法5:App IDを手動で登録する
    1. 基本手順
  11. 解決方法6:Developerロールの権限を確認する
  12. 解決方法7:ExtensionのBundle Identifierを確認する
  13. 解決方法8:PRODUCT_BUNDLE_IDENTIFIERを確認する
  14. 解決方法9:DebugとReleaseのBundle Identifierを比較する
  15. 解決方法10:.xcconfigを確認する
  16. 解決方法11:古いProvisioning Profileを整理する
  17. 解決方法12:Capabilitiesを確認する
  18. 「identifier is not available」も表示される場合
  19. GitHubからCloneしたプロジェクトの場合
  20. CIで発生する場合
  21. App Store Connect登録済みアプリの場合
  22. やってはいけない対処
  23. 最短で解決する確認順序
  24. まとめ

「Failed to register bundle identifier」とは

iOSアプリには、アプリを識別するためのBundle Identifierが設定されています。

例えば次のような値です。

com.example.myapp

XcodeでAutomatic Signingを使用すると、必要に応じてこのBundle Identifierに対応するApp IDをApple Developer側へ登録します。

この登録処理に失敗したときに表示されるのが「Failed to register bundle identifier」です。

Appleの現在の案内でも、Explicit App IDを登録する場合、そのBundle IDはXcodeのターゲットに設定されたBundle Identifierと一致させる必要があります。

Bundle IdentifierとApp IDの違い

混乱しやすいポイントですが、Bundle IdentifierとApp IDは完全に同じ意味ではありません。

Bundle Identifier

Xcodeプロジェクト内でアプリを識別する文字列です。

com.example.myapp

App ID

Apple Developer側で登録され、Provisioning Profileなどの署名設定でアプリを識別するIDです。

Explicit App IDの場合、そのBundle ID部分はXcode側のBundle Identifierと一致させます。

主な原因

1. Bundle Identifierがすでに使用されている

最も典型的な原因です。

例えばサンプルプロジェクトで次のBundle Identifierが設定されているとします。

com.example.app

このIdentifierがすでに他の開発者によってApple側に登録されている場合、自分のTeamでは登録できません。

GitHubから取得したサンプルプロジェクトで特に発生しやすいケースです。

2. 他のApple Developer Teamですでに登録している

自分が複数のDeveloper Teamに参加している場合、同じBundle Identifierが別Teamですでに登録されていることがあります。

Xcodeで別のTeamを選択すると、そのTeamから新規登録しようとして失敗する場合があります。

3. Bundle Identifierがサンプルのまま

教材、GitHub、テンプレートなどでは次のようなBundle Identifierが使われていることがあります。

com.example.MyApp com.company.app com.test.app

これらは一意性が低く、すでに登録済みである可能性があります。

4. 正しいDevelopment Teamを選択していない

Signing & CapabilitiesでTeamが間違っている場合、意図しないDeveloper TeamへApp IDを登録しようとして失敗することがあります。

5. App IDを登録する権限がない

会社やチームのApple Developer Programでは、DeveloperロールにApp ID作成権限が与えられていない場合があります。

さらに、Account Holder、Admin、App ManagerはAutomatic Signing Controlsを利用して、Developerロールによる新規App IDの登録を制限できます。

6. Bundle Identifierの形式に問題がある

Bundle Identifierには通常、逆ドメイン形式を使用します。

jp.example.myapp

空白や不適切な文字を含めると、登録や署名処理に問題が発生することがあります。

7. 既存App IDとXcode側のBundle Identifierが一致していない

Apple Developer側ですでにApp IDを作成している場合は、そのBundle IDとXcode側の設定を一致させる必要があります。

8. ExtensionのBundle Identifierが重複している

Widget ExtensionやNotification Service Extensionを追加した場合、Extensionにも別のBundle Identifierが必要です。

例えば本体が次の場合:

com.example.myapp

Widgetでは一般的に次のように別Identifierを使用します。

com.example.myapp.widget

Extension側に既存のIdentifierをそのまま使用すると登録に失敗することがあります。

9. Apple Developer側のCapabilities設定と競合している

Push Notifications、App Groups、Sign in with Apple、iCloudなどを使用している場合、App ID側の設定も関係します。

App IDのCapabilitiesを変更すると、そのApp IDを使用するProvisioning Profileが無効になり、再生成が必要になる場合があります。

代表的な発生状況

  • 新しいXcodeプロジェクトを実機で初めて実行した
  • GitHubからプロジェクトをCloneした
  • 他人のサンプルコードをコピーした
  • 会社のApple Developer Teamへ切り替えた
  • 個人Teamと会社Teamを切り替えた
  • Bundle Identifierを変更した
  • WidgetやExtensionを追加した
  • Apple Accountを変更した
  • Automatic Signingを有効にした
  • 新しいApp IDをXcodeから自動作成しようとした

最初に確認する手順

1. Bundle Identifierを確認する

Xcodeで次の順に開きます。

Project → TARGETS → 対象アプリ → Signing & Capabilities

Bundle Identifierを確認します。

com.example.myapp

GitHubなどから取得したプロジェクトの場合は、まず自分専用のIdentifierへ変更してください。

2. Teamを確認する

同じSigning & Capabilities画面でTeamを確認します。

複数のApple Developer Teamへ所属している場合は、意図したTeamが選択されているか特に注意してください。

3. Apple Accountを確認する

Xcodeで次を確認します。

Xcode → Settings → Accounts

使用するApple Accountが登録されていることを確認します。

解決方法1:Bundle Identifierを一意な値へ変更する

最も簡単で、最も多くのケースで有効な解決方法です。

例えば次のような一般的すぎるIdentifierを使用しているとします。

com.example.myapp

自分のドメインや名前を組み込んだ値へ変更します。

jp.examplecompany.myapp

または個人開発なら、十分一意になる文字列を使用します。

com.yourname.myuniquename

変更後に再度Signing & Capabilitiesを確認し、Automatic Signingを実行します。

注意:すでにApp Storeで公開しているアプリのBundle Identifierは、新規プロジェクトのように気軽に変更してはいけません。既存アプリの識別情報として扱われるためです。

解決方法2:正しいTeamを選択する

複数Teamを利用している場合は、次を確認します。

  1. Signing & Capabilitiesを開く
  2. Teamを確認する
  3. App IDを登録したTeamを選ぶ
  4. 再ビルドする

別Teamで既に使用しているBundle Identifierを、現在のTeamから新規登録しようとしていないか確認してください。

解決方法3:Automatically manage signingを有効にする

手動署名が必要でなければ、Automatic Signingを利用します。

  1. Targetを選択します。
  2. Signing & Capabilitiesを開きます。
  3. Automatically manage signingを有効にします。
  4. Teamを選択します。
  5. 再ビルドします。

XcodeがApp IDやProvisioning Profileなどの署名設定を管理できるようになります。

ポイント:Automatic Signingでも、利用できないBundle Identifierを強制的に登録することはできません。Identifier自体が競合している場合は変更が必要です。

解決方法4:Apple Developer側のApp IDを確認する

すでにApp IDを作成済みの場合は、Apple DeveloperのCertificates, Identifiers & ProfilesでIdentifiersを確認します。

Xcode側:

com.example.myapp

Apple Developer側:

com.example.myapp

Explicit App IDの場合は、このBundle IDが一致していることを確認します。

解決方法5:App IDを手動で登録する

Automatic Signingによる登録に失敗する場合は、必要に応じてApple Developer側からApp IDを作成します。

基本手順

  1. Certificates, Identifiers & Profilesを開きます。
  2. Identifiersを選択します。
  3. 追加ボタンをクリックします。
  4. App IDsを選択します。
  5. Appを選択します。
  6. Descriptionを入力します。
  7. Explicit App IDを選択します。
  8. Xcodeと同じBundle IDを入力します。
  9. 必要なCapabilitiesを設定します。
  10. Registerを実行します。

Appleの現在の仕様では、App IDの手動登録には通常Account HolderまたはAdmin権限が必要です。

重要:チーム内で権限が不足している場合は、Account HolderまたはAdminへApp IDの作成を依頼してください。

解決方法6:Developerロールの権限を確認する

会社のApple Developer Teamでのみ発生する場合は、Automatic Signing Controlsを確認してください。

組織では、Developerロールに対して次のような操作を制限できます。

  • 新しいApp IDの登録
  • 既存App IDの変更
  • テストデバイスの登録

自分では変更できない場合、TeamのAccount Holder、Admin、App Managerなど管理権限を持つ担当者へ確認します。

解決方法7:ExtensionのBundle Identifierを確認する

Widget、Share Extension、Notification Service Extensionなどを追加した場合は、各Targetを確認します。

例:

アプリ本体:

com.example.myapp

Widget:

com.example.myapp.widget

Notification Service Extension:

com.example.myapp.notification

すべてのTargetに同じBundle Identifierを設定しないでください。

解決方法8:PRODUCT_BUNDLE_IDENTIFIERを確認する

Signing & Capabilitiesでは正しく見えていても、Build Settingsや.xcconfigで別のBundle Identifierが設定されていることがあります。

Terminalから現在の実効値を確認できます。

xcodebuild -showBuildSettings | grep PRODUCT_BUNDLE_IDENTIFIER

例えば次のように表示されます。

PRODUCT_BUNDLE_IDENTIFIER = com.example.myapp

想定していない値が表示された場合は、Build Settingsや.xcconfigを確認します。

解決方法9:DebugとReleaseのBundle Identifierを比較する

Build ConfigurationによってBundle Identifierを変更しているプロジェクトでは、Debugだけ正常でReleaseだけ登録エラーになることがあります。

次のように確認します。

xcodebuild -showBuildSettings -configuration Debug | grep PRODUCT_BUNDLE_IDENTIFIER

xcodebuild -showBuildSettings -configuration Release | grep PRODUCT_BUNDLE_IDENTIFIER

意図しないBundle Identifierが設定されていないか確認してください。

解決方法10:.xcconfigを確認する

プロジェクトで.xcconfigファイルを使用している場合、Bundle Identifierがそこで定義されている場合があります。

PRODUCT_BUNDLE_IDENTIFIER = com.example.myapp

Signing & Capabilitiesだけを変更しても、.xcconfig側の値で上書きされる構成があります。

解決方法11:古いProvisioning Profileを整理する

Bundle Identifierを変更した後、古いProvisioning Profileが残っていると署名関連の別エラーが続くことがあります。

保存場所は一般的に次です。

~/Library/MobileDevice/Provisioning Profiles/

一覧を確認します。

ls ~/Library/MobileDevice/Provisioning\ Profiles/

必要に応じて古いProfileをバックアップして整理し、Automatic Signingで再取得します。

解決方法12:Capabilitiesを確認する

App IDを作成できても、その後Push NotificationsやApp Groupsなどで署名エラーになる場合は、Apple Developer側のApp IDに必要なCapabilitiesが有効になっているか確認してください。

AppleではApp IDのCapabilitiesを変更すると、そのApp IDを含む既存Provisioning Profileが無効になり、再生成が必要になる場合があります。

「identifier is not available」も表示される場合

次のようなエラーが併記されることがあります。

The app identifier "com.example.myapp" cannot be registered to your development team because it is not available.

この場合、まずBundle Identifierが他で使用されている可能性を考えます。

新規開発中のアプリであれば、十分に一意なIdentifierへ変更するのが最も簡単です。

変更前:

com.example.app

変更後:

jp.yourdomain.projectname

GitHubからCloneしたプロジェクトの場合

GitHub上のサンプルプロジェクトは、作者のBundle Identifierが設定されたままになっていることがあります。

そのまま実機でビルドすると、作者が登録済みのIdentifierを自分のTeamから登録しようとして失敗します。

まず次の項目を自分用へ変更します。

  • Bundle Identifier
  • Development Team
  • 必要に応じてApp Groups
  • URL Schemes
  • Associated Domains
  • Push Notifications設定

CIで発生する場合

CI環境で「Failed to register bundle identifier」が発生する場合、CIでAutomatic SigningがApp ID登録を試みている可能性があります。

本番CIでは、事前に正しいApp IDやProvisioning Profileを準備し、実行時に不要な新規App ID登録が発生しない構成にすると管理しやすくなります。

実際のBundle Identifierは次のコマンドで確認できます。

xcodebuild -showBuildSettings \ -scheme MyApp \ -configuration Release \ | grep PRODUCT_BUNDLE_IDENTIFIER

ローカル環境とCIで値が異なる場合は、.xcconfigや環境変数による上書きを確認してください。

App Store Connect登録済みアプリの場合

すでにApp Store Connectでアプリを運用している場合は、新しいBundle Identifierを適当に作成するのではなく、既存アプリに対応するApp IDを使用します。

配布用Provisioning Profileを作成する際も、Appleは開発時に使用したBundle IDと一致するApp IDを選択するよう案内しています。

やってはいけない対処

既存アプリのBundle Identifierを、エラー回避だけを目的に変更しないでください。

新規サンプルアプリなら変更して問題ないことが多いですが、公開中アプリではBundle Identifierはアプリを識別する重要な情報です。

また、原因がTeamの選択ミスや権限不足の場合、Bundle Identifierを何度変更しても根本解決になりません。

最短で解決する確認順序

  1. Signing & CapabilitiesでBundle Identifierを確認する
  2. サンプル用Identifierなら自分専用の値へ変更する
  3. 正しいDevelopment Teamを選択する
  4. Automatically manage signingを有効にする
  5. Apple Developer側に同じApp IDが存在するか確認する
  6. 会社TeamならApp ID登録権限を確認する
  7. ExtensionごとのBundle Identifierを確認する
  8. PRODUCT_BUNDLE_IDENTIFIERの実効値を確認する
  9. DebugとReleaseの設定差を確認する
  10. .xcconfigによる上書きを確認する

まとめ

Xcodeの「Failed to register bundle identifier」は、Xcodeが現在のBundle IdentifierをApple Developer側のApp IDとして登録できない場合に発生します。

新規プロジェクトやGitHubから取得したサンプルでは、Bundle Identifierがすでに他の開発者に使用されているケースが多いため、まず自分専用の一意なIdentifierへ変更してください。

それでも解決しない場合は、Signing & CapabilitiesのTeam、Apple Account、App ID登録権限、Apple Developer側の既存App ID、ExtensionごとのIdentifier、PRODUCT_BUNDLE_IDENTIFIERを順番に確認します。

会社のDeveloper Teamでのみ発生する場合は、Automatic Signing ControlsによってDeveloperロールのApp ID登録が制限されていないかも確認すると、原因を特定しやすくなります。