プロジェクトファイル操作
Xcode MCP のファイル操作ツール群を使い、安全にプロジェクト構造を変更します。
クイックスタート
操作内容を自然言語で記述すると、適切な MCP ツールの組み合わせで実行します。
ツール別ベストプラクティス
XcodeRead — ファイル読み取り
{
"tabIdentifier": "...",
"filePath": "Sources/Models/User.swift",
"offset": 10,
"limit": 50
}
offsetとlimitで部分読み取りが可能(大きなファイルに有効)- 編集前に必ず読み取りでコンテキストを確認する
XcodeWrite — ファイル作成
{
"tabIdentifier": "...",
"filePath": "Sources/Models/NewModel.swift",
"content": "import Foundation\n\nstruct NewModel {\n let id: UUID\n}"
}
- 注意: ターゲットへの自動追加はされない(Xcode 上で手動追加が必要な場合あり)
- 既存ファイルは上書きされるため、事前に
XcodeReadで確認する
XcodeUpdate — テキスト置換
{
"tabIdentifier": "...",
"filePath": "Sources/Models/User.swift",
"oldString": "var name: String",
"newString": "var displayName: String",
"replaceAll": true
}
oldStringは完全一致(部分文字列ではなく、十分なコンテキストを含める)replaceAll: false(デフォルト)は最初の一致のみ置換
XcodeMV — 移動・リネーム・コピー
{
"tabIdentifier": "...",
"sourcePath": "Sources/OldName.swift",
"destinationPath": "Sources/NewName.swift",
"operation": "move"
}
operation:"move"/"copy"overwriteExisting: 既存ファイルの上書き許可
XcodeRM — 削除
{
"tabIdentifier": "...",
"path": "Sources/Deprecated/",
"recursive": true,
"deleteFiles": true
}
- 破壊的操作: 必ずユーザーに確認を取ってから実行する
deleteFiles: trueでファイルシステムからも削除(false ならプロジェクト参照のみ除去)
XcodeLS — ディレクトリ一覧
{
"tabIdentifier": "...",
"path": "Sources/",
"recursive": true,
"ignore": ["*.xcassets", "*.strings"]
}
ignoreでノイズとなるファイルを除外可能- プロジェクト構造の全体像を把握するのに使う
XcodeGlob / XcodeGrep — 検索
// Glob: ファイル名パターンで検索
{ "tabIdentifier": "...", "pattern": "**/*ViewModel.swift" }
// Grep: ファイル内容を正規表現で検索
{ "tabIdentifier": "...", "pattern": "TODO:|FIXME:", "glob": "**/*.swift" }
安全な操作フロー
ファイルリネーム(参照の更新込み)
XcodeGrepで旧ファイル名/クラス名の参照を全検索- 参照箇所を
XcodeReadで確認 XcodeMVでファイルをリネーム- 各参照箇所を
XcodeUpdateで更新 BuildProjectでビルド検証
ディレクトリ構造の変更
XcodeLSで現在の構造を確認XcodeMakeDirで新ディレクトリを作成XcodeMVでファイルを移動- import パスの更新が必要なら
XcodeGrep+XcodeUpdate BuildProjectでビルド検証
ガイドライン
- 破壊的操作(RM)は必ずユーザー確認を取る
- ファイル移動後は必ずビルド検証する
XcodeWriteは新規ファイル作成用。既存ファイルの編集にはXcodeUpdateを使う- 大量のファイル操作はステップごとにビルド検証を挟む