すべての iOS、macOS、watchOS、visionOS の開発者は、朝起きると Mac のディスク容量が 5 GB 未満残っているという同じ悪夢を繰り返します。ゲームも映画もダウンロードしていません。では、512 GB SSD はどこに行ったのでしょうか? 95% の場合、 原因はXcode DerivedData とビルド キャッシュです。
アクティブなコンパイル中に、Xcode は中間オブジェクト ファイル、プリコンパイル済みヘッダー、インデックス付けシンボル テーブル、およびコンパイラ モジュール キャッシュを生成します。数か月にわたってさまざまなブランチや依存関係を構築しても、これらのフォルダーが自己プルーニングされることはありません。ここでは、50 GB ~ 100 GB の開発者ディスク領域をクリーンかつ安全に再利用する方法を説明します。

Xcode が重いディスク キャッシュを隠す場所
Xcode は、一時的なビルド製品とサポート ファイルを 5 つのプライマリ ディレクトリに分散します。
- DerivedData (
~/Library/Developer/Xcode/DerivedData): 中間オブジェクト ファイル、インデックス データベース、およびビルド製品。 20GB ~ 60GB を消費します。 - iOS DeviceSupport (
~/Library/Developer/Xcode/iOS DeviceSupport): これまでに接続したすべての物理 iPhone または iPad のシンボル。iOS バージョンごとに 5GB ~ 15GB を消費します。 - アーカイブ (
~/Library/Developer/Xcode/Archives): 実稼働 App Store リリースの作成時に保存された古い .xcarchive ビルド。 1 年で 40GB 以上まで拡張可能。 - Swift パッケージ マネージャー キャッシュ (
~/Library/Caches/org.swift.swiftpm): クローン化された git リポジトリと SPM 依存関係用のコンパイルされたチェックアウト バイナリ。 - XCTestDevices (
~/Library/Developer/XCTestDevices): 並列テストの実行中に作成された孤立した一時シミュレーター クローン。
DerivedData を削除しても安全ですか?
はい、そのとおりです。 DerivedData は 100% 再生成可能です。次回プロジェクトを開いてCmd+Bを押すと、Xcode はコードのインデックスを再作成し、必要なオブジェクト ファイルをコンパイルします。唯一のコストは、最初の実行時の初期ビルド時間がわずかに長くなるということです。
ターミナル経由の手動削除と MagicMacCleaner の比較
Xcode を終了し、rm -rf ~/Library/Developer/Xcode/DerivedData/* を実行することで、DerivedData を手動で削除できます。ただし、ターミナルを手動で削除すると、現在作業中のプロジェクトも含め、すべてのプロジェクトが一度に消去されます。
MagicMacCleaner の専用 Xcode Deep Clean モジュールは、各プロジェクトのサブフォルダーの変更日を読み取ることでこの問題を解決します。これにより、アクティブなプロジェクトをそのままの状態で維持しながら、休止中のクライアントやレガシー リポジトリをワンクリックで削除できます。
モバイル開発者のワークフロー: 物理テスト用 iPhone のストレージを解放する
Xcode キャッシュ、シミュレーター ランタイム、ビルド コンテナーをクリアすると Mac 上の重要なスペースが解放されますが、物理的な iOS テスト デバイスはテスト ビルド、クラッシュ アーティファクト、診断画面の記録、QA スクリーンショットで急速に詰まります。物理テスト ハードウェアを無駄のない状態に保つことは、迅速なオンデバイス デバッグと信頼性の高い導入のために不可欠です。
- Clearly Smart Storage Cleaner: ギガバイト規模のバグ レポート画面記録を圧縮し、重複したテスト メディアを検出し、開発用 iPhone と個人用 iPhone 上の乱雑な連絡先を整理します。
- スワイプ フォト クリーナー: スワイプして削除する簡単なジェスチャで、何百もの UI テスト スクリーンショットとデモ バーストをすばやく確認して削除します。
Apple エコシステム開発のヒント: デバイスの最適化をテストする
接続された iOS デバイスのストレージが少ないと、Xcode ワイヤレス展開のタイムアウトや LLDB デバッグの失敗が発生する可能性があります。デバイス上の定期的なメディア クリーンアップにより、不可解なビルド デプロイメント エラーを防ぎます。
