Levo ガイド · 開発者向け: Apple

Xcode はなぜこんなに大きい? 削除しても安全なもの

解放できるグループの中に Xcode build data と Simulators が、サイズ付きで並ぶ Levo のポップオーバー

Xcode アプリは全体の一部にすぎません。本当に重いのは ~/Library/Developer にあるものです。ビルドデータ、シミュレータ、ダウンロードしたランタイム、接続したすべてのデバイスのデバッグシンボルです。ほとんどは元に戻るので、削除して構いません。例外は、アーカイブと、まだ使っているシミュレータ内のデータの 2 つです。

対象場所削除しても安全?
Xcode.app/Applications/Xcode.app古いバージョンは削除可。使っているものは残す
ビルドデータ~/Library/Developer/Xcode/DerivedDataはい。次のビルドで再生成されます
シミュレータ~/Library/Developer/CoreSimulator/Devicesはい。ただし中のアプリデータも消えます
シミュレータのランタイム/Library/Developer/CoreSimulator(ディスクイメージ)はい。必要になったら再ダウンロードします
デバイスサポート~/Library/Developer/Xcode/iOS DeviceSupportはい。接続時に再びコピーされます
アーカイブ~/Library/Developer/Xcode/Archivesビルドを出荷済みで、シンボルを別の場所に保存してある場合のみ
キャッシュ~/Library/Caches/com.apple.dt.Xcodeはい
SwiftUI プレビュー~/Library/Developer/Xcode/UserData/Previewsはい
コマンドラインツール/Library/Developer/CommandLineToolsXcode 本体があり、単体では必要ない場合のみ

自分でやる方法

まずフォルダのサイズを測り、大きいものに時間を使います。

du -sh ~/Library/Developer/Xcode/* ~/Library/Developer/CoreSimulator /Library/Developer/CoreSimulator 2>/dev/null
  1. Xcode を終了し、DerivedData の中身を削除します。DerivedData を削除する方法 を参照してください。
  2. 使っていないシミュレータとランタイムを xcrun simctl で削除するか、Xcode › 設定 › Components で削除します。古いシミュレータを削除する方法 を参照してください。
  3. iOS DeviceSupport を開き、デバイスがもう使っていない iOS バージョンのフォルダを削除します。DeviceSupport とは を参照してください。
  4. Xcode › Window › Organizer › Archives を開いて、中身を確認します。アーカイブは、App Store Connect に送ったビルドそのものの唯一のコピーで、中の dSYM がクラッシュレポートのシンボル化に使われます。ほかの場所にそのシンボルがあるときだけ、古いものを削除してください。

/Applications 内の古い Xcode は 1 つあたり約 12〜15 GB です。Developer フォルダをどけるのではなく、Finder で削除してください。

元に戻すのにかかるコスト

最も失っても痛くないのは DerivedData で、プロジェクトごとにビルドが 1 回遅くなるだけです。シミュレータのランタイムは数 GB のダウンロードと数分かかるので、アプリが対応する iOS バージョンだけ残してください。デバイスサポートは、次に iPhone を接続したときに少し待つだけです。

アーカイブは違います。中の dSYM ファイルがあるから、古いリリースの生のクラッシュレポートが読める行に変わります。リリース時に dSYM をクラッシュ解析ツールにアップロードしているなら、アーカイブはただの大きな zip で、削除できます。していないなら、今も使われているすべてのバージョンのアーカイブを残してください。

Xcode 自体のアップデートも、気づきにくい原因です。新しいバージョンを古いものの隣にインストールするたびに 12〜15 GB 増え、Xcode のベータ版も積み重なります。古いものを Finder で削除してゴミ箱を空にすれば、容量はすぐに戻ります。Mac がほぼいっぱいなら、ほかの何よりも先にこれをやってください。ディスクがいっぱいだと、Xcode のインデックス作成やビルドが妙な形で失敗します。

Levo ならこうします

Levo は、Xcode build data、デバイスサポートファイル、シミュレータ、パッケージのキャッシュを、サイズ付きの別々の行として表示するので、上のどれがあなたの 80 GB なのかがわかります。プロジェクトが古い、またはなくなっている場合は、ビルドデータとキャッシュが最初にチェックされます。古い Xcode とアーカイブは表示されますが、自動でチェックされることはありません。

Levo はシミュレータを Xcode 純正の simctl で削除し、Xcode、xcodebuild、起動中のシミュレータのいずれかが動いている間は、ビルドデータには手を触れません。iOS と Mac 開発者向けの Levo を参照してください。

よくある質問

Xcode が 100 GB も使っているのはなぜですか?

アプリの外に保存しているものがあるからです。プロジェクトごとのビルドデータ、シミュレータとそのランタイム、接続したすべてのデバイスのデバッグシンボル、アーカイブです。アプリ自体は約 15 GB です。

Xcode の Library/Developer フォルダを削除してもいいですか?

フォルダ全体はだめです。中の DerivedData、CoreSimulator のデバイス、DeviceSupport は削除して構いませんが、Archives と、キーバインドやテーマを保存した UserData フォルダは、失ってもよい場合を除いて残してください。

DerivedData を削除するとプロジェクトが壊れますか?

いいえ。ソースもプロジェクト設定も DerivedData には入っていません。Xcode が再ビルドと再インデックスをする間、次のビルドが遅くなります。

シミュレータのランタイムは削除しても安全ですか?

はい。ダウンロードしたものなので、プロジェクトに必要になれば Xcode が再び取得します。シミュレータのデバイスを削除すると、中のアプリデータは消えます。