会社貸与のmacを使っていて、そこまで色々なアプリケーションを入れたり、重たい画像や動画を保存していないのにすぐにストレージがパンパンになってしまう…
原因を見たら、ストレージのうち、システムデータが100GB以上を喰っていて、なんとかしたい、そんな状況に遭遇したので、解決策をまとめました。
一番スッキリさせるべき場所~/Library/Caches
よく「キャッシュクリアをしたらいいよ」と聞きますが、macの場合はユーザー単位のキャッシュは~/Library/Caches
にあります。
これが一番効きました。
rm -rf ~/Library/Caches/*
ここにはChromeなどのブラウザから、Adobe、さらにはHomebrewのキャッシュ(~/Library/Caches/Homebrew)、Pipのキャッシュ(~/Library/Caches/pip)も存在します。
私の場合、このHomebrewのキャッシュが非常に溜まっていました。ここには過去にダウンロードしたアーカイブ(.tar.gz, .bottle.tar.gz)や古いバージョンのパッケージキャッシュが大量に溜まっていて、Homebrewをよく使う場合はどんどん溜まってしまいます。
安全に整理するならbrew --cache
というコマンドも存在しますが、経験上、一括で問題なかったです。
同じ理由で、pipのキャッシュも大量に溜まっていました。仕組みとしてはpip install
を行う際にキャッシュに同じバージョンのファイルがあるかを確認し、あれば再利用するので、インストールや仮想環境を作り直すたびにどんどんキャッシュが増えていく仕組みなので、溜まってしまうようです。
この行為によるデメリットは、各アプリケーションを立ち上げる際にキャッシュファイルを作るため、重くなったり動作が不安定になったりします。ひとまず作業後に再起動すれば問題ないです。
/Library/Caches
の中のXcodeとAdobe系
システム全体のキャッシュは/Library/Caches
にあります。
ここはmacOS 全体やシステムレベルで動くアプリが使うキャッシュ置き場です。
ここでは丸ごと削除は控えましょう。OSがかなり不安定になって落ちたりします。
しかし、この中にXcode, Adobe系アプリのキャッシュが存在します。
一回入れてみて、ちょっと遊んで今は使っていないなら、躊躇なく削除候補リストに入るのがこのXcode, Adobe系アプリのキャッシュです。
特にXcodeは巨大なキャッシュを作るので、数十GB単位で溜まります。
ただ、これを消してしまうとフルビルドが走るようになって遅くなるので一長一短ですが、定期的な大掃除の際には消しておいたら良いと思います。
Adobe系アプリもここにキャッシュを作ります。XcodeもAdobe系も、~/Library/Caches
と/Library/Caches
の両方にキャッシュを作り、定期的な大掃除の際には消しておいたらいいと思います。
他には以下のようなキャッシュが存在します。注意深くチェックして消していくことをお勧めします。
- Microsoft Office: com.microsoft.* としてキャッシュを作成
- ブラウザ系: SafariやChromeの一部キャッシュ
- セキュリティ系・アンチウイルス系: Norton, ESET, Sophos
- ゲーム系: Steam, Epic Games Launcherのダウンロードやシェーダーキャッシュ
- Docker Desktop: アップデート用インストーラの一時キャッシュ
yarnのキャッシュ
yarnはv1とv2でキャッシュ置き場が異なります。
v1の時は前述の~/Library/Caches
にありますが、v2は別の場所に作ります。
yarn -v
でお使いのバージョンを調べ、もしv2だったらプロジェクトごとに管理されるので、そこを消しましょう。
方法としては現在開発しているプロジェクトのカレントディレクトリに行き、プロジェクト/.yarn/cache/
を探して消してください。
pyenv系
生成AIの関係で、仮想環境を作るときにpyenvを使っていたらこちらも実施してみてください。
ビルドキャッシュ
ここには、過去にダウンロードした Python のソース tarball が溜まります。
rm -rf ~/.pyenv/cache/*
不要になったバージョンの削除
~/.pyenv/versions/ にインストール済みの Python バージョンが格納されています。ここで、使っていないものを消したいです。
以下で調べてください。lsで見てみるのもOKです。
pyenv versions
削除は以下のコマンドで消せます。
pyenv uninstall <version>
話がそれますが、こうやって削除する際に楽なので、pyenv virtualenv <python_version> <env_name>
でカスタム名で作っておくということも大事だと実感しました。