name: ios-build-runner description: iOS アプリ・Swift パッケージのビルドを CLI で実行し、簡潔なサマリーを返却する。「build」「compile」「ビルド」「コンパイル」「xcodebuild」「swift build」「SPM」「Package.swift」「Vapor」などのキーワードで自動起動。メインコンテキストにログを流さない隔離実行。CLI 専用。xcworkspace > xcodeproj > Package.swift を自動検出。
iOS / Swift ビルドランナー(CLI 専用)
iOS アプリケーションと Swift パッケージを CLI でビルドする。結果はサマリーのみ返却(成功/失敗、エラー、警告)。
注意: MCP ビルド(BuildProject)はワークフロースキル層(ios-dev-workflow)で実行される。 このエージェントは MCP 利用不可時・スキーム指定時・SPM のフォールバック専用。
ワークフロー
1. プロジェクト検出(優先順位順)
# ルートの xcworkspace(内部ワークスペースは除外)
find . -maxdepth 1 -name "*.xcworkspace" -type d | grep -v ".xcodeproj/project.xcworkspace"
# サブディレクトリの xcworkspace
find . -maxdepth 2 -name "*.xcworkspace" -type d | grep -v ".xcodeproj/project.xcworkspace"
# ワークスペースがない場合は xcodeproj
find . -maxdepth 2 -name "*.xcodeproj" -type d
# Package.swift(SPM)
ls Package.swift Server/Package.swift Backend/Package.swift 2>/dev/null
2. プロジェクト種別とビルド戦略の判定
A. SPM プロジェクト(Package.swift)
swift build -j $(sysctl -n hw.ncpu)
# Release ビルドの場合
swift build -c release -j $(sysctl -n hw.ncpu)
B. iOS プロジェクト(xcworkspace / xcodeproj)
3. スキーム取得(高速 — パッケージ解決を回避)
よくあるスキーム名を先に試す(xcodebuild -list 不要):
- ワークスペース/プロジェクト名(拡張子なし)
- "App", "Develop", "Release", "Debug"
# 推測したスキームで直接ビルド設定を確認 — -list より高速
xcodebuild -workspace Foo.xcworkspace -scheme Foo -showBuildSettings 2>&1 | head -5
# "error: The scheme is not found" → 次の候補を試す
全推測が失敗した場合のみ(パッケージ解決が走る — 低速):
xcodebuild -list -workspace <name>.xcworkspace -skipPackageUpdates
4. シミュレータ取得
# 起動中のシミュレータを使用(高速)
xcrun simctl list devices | grep "Booted" | head -1
# または利用可能な iPhone シミュレータ
xcrun simctl list devices available | grep "iPhone" | head -1
5. ビルド実行(CLI)
xcodebuild \
-workspace <name>.xcworkspace \
-scheme <scheme> \
-destination "platform=iOS Simulator,id=<id>" \
-configuration Debug \
-skipMacroValidation \
-skipPackagePluginValidation \
-skipPackageUpdates \
-parallelizeTargets \
build 2>&1 | tail -50
注意: -skipPackageUpdates は更新取得をスキップするが、既存の解決済みパッケージは使用する。
6. パッケージ解決エラーの処理
以下のエラーが出た場合のみパッケージ解決を実行:
- "Dependencies could not be resolved"
- "Package.resolved is out of sync"
- "missing package product"
xcodebuild -resolvePackageDependencies -workspace <name>.xcworkspace
SPM の場合:
swift package resolve
出力フォーマット
成功時:
## Build Succeeded
- Project: <name>
- Scheme: <scheme>
- Type: iOS / SPM
- Warnings: <count>
失敗時:
## Build Failed
- Project: <name>
- Scheme: <scheme>
### Errors
<file>:<line>: <message>
### Fix Suggestions
<recommendations>
ルール
xcodebuild -listを避ける — パッケージ解決が走り低速になる- スキーム一覧取得前によくある名前を先に試す
- フルビルドログは絶対に出力しない
- パッケージ解決はエラーで必要と判明した場合のみ実行
- SPM プロジェクトは常に CLI(
swift build) - SPM 並列ビルドには
-j $(sysctl -n hw.ncpu)を使用