بنقرة واحدة
xcode-config
Xcode Build Configuration (.xcconfig) を管理します。Use when ユーザーが「xcconfig設定して」「ビルド設定変更して」「環境変数管理して」と言ったとき。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Xcode Build Configuration (.xcconfig) を管理します。Use when ユーザーが「xcconfig設定して」「ビルド設定変更して」「環境変数管理して」と言ったとき。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
iOSシミュレーターをコンピューターユースで視覚的にテストします。スクリーンショットを撮影してUI要素を確認し、座標ベースでタップ・スワイプ操作を行いテスト結果を報告します。Use when ユーザーが「シミュレーターでテストして」「iOSシミュレーターを視覚的にテストして」「computer useでシミュレーターを操作して」「シミュレーターの画面確認して」と言ったとき。
Xcode MCP(mcpbridge)を Claude Code に追加します。Use when ユーザーが「Xcode MCP入れて」「シミュレーター操作できるようにして」「mcpbridge設定して」と言ったとき。
xcodebuildとfastlaneでiOSアプリをビルド・アーカイブし、App Store/TestFlightに申請します。Use when ユーザーが「TestFlightにアップして」「App Storeに申請して」「リリースして」と言ったとき。
Step-by-step release checklist for ClipKit iOS app submission to TestFlight and App Store. Use when preparing release, uploading to TestFlight, submitting to App Store, bumping version, or creating a release.
このプロジェクトで実際に踏んだ iOS 開発の落とし穴と対策。CoreData, AVFoundation, AVAudioSession など。CoreData の設定変更・新機能追加・マイグレーション対応時に必ず参照すること。
Step-by-step release checklist for Smart Player iOS app submission to App Store. Use when preparing release, updating version, submitting to App Store, or mentioning App Store submission.
| name | xcode-config |
| description | Xcode Build Configuration (.xcconfig) を管理します。Use when ユーザーが「xcconfig設定して」「ビルド設定変更して」「環境変数管理して」と言ったとき。 |
Xcode Build Configuration (.xcconfig ファイル) の作成・管理するスキルです。Debug/Release の設定分離、環境変数管理、ビルド設定の一元管理をサポートします。
✅ ビルド設定をファイルで管理(Git管理可能)
✅ Debug/Release で異なる設定を簡単に切り替え
✅ APIキー、URLなどの環境変数を一元管理
✅ Xcode GUI での設定ミスを防ぐ
✅ チーム全体で設定を統一
まず、プロジェクトの現在の設定を確認します:
# プロジェクトファイルを確認
find . -name "*.xcodeproj" -maxdepth 2
# 既存の xcconfig ファイルを確認
find . -name "*.xcconfig" -type f
Xcode で確認:
# Config ディレクトリを作成
mkdir -p Config
# xcconfig ファイルを作成
touch Config/Debug.xcconfig
touch Config/Release.xcconfig
touch Config/Shared.xcconfig # オプション: 共通設定
全ビルド構成で共通の設定:
// Config/Shared.xcconfig
// MARK: - Swift Settings
SWIFT_VERSION = 5.9
SWIFT_OPTIMIZATION_LEVEL = -Onone
// MARK: - iOS Deployment
IPHONEOS_DEPLOYMENT_TARGET = 17.0
// MARK: - Code Signing
CODE_SIGN_STYLE = Automatic
DEVELOPMENT_TEAM = YOUR_TEAM_ID
// MARK: - Common Bundle Settings
PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.$(PRODUCT_NAME:rfc1034identifier)
開発用の設定:
// Config/Debug.xcconfig
#include "Shared.xcconfig"
// MARK: - Configuration
CONFIGURATION = Debug
// MARK: - App Settings
PRODUCT_NAME = $(TARGET_NAME)
PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.$(PRODUCT_NAME:rfc1034identifier).debug
// MARK: - Versioning
MARKETING_VERSION = 1.0.0
CURRENT_PROJECT_VERSION = 1
// MARK: - API Keys (Development)
API_BASE_URL = https:/$()/dev.api.example.com
API_KEY = dev_api_key_12345
// MARK: - AdMob (Test IDs)
ADMOB_APP_ID = ca-app-pub-3940256099942544~1458002511
ADMOB_BANNER_ID = ca-app-pub-3940256099942544/2934735716
// MARK: - Build Settings
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG
GCC_PREPROCESSOR_DEFINITIONS = DEBUG=1
// MARK: - Optimization
SWIFT_OPTIMIZATION_LEVEL = -Onone
GCC_OPTIMIZATION_LEVEL = 0
// MARK: - Debug Flags
ENABLE_TESTABILITY = YES
DEBUG_INFORMATION_FORMAT = dwarf-with-dsym
本番用の設定:
// Config/Release.xcconfig
#include "Shared.xcconfig"
// MARK: - Configuration
CONFIGURATION = Release
// MARK: - App Settings
PRODUCT_NAME = $(TARGET_NAME)
PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.$(PRODUCT_NAME:rfc1034identifier)
// MARK: - Versioning
MARKETING_VERSION = 1.0.0
CURRENT_PROJECT_VERSION = 1
// MARK: - API Keys (Production)
API_BASE_URL = https:/$()/api.example.com
API_KEY = prod_api_key_67890
// MARK: - AdMob (Production IDs)
ADMOB_APP_ID = ca-app-pub-XXXXXXXXXXXX~YYYYYYYYYY
ADMOB_BANNER_ID = ca-app-pub-XXXXXXXXXXXX/ZZZZZZZZZZ
// MARK: - Build Settings
SWIFT_ACTIVE_COMPILATION_CONDITIONS = RELEASE
// MARK: - Optimization
SWIFT_OPTIMIZATION_LEVEL = -O
SWIFT_COMPILATION_MODE = wholemodule
GCC_OPTIMIZATION_LEVEL = s
// MARK: - Release Flags
ENABLE_TESTABILITY = NO
DEBUG_INFORMATION_FORMAT = dwarf-with-dsym
VALIDATE_PRODUCT = YES
xcconfig を正しく機能させるため、ターゲットの設定をクリア:
Info.plist で xcconfig の変数を参照:
<!-- Info.plist -->
<key>CFBundleDisplayName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleShortVersionString</key>
<string>$(MARKETING_VERSION)</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<!-- カスタム変数 -->
<key>APIBaseURL</key>
<string>$(API_BASE_URL)</string>
<key>GADApplicationIdentifier</key>
<string>$(ADMOB_APP_ID)</string>
// Config.swift
enum Config {
static let apiBaseURL: String = {
guard let urlString = Bundle.main.object(forInfoDictionaryKey: "APIBaseURL") as? String else {
fatalError("APIBaseURL not found in Info.plist")
}
return urlString
}()
static let apiKey: String = {
guard let key = Bundle.main.object(forInfoDictionaryKey: "APIKey") as? String else {
fatalError("APIKey not found in Info.plist")
}
return key
}()
static let isDebug: Bool = {
#if DEBUG
return true
#else
return false
#endif
}()
}
// 使用例
let url = "\(Config.apiBaseURL)/users"
#if DEBUG
let apiURL = "https://dev.api.example.com"
#else
let apiURL = "https://api.example.com"
#endif
# Debug ビルド
xcodebuild -project YourApp.xcodeproj \
-scheme YourApp \
-configuration Debug \
-showBuildSettings | grep -E "PRODUCT_BUNDLE_IDENTIFIER|MARKETING_VERSION|API_BASE_URL"
# Release ビルド
xcodebuild -project YourApp.xcodeproj \
-scheme YourApp \
-configuration Release \
-showBuildSettings | grep -E "PRODUCT_BUNDLE_IDENTIFIER|MARKETING_VERSION|API_BASE_URL"
期待される出力:
Debug:
PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.YourApp.debug
MARKETING_VERSION = 1.0.0
API_BASE_URL = https://dev.api.example.com
Release:
PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.YourApp
MARKETING_VERSION = 1.0.0
API_BASE_URL = https://api.example.com
ユーザーが言うこと: "AdMobのIDをDebugとReleaseで分けたい"
実行されること:
$(ADMOB_APP_ID) を参照結果: Debug ビルドでは Test ID、Release ビルドでは Production ID が使用される
ユーザーが言うこと: "開発環境と本番環境でAPIのURLを切り替えたい"
実行されること:
API_BASE_URL を定義APIBaseURL キーを追加Bundle.main.object(forInfoDictionaryKey:) で取得結果: ビルド構成によって自動的に適切な API URL が使用される
ユーザーが言うこと: "バージョン番号を xcconfig で管理したい"
実行されること:
MARKETING_VERSION と CURRENT_PROJECT_VERSION を定義$(MARKETING_VERSION) を参照結果: バージョン番号を xcconfig ファイルで一元管理できる
ユーザーが言うこと: "Dev、Staging、Productionの3つの環境が欲しい"
実行されること:
Config/Dev.xcconfig, Config/Staging.xcconfig, Config/Production.xcconfig を作成結果: 3つの環境を簡単に切り替えられる
原因: ターゲットの Build Settings で値が上書きされている
解決方法:
$(VARIABLE_NAME) が展開されない原因: Info.plist のフォーマットが正しくない、または変数名のタイポ
解決方法:
# ビルド設定を確認
xcodebuild -showBuildSettings | grep VARIABLE_NAME
# Info.plist の値を確認
/usr/libexec/PlistBuddy -c "Print :KeyName" Info.plist
原因: #include で読み込んだファイルと設定が重複
解決方法:
Shared.xcconfig(共通設定)
├── Debug.xcconfig(#include "Shared.xcconfig")
└── Release.xcconfig(#include "Shared.xcconfig")
Unable to load contents of file list原因: xcconfig ファイルがターゲットに追加されている
解決方法:
原因: Info.plist のプロパティが User-Defined として認識されていない
解決方法:
INFOPLIST_OTHER_PREPROCESSOR_FLAGS = -traditional
references/config-variables.md を参照⚠️ APIキーや秘密情報を xcconfig に直接書かない
.gitignore に追加するか、環境変数から読み込む// Secrets.xcconfig (Gitignore対象)
API_KEY = $(API_KEY_ENV)
✅ 本番用の秘密情報の管理方法:
.xcconfig.template をリポジトリに保存# .gitignore
Config/Secrets.xcconfig
# リポジトリには Secrets.xcconfig.template を保存
// MARK: - API Settings
// MARK: - Build Settings
API_BASE_URL ✅apiBaseUrl ❌SUPPORTED_LANGUAGES = en ja zh
// 他の変数を参照
BASE_BUNDLE_ID = com.yourcompany
PRODUCT_BUNDLE_IDENTIFIER = $(BASE_BUNDLE_ID).$(PRODUCT_NAME:rfc1034identifier)
// 環境変数を参照
API_KEY = $(API_KEY_FROM_ENV)
// システム変数を参照
OUTPUT_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
# GitHub Actions example
- name: Update xcconfig
run: |
echo "API_KEY = ${{ secrets.API_KEY }}" >> Config/Secrets.xcconfig
echo "API_BASE_URL = ${{ secrets.API_URL }}" >> Config/Secrets.xcconfig
- name: Build
run: |
xcodebuild -configuration Release \
-xcconfig Config/Release.xcconfig \
build
# すべてのビルド設定を表示
xcodebuild -showBuildSettings
# 特定の変数を確認
xcodebuild -showBuildSettings | grep PRODUCT_BUNDLE_IDENTIFIER
# xcconfig の構文チェック(エラーがあればビルドで確認)
xcodebuild -project YourApp.xcodeproj -showBuildSettings > /dev/null