2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Mac が遅いのでスペックを見直そうと思ったら、ディスク掃除で 250GB 空いた話

2
Posted at

はじめに

最近、Macbook Pro の動きがもっさりしていて、画面を見つめて止まってる無駄な待ち時間が気になっていた。たぶん、引っ越してから若干グレードダウンしたネットワーク環境と、南シナ海の覇権争いの影響で、ネットワークが遅いからというのが原因だと思うものの、Apple がポンポン新しいものを出すので、買うならメモリとディスクはどれくらいが良いのか、利用状況から考えてみようと思った。

スペック:

  • MacBook Pro 14-inch, 2023
  • Chip: Apple M2 Max
  • Memory: 32GB
  • macOS: Tahoe 26.3.1
  • Storage: 1TB SSD

利用状況

メモリ

Screenshot 2026-03-12 at 15.09.39.png

フルで使ってそうに見えるけど、macOS は、空きメモリを作らずキャッシュに使うので、ピーク時にもメモリは 6GB くらい余裕あり。

ディスク

Screenshot 2026-03-12 at 14.59.45.png

80GB くらいしか空いてなかった。これはかなりゴミが溜まってそう。Docker とか。

でも、キャッシュで何百 GB も使う??ということで調査。

犯人はお前だ!Adobe!! (100GB)

$ du -h -d 1 /Applications | sort -hr
107G	/Applications
6.4G	/Applications/Adobe Premiere Pro 2026
6.1G	/Applications/Adobe Premiere Pro 2024
6.1G	/Applications/Adobe Premiere Pro 2023
6.0G	/Applications/Adobe Photoshop 2026
5.8G	/Applications/Adobe Photoshop 2025
5.2G	/Applications/Adobe Media Encoder 2024
5.1G	/Applications/Adobe Photoshop 2024
5.0G	/Applications/Xcode.app
5.0G	/Applications/Adobe Media Encoder 2026
5.0G	/Applications/Adobe Media Encoder 2023
4.8G	/Applications/Adobe Premiere Pro 2025
3.9G	/Applications/Adobe Bridge 2026
3.7G	/Applications/iMovie.app
3.6G	/Applications/Adobe Media Encoder 2025
3.3G	/Applications/Adobe Bridge 2024
3.1G	/Applications/Adobe Bridge 2025
2.9G	/Applications/Adobe Illustrator 2026
2.7G	/Applications/Adobe Illustrator 2025
...

Adobe CC の旧バージョンがいっぱい!!
というわけで、最新バージョン以外をアンインストール。不要なアプリケーション本体だけで、60GB くらいあったけど、なんやかんや 100GB 程度消えた。設定は常にデフォルトなのだけど、そのあたり?

今後、旧バージョンが残らないように、 Remove oloder versions のチェックを入れた。

Screenshot 2026-03-13 at 09.58.05.png

これで、Adobe の無駄なディスク使用はなくなるかな。
Adobe かよ!という感じだが…、普段チェックしてなかったので、盲点でした笑

キャッシュを削除!削除! (150GB)

まぁあとは Docker, Xcode あたりのキャッシュなどだろうと普通に削除していった。

まとめ

項目 何? 削減
Xcode DeviceSupport 実機デバッグ 45GB
Xcode DerivedData ビルド 10GB
Yarn cache キャッシュ 30GB
Docker コンテナ等 25GB

結局削除したもので大きかったのは、こんな感じ。
Adobe やその他諸々と合わせて全部で 250GB くらい削除できた。

Xcode

