iOS Env
Overview
プロジェクトごとに Apple アカウント・Bundle ID を分けるには?
複数の iOS アプリや Flutter プロジェクトを運用していると、Xcode の設定(Apple Developer アカウントや Bundle ID)が混在してしまうことがある。
プロジェクトごとに設定を整理することで、ビルド・配布が安定し、管理も容易になります。
方法1:Xcode の設定をプロジェクト単位で保持する
Xcode の「チーム(DEVELOPMENT_TEAM)」や「Bundle Identifier」は、プロジェクトファイル内(ios/Runner.xcodeproj/project.pbxproj)に保存されるため、Gitで管理可能。
これによりプロジェクト単位で Apple Developer アカウントの設定を保持できます。
方法2:xcconfig とスキームで環境を分離する
開発・本番など複数の環境を切り替える場合、以下の構成がおすすめです。
RunnerDev.xcconfig→com.naohito.xoda.devRunnerProd.xcconfig→com.naohito.xoda- スキーム:
Runner (Dev)/Runner (Prod) - チームID(DEVELOPMENT_TEAM)や署名方法(自動/手動)もファイルごとに定義可能
// RunnerDev.xcconfig
PRODUCT_BUNDLE_IDENTIFIER = com.naohito.xoda.dev
DEVELOPMENT_TEAM = ABCDEFG123
方法3:Flutter Flavor を使ってビルド切り替え
Flutter 側では --flavor オプションを使って iOS 側の設定を切り替えることができます:
flutter build ios --flavor dev
flutter build ios --flavor prod
環境ごとに別バンドルIDが必要な理由と運用方法
Apple Developer および App Store Connect の仕様により、com.naohito.xoda(本番)と com.naohito.xoda.dev(開発)といったように、Bundle Identifier が異なる場合、それぞれは「別のアプリ」として扱われます。
そのため、開発環境用に com.naohito.xoda.dev を使いたい場合は、以下の手順で登録・運用する必要があります。
なぜ別バンドルIDが必要か?
- Apple にとって Bundle ID はアプリの一意な識別子
- 本番用(xoda)と開発用(xoda.dev)を区別して署名・配信・TestFlight管理したいため
- 実機インストールやTestFlight配信でもアプリ単位での制御が必要なため
Apple Developer側での設定
- Apple Developer Portal にログイン
- Identifiers >
+をクリックして App ID を作成 - Bundle ID に
com.naohito.xoda.devを入力 - 必要な Capabilities(例:Push通知)を設定
App Store Connect側での設定(必要に応じて)
- TestFlight で
xoda.devを配信したい場合、App Store Connect 上にも「新しいアプリ」としてcom.naohito.xoda.devを登録する必要があります
運用上の構成例
| 環境 | Bundle ID | 用途 | Apple 上の扱い |
|---|---|---|---|
| production | com.naohito.xoda | 本番アプリ | App Store 公開用 |
| dev | com.naohito.xoda.dev | 開発・テスト用 | TestFlight 用など |
Flutter + Xcode Flavor の併用
Flutter では flavor 切り替えと .xcconfig を併用することで、以下のような切り替えが可能です:
flutter build ios --flavor dev
flutter build ios --flavor prod
// RunnerDev.xcconfig
PRODUCT_BUNDLE_IDENTIFIER = com.naohito.xoda.dev
DEVELOPMENT_TEAM = ABCDEFG123
このように設定することで、ビルド時点で「どの Apple アカウント・Bundle ID を使うか」が明確になり、安全かつ効率的に管理できます。