Xcode が容量を使いすぎるとき:削除しても安全なもの
Xcode 本体だけでも数 GB ありますが、Xcode が残していくもののほうがずっと大きくなりがちです。ビルドフォルダ、シミュレータ、シミュレータのランタイム、そしてこれまでに接続したすべてのデバイスのデバッグシンボルです。
結論:DerivedData、Device Support フォルダ、プレビュー用のシミュレータ、もう使わないシミュレータは削除しても安全です。必要になれば Xcode がまたビルドするか、ダウンロードし直します。Archives は、もう必要ないと確信できるもの以外は残しておきましょう。
Xcode のデータはどこに保存されている?
~/Library/Developer/Xcode/DerivedData:これまでに開いたすべてのプロジェクトのビルド結果とインデックス。安全:次のビルドで作り直されます(その 1 回だけ遅くなります)。~/Library/Developer/Xcode/iOS DeviceSupport(とwatchOS、tvOS、macOS、visionOSの同様のフォルダ):接続したデバイスとシステムバージョンごとにコピーされたデバッグシンボル。安全:そのデバイスを次に接続したときに、またコピーされます。~/Library/Developer/CoreSimulator/Devices:シミュレータ本体と、その中にインストールしたアプリやデータ。ランタイムがなくなったシミュレータは、容量を食うだけです。- シミュレータのランタイム(シミュレータ用の iOS、watchOS、visionOS 一式で、1 つあたり数 GB)。macOS はこれを Xcode ではなく、システムデータとして数えます。
~/Library/Developer/Xcode/UserData/Previews:SwiftUI のプレビュー用に作られたシミュレータ。安全:自動で作り直されます。~/Library/Developer/CoreSimulator/Cachesと~/Library/Developer/XCTestDevices:シミュレータのキャッシュと、並列テスト用に作られたクローン。安全です。~/Library/Developer/Xcode/Archives:App Store や TestFlight 向けにアーカイブしたすべてのビルド。要確認:下記を参照してください。
DerivedData はどうやって削除する?
- Xcode を終了します。
- Finder で「移動」›「フォルダへ移動」(Shift + Command + G)を選び、
~/Library/Developer/Xcode/DerivedDataを貼り付けます。 - 中のフォルダを選択してゴミ箱に入れます。容量を空けるには、ゴミ箱を空にします。
ターミナルでは次のコマンドで同じことができますが、ゴミ箱を経由しないので取り消せません。
rm -rf ~/Library/Developer/Xcode/DerivedData/*
古いシミュレータやシミュレータのランタイムを削除するには?
シミュレータの一覧が正しく保たれるように、Xcode 自身のツールに任せましょう。
xcrun simctl delete unavailable
xcrun simctl runtime list
xcrun simctl runtime delete <runtime identifier>
1 行目は、ランタイムがもうインストールされていないシミュレータを削除します。残りの 2 行は、インストール済みのランタイムを一覧表示し、もうテストに使わないものを削除します。ランタイムは Xcode › Settings › Components(古い Xcode では Platforms)からも削除でき、シミュレータを個別に削除するには Window › Devices and Simulators を使います。
iOS DeviceSupport は削除しても大丈夫?
はい。各フォルダには 1 つのデバイスとシステムバージョンのシンボルが入っていて、そのデバイスでデバッグするときに Xcode が読みやすいスタックトレースを表示するために使います。手元のデバイスでもう動いていないバージョンのフォルダは削除しましょう。そうしたデバイスをまた接続すると、Xcode がシンボルをコピーし直します(数分かかります)。
Xcode の Archives は削除したほうがいい?
確信が持てるものだけにしましょう。アーカイブには、リリースしたビルドそのものと、そのデバッグシンボル(dSYM)が入っています。これがないと、そのバージョンのクラッシュレポートを読みやすいスタックトレースに変換することも、そのビルドをもう一度書き出すこともできません。まだ使われているバージョンのアーカイブは残しておく、というのがよい目安です。
削除しても 1 週間ほどで容量がまた増えるのはなぜ?
DerivedData はビルドのたびにまた大きくなり、新しい Xcode や iOS のバージョンが出ると、新しいランタイムや Device Support が加わります。これは正常です。これらのフォルダはキャッシュだからです。ときどき、またはディスクの空きが少なくなったときに削除すれば十分です。