$ rm -rf ~/Library/Developer/Xcode/DerivedData
$ rm -rf ~/Library/Developer/Xcode/DocumentationCache
$ rm -rf ~/Library/Developer/Xcode/iOS\ DeviceSupport/*

Yarn

$ yarn cache clean

Docker

$ docker builder prune -af
$ docker container prune -f
$ docker image prune -af

ボリュームは必要なものがあるので、消さないでおいた。

その他

# brew
$ breaw update
$ brew cleanup

# pip
$ pip3 cache purge

# node family
$ npm cache clean --force
$ pnpm store prune

再発防止

今回、削除したものは、常識的に使っていれば溜まってしまうもので、その掃除をサボっていたのでディスクを圧迫していた。毎度調べて消すのも面倒なので、お掃除スクリプトを作成して実行することにする。

スクリプト(パスは適宜書き換え)

削除系スクリプトなので、コピペで実行せず、中身を確認してお使いください。

~/tools/diskCleaner/dev-mac-cleanup.zsh
#!/bin/zsh
set -euo pipefail

# dev-mac-cleanup.zsh
# Safe-ish cleanup script for developer Macs
# Default: dry run
# Use --apply to actually delete
# Use --with-adobe to include Adobe media cache cleanup

APPLY=0
WITH_ADOBE=0

for arg in "$@"; do
  case "$arg" in
    --apply)
      APPLY=1
      ;;
    --with-adobe)
      WITH_ADOBE=1
      ;;
    -h|--help)
      cat <<'EOF'
Usage:
  zsh dev-mac-cleanup.zsh           # dry run
  zsh dev-mac-cleanup.zsh --apply   # actually delete safe targets
  zsh dev-mac-cleanup.zsh --apply --with-adobe

What it cleans:
  - Xcode DerivedData
  - Xcode DocumentationCache
  - Xcode iOS DeviceSupport
  - Docker builder cache
  - Docker unused images
  - Docker stopped containers
  - Yarn cache
  - Optional: Adobe Media Cache

What it does NOT clean:
  - Docker volumes
  - OrbStack VM data
  - User documents
  - node_modules in projects
EOF
      exit 0
      ;;
    *)
      echo "Unknown option: $arg" >&2
      exit 1
      ;;
  esac
done

log() {
  printf '%s\n' "$*"
}

run_cmd() {
  if [[ "$APPLY" -eq 1 ]]; then
    log "[RUN] $*"
    eval "$@"
  else
    log "[DRY] $*"
  fi
}

human_size() {
  local p="$1"
  if [[ -e "$p" ]]; then
    du -sh "$p" 2>/dev/null | awk '{print $1}'
  else
    echo "0B"
  fi
}

section() {
  echo
  echo "=================================================="
  echo "$1"
  echo "=================================================="
}

total_before_report() {
  section "Current major disk usage"
  df -h /
  echo
  du -sh \
    "$HOME/Library/Developer/Xcode" \
    "$HOME/.lmstudio" \
    "$HOME/Library/Application Support/Adobe" \
    "$HOME/Library/Containers/com.docker.docker" \
    "$HOME/Library/Group Containers/HUAQ24HBR6.dev.orbstack" \
    2>/dev/null || true
}

clean_xcode() {
  section "Xcode cleanup"

  local derived="$HOME/Library/Developer/Xcode/DerivedData"
  local docs="$HOME/Library/Developer/Xcode/DocumentationCache"
  local support="$HOME/Library/Developer/Xcode/iOS DeviceSupport"

  log "DerivedData:        $(human_size "$derived")"
  log "DocumentationCache: $(human_size "$docs")"
  log "iOS DeviceSupport:  $(human_size "$support")"

  [[ -d "$derived" ]] && run_cmd "rm -rf \"$derived\""
  [[ -d "$docs" ]] && run_cmd "rm -rf \"$docs\""
  [[ -d "$support" ]] && run_cmd "rm -rf \"$support\"/*"
}

clean_docker() {
  section "Docker cleanup"

  if ! command -v docker >/dev/null 2>&1; then
    log "docker not found, skipping."
    return
  fi

  docker system df || true
  echo

  run_cmd "docker builder prune -af"
  run_cmd "docker container prune -f"
  run_cmd "docker image prune -af"

  log "Skipping Docker volumes for safety."
}

clean_yarn() {
  section "Yarn cache cleanup"

  local yarn_cache="$HOME/Library/Caches/Yarn"

  log "Yarn cache: $(human_size "$yarn_cache")"

  if command -v yarn >/dev/null 2>&1; then
    run_cmd "yarn cache clean"
  else
    log "yarn not installed, skipping."
  fi
}

clean_adobe() {
  section "Adobe Media Cache cleanup"

  local media_cache="$HOME/Library/Application Support/Adobe/Common/Media Cache"
  local media_cache_files="$HOME/Library/Application Support/Adobe/Common/Media Cache Files"

  log "Media Cache:       $(human_size "$media_cache")"
  log "Media Cache Files: $(human_size "$media_cache_files")"

  [[ -d "$media_cache" ]] && run_cmd "rm -rf \"$media_cache\""
  [[ -d "$media_cache_files" ]] && run_cmd "rm -rf \"$media_cache_files\""
}

post_report() {
  section "After cleanup"
  df -h /
  echo

  du -sh \
    "$HOME/Library/Developer/Xcode" \
    "$HOME/.lmstudio" \
    "$HOME/Library/Application Support/Adobe" \
    "$HOME/Library/Containers/com.docker.docker" \
    "$HOME/Library/Group Containers/HUAQ24HBR6.dev.orbstack" \
    2>/dev/null || true
}

main() {
  if [[ "$APPLY" -eq 1 ]]; then
    log "Mode: APPLY"
  else
    log "Mode: DRY RUN"
  fi

  total_before_report
  clean_xcode
  clean_docker
  clean_yarn

  if [[ "$WITH_ADOBE" -eq 1 ]]; then
    clean_adobe
  else
    section "Adobe Media Cache cleanup"
    log "Skipped. Use --with-adobe to include it."
  fi

  post_report

  echo
  log "Done."
}

main

launchd 設定

定期実行は、launchd でやる。
以下ファイルを作成

~/Library/LaunchAgents/dev.cleanup.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">
<dict>

    <key>Label</key>
    <string>dev.cleanup</string>

    <key>ProgramArguments</key>
    <array>
        <string>/bin/zsh</string>
        <string>/Users/kura/tools/diskCleaner/dev-mac-cleanup.zsh</string>
        <string>--apply</string>
    </array>

    <key>RunAtLoad</key>
    <true/>

    <key>StartCalendarInterval</key>
    <dict>
        <key>Day</key>
        <integer>1</integer>
        <key>Hour</key>
        <integer>11</integer>
        <key>Minute</key>
        <integer>0</integer>
    </dict>

    <key>StandardOutPath</key>
    <string>/tmp/dev-cleanup.log</string>

    <key>StandardErrorPath</key>
    <string>/tmp/dev-cleanup.err</string>

</dict>
</plist>

こういうのは、深夜帯にやっておくのが良いので、毎月1日午前3時とかに設定したいところだが、sleep 状態だと動かないので、毎月1日午前11時(たぶん作業してそうな時間)に実行されるようにした。プラス、RunAtLoad で再起動時にも実行するようにした。

多少緩いが、いったんこれでよしとする。

有効化

$ launchctl load ~/Library/LaunchAgents/dev.cleanup.plist

停止したい場合は、unload

手動実行

$ launchctl start dev.cleanup

ログ確認

/tmp/dev-cleanup.log

/tmp ディレクトリ内は、再起動で消える。消したくなければ別の場所へ。

デベロッパーに必要な Mac のスペック(2026)

ディスクスペースはかなりスッキリした。ちょっとサクサク動いている気がする。

Screenshot 2026-03-13 at 12.37.16.png

掃除しないのは怠惰として、3年使ってこれくらいの使用量だし、映像編集などするなら話は別だが、ディスクは 1TB あれば充分そう。512GB では明らかに足らない。余裕をみるなら 2TB。

メモリは、32GB で充分かな。余裕をみるなら 64GB。

Chip に関しては、正直よく分からない。いま最新は M5 で、私のは M2 Max とかなり遅そうな気もするが、現状の使用では、おっそいなーとは思わない。なんなら、2013年の MacPro メモリ超盛りでも、Intel Mac は流石に…と思うけど、実際には超イライラしたりはしない。

PC 減価償却期間が 4 年なので、Chip 性能は置いといて、4~5年で買い替え、今なら 1TB・32GB くらいが良さそう。メモリをめっちゃ使う新しい何かが日常的に必要になった場合(LLM ローカル実行とか)は、メモリ容量を考え直す感じで。

というわけで、私は後2年くらいしたら良いのに買い替える。いまじゃない。
そして、ネットワーク環境はアップグレードする。

スペック目処

項目 目安
Storage 1TB(最低)/ 2TB(余裕)
Memory 32GB(標準) / 64GB(余裕)
Chip Apple Silicon なら体感差は大きくなさそう

買い替えは、4〜5年目処。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?