どっち押せばいいんだ...?
はじめに
AIにコードを編集してもらっていると、待ち時間に「あ、この文字編集しよ〜」と小さな変更を加えることはありませんか?
そんな時、突然こんなダイアログが表示されました。
The backing file has been modified outside of Xcode.
そして選択肢は、
Use Version on DiskKeep Xcode Version
の2つ。
どっち押せばいいんだ...?
なんとなく言いたいことはわかるけど、どっちがどっちだ...!?
と私のように英語に惑わされた方のために、それぞれ何を意味しているのか整理しておきます。
表示されたダイアログ
実際に表示された画面がこちらです。
今回の場合は、
Failed to save ios-myapp.xcodeproj.
The backing file has been modified outside of Xcode.
と表示されました。
ざっくり言うと、
「Xcodeで開いている間に、外部からこのプロジェクトファイルが変更されたので、どちらの内容を残すか決めてください」
という状態です。
なぜ起きた?
今回は、Codexなどの外部ツールがディスク上のプロジェクトファイルを変更している間に、Xcode側でも変更が発生したことで表示されました。
Xcodeでプロジェクトを開いている間に、外部ツールからディスク上の.xcodeprojが変更されることがあります。
その状態でXcode側からもプロジェクトを保存しようとすると、
Xcodeが保持している内容
↓
衝突
↑
外部ツールが変更したディスク上の内容
となり、Xcodeだけでは「どちらを正として残すべきか」を判断できません。
そこで今回のダイアログが表示されます。
Use Version on DiskとKeep Xcode Versionの違い
ここが一番重要です。
Use Version on Disk
ディスク上に保存されている、外部で変更された方を使います。
今回でいうと、Codexなどがプロジェクトファイルを変更したあとであれば、そちらの変更を残したいときに選びます。
Codexなどが変更した内容
↓
採用する
Xcode側でまだ保存していない内容
↓
破棄される可能性
Keep Xcode Version
こちらは逆で、現在Xcodeが保持している方を使います。
外部から行われた変更より、Xcode上で自分が行った変更を残したい場合はこちらです。
Xcode側の内容
↓
採用する
外部で変更された内容
↓
失われる可能性
つまり、
| 選択肢 | 残す方 |
|---|---|
Use Version on Disk |
Codexなど外部から変更されたディスク上の内容 |
Keep Xcode Version |
Xcodeが現在保持している内容 |
という理解でよさそうです。
結局どっちを押せばいい?
どちらが正解かは、その直前にどちらで変更した内容を残したいかによります。
例えば、
Codexにファイル追加やプロジェクト設定の変更をお願いした直後に表示された
のであれば、外部で行った変更を残したいのでUse Version on Diskを選ぶことになります。
逆に、
Xcode側でプロジェクト設定を変更した直後で、外部ツール側の変更は不要
ならKeep Xcode Versionです。
ただし、両方で重要な変更をしていた場合は要注意です。
適当にどちらかを選ぶと、もう片方の変更を失う可能性があります。
自信がない場合は、Gitで変更内容を確認できる状態にしておくと安心です。
git status
git diff
AIエージェントとXcodeを同時に使う場合は、こまめにコミットしておくのも大事そうです。
今回の場合
ちなみに私は今回、 Use Version on Diskを選択しました。
自分でちょっと文字を変更した箇所はリセットされていましたが、AIに編集してもらった内容の方が膨大なので迷う余地もありません...!
まとめ
Xcodeで、
The backing file has been modified outside of Xcode.
と表示された場合は、Xcodeで開いているプロジェクトが外部からも変更された可能性があります。
選択肢は、
-
Use Version on Disk- 外部で変更されたディスク上の内容を使う
-
Keep Xcode Version- Xcode側で保持している内容を使う
という違いです。
CodexなどのAIエージェントとXcodeを行ったり来たりしながら開発していると遭遇することがあるので、とりあえずボタンを押すのではなく「どちらの変更を残したいか」を確認してから選ぶのがよさそうです。

