はじめに
ある日、Macのストレージがいっぱいになってきたのでシステム設定のストレージを確認したところ、システムデータが242GB という異常な数値になっていました。
![ストレージ概要]
| カテゴリ | サイズ |
|---|---|
| システムデータ | 242.59 GB |
| 書類 | 88.01 GB |
| アプリケーション | 59.51 GB |
| macOS | 42.52 GB |
| iOS ファイル | 27.57 GB |
| デベロッパ | 16.38 GB |
| 写真 | 8.13 GB |
使用環境はこんな感じです:
- Flutter / iOS アプリ開発(Xcode使用)
- Docker Desktop
- Cursor / VSCode
- Claude Desktop
- Anaconda (Python)
- nodebrew (Node.js)
「システムデータってなんでこんなに大きいの?」と思いながら、ターミナルで調査を開始しました。
Step 1: 全体像を把握する
まず実際の空き容量を確認します。
df -h /
Filesystem Size Used Avail Capacity
/dev/disk3s1s1 460Gi 12Gi 114Gi 10%
次に、どのフォルダが大きいかを調べます。
sudo du -sh /var/folders/* ~/Library/Developer ~/Library/Caches 2>/dev/null | sort -rh | head -20
41G /Users/nzw/Library/Developer
5.1G /var/folders/zb
2.9G /Users/nzw/Library/Caches
~/Library/Developer が 41GB と圧倒的に大きい。さらに掘り下げます。
du -sh ~/Library/Developer/*/
25G /Users/nzw/Library/Developer/CoreSimulator/
15G /Users/nzw/Library/Developer/Xcode/
Step 2: Xcode 関連を整理する(〜15GB)
DerivedData(ビルドキャッシュ)6.9GB
du -sh ~/Library/Developer/Xcode/*/
6.9G /Users/nzw/Library/Developer/Xcode/DerivedData/
5.9G /Users/nzw/Library/Developer/Xcode/iOS DeviceSupport/
2.0G /Users/nzw/Library/Developer/Xcode/UserData/
DerivedDataはビルドキャッシュなので全削除OK。次回ビルド時に自動再生成されます。
rm -rf ~/Library/Developer/Xcode/DerivedData/*
iOS DeviceSupport(デバッグシンボル)5.9GB
実機接続時にダウンロードされるデバッグシンボルです。
現在使っているiOSバージョン以外は削除できます。
ls ~/Library/Developer/Xcode/iOS\ DeviceSupport/
# 古いバージョンのフォルダを確認して削除
今回は iPhone15,5 26.4.1 (23E254) のみだったので削除不要でした。
Step 3: iOS シミュレータを整理する(〜25GB)
現状確認
xcrun simctl list devices
確認したところ、iOS 17.2 / 17.5 / 26.4 の3世代 分のシミュレータが全部インストールされていました(watchOSも10.2 / 10.5 / 26.4の3世代)。
これだけで25GBを占めていました。
不要なシミュレータを削除
古いiOS 17.2のシミュレータを削除します(17.5と26.4があれば不要):
# 未使用シミュレータをまとめて削除
xcrun simctl delete unavailable
# または個別にUDIDを指定して削除
xcrun simctl delete <UDID>
注意:
xcrun simctl delete unavailableはランタイム(iOS本体)がアンインストールされているデバイスのみ対象です。ランタイムごと削除するには Xcode → Settings → Platforms から行います。
Step 4: Docker VM が最大の犯人だった(60GB)
Docker CLIがハングする
docker system df
# → 数分経っても返ってこない...
Docker Desktop が起動していないか、デーモンが応答していない状態です。CLIはデーモンと通信できずタイムアウト待ちになっています。
Docker VMの実体ファイルを直接確認
du -sh ~/Library/Containers/com.docker.docker/Data/vms/
# 55G
ls -lh ~/Library/Containers/com.docker.docker/Data/vms/0/data/
# -rw-r--r-- 1 nzw staff 60G Docker.raw
Docker.raw が 60GB になっていました。これが「システムデータ」として計上されていた最大の原因です。
Docker.rawはDockerのVMディスクイメージで、使い続けると肥大化していきます。
対処法
Docker Desktopを再起動して使う場合:
- Docker Desktop を再起動
-
docker system prune -a --volumesで不要なイメージ・コンテナを削除 - Docker Desktop → Settings → Resources → "Reclaim disk space" でDocker.rawを縮小
今後もDockerを使いたいが一旦クリーンにしたい場合:
# アンインストール
open /Applications/Docker.app/Contents/MacOS/uninstall
# 再インストール(後で使いたくなったとき)
brew install --cask docker
アンインストールで60GBが丸ごと解放されます。
Step 5: Application Support の意外な伏兵(〜22GB)
du -sh ~/Library/Application\ Support/*/ | sort -rh | head -10
13G /Users/nzw/Library/Application Support/Claude/
11G /Users/nzw/Library/Application Support/Cursor/
4.8G /Users/nzw/Library/Application Support/Google/
2.6G /Users/nzw/Library/Application Support/Code/
Claude Desktop の vm_bundles(12GB)
du -sh ~/Library/Application\ Support/Claude/*/
12G /Users/nzw/Library/Application Support/Claude/vm_bundles/
vm_bundles は Claude Code のコード実行用VMイメージです。
削除しても問題ありません(次回使用時に自動再ダウンロードされます)。
rm -rf ~/Library/Application\ Support/Claude/vm_bundles/
Cursor の state.vscdb(9.2GB)
du -sh ~/Library/Application\ Support/Cursor/User/*/
# 9.2G /Users/nzw/Library/Application Support/Cursor/User/globalStorage/
ls -lh ~/Library/Application\ Support/Cursor/User/globalStorage/
-rw-r--r-- 1 nzw staff 4.6G state.vscdb
-rw-r--r-- 1 nzw staff 4.6G state.vscdb.backup
VSCode/CursorはSQLiteデータベース(state.vscdb)に拡張機能のデータやAIチャット履歴を保存します。使い続けると肥大化します。
- バックアップだけ削除(4.6GB削減、安全)
rm ~/Library/Application\ Support/Cursor/User/globalStorage/state.vscdb.backup
- 両方削除(9.2GB削減、チャット履歴等リセット)
rm ~/Library/Application\ Support/Cursor/User/globalStorage/state.vscdb
rm ~/Library/Application\ Support/Cursor/User/globalStorage/state.vscdb.backup
次回Cursor起動時に空のDBが自動作成されます。コードやプロジェクトには影響なし。
Cursor / VSCode のキャッシュ
rm -rf ~/Library/Application\ Support/Cursor/Cache/
rm -rf ~/Library/Application\ Support/Cursor/CachedData/
rm -rf ~/Library/Application\ Support/Cursor/logs/
rm -rf ~/Library/Application\ Support/Cursor/CachedExtensionVSIXs/
rm -rf ~/Library/Application\ Support/Code/Cache/
rm -rf ~/Library/Application\ Support/Code/CachedData/
Step 6: その他の細かい削除(〜10GB)
Anaconda / conda(5.1GB)
# 不要な仮想環境を削除
conda env list
conda remove --name <env_name> --all
# パッケージキャッシュを削除
conda clean --all
npm キャッシュ(2.5GB)
npm cache clean --force
ログファイル(2.1GB)
rm -rf ~/Library/Logs/*
nodebrew の古いNode.js
nodebrew list
nodebrew uninstall v14.16.0 # 古いバージョンを削除
pip キャッシュ
pip cache purge
Googleキャッシュ(Chromeを閉じてから)
rm -rf ~/Library/Caches/Google/
チートシート:削除コマンドまとめ
# ===== Xcode =====
# ビルドキャッシュ(安全・全削除OK)
rm -rf ~/Library/Developer/Xcode/DerivedData/*
# 未使用シミュレータ
xcrun simctl delete unavailable
# ===== Docker =====
# 不要なイメージ・コンテナ・ボリュームを削除(Docker起動中に実行)
docker system prune -a --volumes
# Docker Desktop → Settings → Resources → "Reclaim disk space"
# ===== Application Support =====
# Claude Code VM(自動再ダウンロード可能)
rm -rf ~/Library/Application\ Support/Claude/vm_bundles/
# Cursor データベースバックアップ
rm ~/Library/Application\ Support/Cursor/User/globalStorage/state.vscdb.backup
# Cursor / VSCode キャッシュ
rm -rf ~/Library/Application\ Support/Cursor/Cache/
rm -rf ~/Library/Application\ Support/Cursor/CachedData/
rm -rf ~/Library/Application\ Support/Cursor/logs/
rm -rf ~/Library/Application\ Support/Code/Cache/
rm -rf ~/Library/Application\ Support/Code/CachedData/
# ===== パッケージマネージャー =====
npm cache clean --force
pip cache purge
conda clean --all
# ===== ログ・キャッシュ =====
rm -rf ~/Library/Logs/*
rm -rf ~/Library/Caches/Google/ # Chrome閉じてから
# ===== nodebrew =====
nodebrew list
nodebrew uninstall v14.16.0 # 使っていないバージョンを削除
結果
| 項目 | 削減量 |
|---|---|
| Docker VM | ~60 GB |
| Claude vm_bundles | 12 GB |
| Cursor state.vscdb x2 | 9.2 GB |
| Xcode DerivedData | 6.9 GB |
| Xcode iOS DeviceSupport | 5.9 GB |
| conda envs + cache | ~3 GB |
| npm / pip / Logs / Caches | ~7 GB |
| nodebrew 古いバージョン | ~1 GB |
| 合計 | 約100GB+ |
最終的に df -h / で 114GB の空き容量 を確認できました。
df -h /
# Filesystem Size Used Avail Capacity
# /dev/disk3s1s1 460Gi 12Gi 114Gi 10%
注意: macOS のシステム設定 → ストレージの表示は即座に更新されません。再起動後に正確な数値が反映されます。
まとめと教訓
今回の調査で、システムデータが肥大化する主な原因は以下でした:
- Docker.raw(60GB)— 使い続けると勝手に肥大化する
- Claude vm_bundles(12GB)— Claude Codeのコード実行VM
- Cursor state.vscdb(9.2GB)— AIチャット履歴が蓄積される
- iOSシミュレータ(25GB)— 複数世代のランタイムが残っている
- Xcode DerivedData(6.9GB)— ビルドのたびに蓄積
定期メンテナンスの推奨
特にDockerとXcodeを使っている開発者は、数ヶ月に一度クリーンアップするのがおすすめです。
# まず空き容量を確認
df -h /
# 大きいフォルダを特定
du -sh ~/Library/Developer ~/Library/Application\ Support ~/Library/Containers ~/Library/Caches | sort -rh
これだけ覚えておけば、次回どこを調べればいいか迷わずに済みます。