Xcodeプロジェクトのアーキテクチャ設計・ビルド設定管理スキル。モジュール分割、ターゲット追加、依存関係整理、ビルド設定変更を支援。使用シーン:(1)「ビルド設定XXをYYに変更して」などのビルド設定変更リクエスト (2)「この機能を新しいモジュールに切り出して」などのモジュール分割リクエスト (3) 大きな機能追加時にモジュール構成やテスト可能性を検討する場合 (4)「Swift Packageを追加して」などの依存関係管理
This skill inherits all available tools. When active, it can use any tool Claude has access to.
references/build-settings.mdreferences/module-patterns.mdXcodeプロジェクトのアーキテクチャ設計とビルド設定を管理する。
pbxproj MCPサーバーが利用可能。プロジェクト操作は直接ツールを呼び出して実行する。
情報取得:
get_project_info - プロジェクト概要list_targets - ターゲット一覧get_target_info - ターゲット詳細list_files / list_groups - ファイル・グループ構造list_configurations - ビルド構成一覧get_build_settings - ビルド設定取得list_build_phases - ビルドフェーズ一覧list_packages - Swift Package依存関係list_schemes / get_scheme_info - スキーム情報変更操作:
update_build_setting - ビルド設定変更add_file / remove_file - ファイル追加・削除add_group - グループ追加add_target / add_target_dependency - ターゲット追加・依存関係設定add_swift_package / add_local_package - パッケージ追加add_run_script / update_run_script - スクリプトフェーズ管理リクエスト受信
│
▼
┌─────────────────┐
│ リクエスト種別判定 │
└───────┬─────────┘
┌────┼────┬────────┐
▼ ▼ ▼ ▼
ビルド設定 モジュール 依存関係 アーキ
変更 分割 追加 レビュー
│ │ │ │
▼ ▼ ▼ ▼
現状確認 現状分析 互換性確認 構造分析
│ │ │ │
▼ ▼ ▼ ▼
変更実行 設計提案 追加実行 改善提案
│
▼
承認後実行
get_build_settings で現在値を確認list_configurations で対象構成を確認(Debug/Release等)update_build_setting で変更実行| 設定名 | 説明 | 典型的な値 |
|---|---|---|
SWIFT_VERSION | Swiftバージョン | 5.0, 6.0 |
IPHONEOS_DEPLOYMENT_TARGET | 最小iOS | 15.0, 17.0 |
PRODUCT_BUNDLE_IDENTIFIER | Bundle ID | com.example.app |
CODE_SIGN_STYLE | 署名方式 | Automatic, Manual |
SWIFT_STRICT_CONCURRENCY | 並行性チェック | minimal, targeted, complete |
ENABLE_TESTABILITY | テスト可能性 | YES (Debug), NO (Release) |
DEBUG_INFORMATION_FORMAT | デバッグ情報 | dwarf, dwarf-with-dsym |
SWIFT_OPTIMIZATION_LEVEL | 最適化レベル | -Onone, -O, -Osize |
詳細は references/build-settings.md を参照。
モジュール分割を検討すべき状況:
| 種別 | 用途 | 作成方法 |
|---|---|---|
| Swift Package (ローカル) | 推奨。シンプルな依存管理 | ファイルシステムで作成後 add_local_package |
| Framework | 動的リンク、リソース含む | add_target (product_type: framework) |
| Static Library | 静的リンク | add_target (product_type: staticLibrary) |
MyApp/
├── MyApp/ # メインアプリターゲット
│ ├── App/ # AppDelegate, SceneDelegate
│ ├── Features/ # 画面・機能別
│ └── Resources/ # Assets, Localizable
├── Packages/ # ローカルSwift Packages
│ ├── Core/ # 共通ユーティリティ
│ ├── Domain/ # ビジネスロジック
│ ├── Data/ # リポジトリ、API
│ └── UI/ # 共通UIコンポーネント
└── MyAppTests/ # テストターゲット
詳細は references/module-patterns.md を参照。
list_targets, list_files でプロジェクト構造把握add_target_dependency または add_local_package// ❌ テストしにくい
class OrderViewModel {
func placeOrder() {
let api = APIClient.shared // ハードコードされた依存
api.post("/orders", ...)
}
}
// ✅ テストしやすい
protocol OrderServiceProtocol {
func placeOrder(_ order: Order) async throws -> OrderResult
}
class OrderViewModel {
private let orderService: OrderServiceProtocol
init(orderService: OrderServiceProtocol) {
self.orderService = orderService
}
func placeOrder() async throws {
try await orderService.placeOrder(currentOrder)
}
}
// テスト時
class MockOrderService: OrderServiceProtocol {
var placeOrderResult: Result<OrderResult, Error> = .success(...)
func placeOrder(_ order: Order) async throws -> OrderResult {
try placeOrderResult.get()
}
}
add_swift_package:
repository_url: "https://github.com/xxx/yyy"
product_name: "ProductName"
target_name: "MyApp"
version: "1.0.0"
version_rule: "upToNextMajor" # or upToNextMinor, exact, branch, revision
Packages/MyModule/ にSwift Package構造を作成add_local_package でプロジェクトに追加| ファイル | 内容 |
|---|---|
references/build-settings.md | ビルド設定の詳細リファレンス |
references/module-patterns.md | モジュール分割パターンの詳細 |