0. はじめに
赤石です。
業務でのプライベートでもMacを利用しているのですが、3年間以上継続利用しているMacのディスクがパンパンになり、Teamsの画面共有すらまともにできないことになってしまいました。
そこで、 AIさんのアドバイスをうけながら、時間をかけてMacの大掃除をしてみました。
その結果、買いたてマシンのようにサクサク動くようになりました。
皆様の参考になるところもあると思うので、その方法を共有します。
before/after
うかつなことに、チューニング着手時点の利用状況スナップショットを撮ることを失念してしまったのですが、空きディスクは常に5GBくらいしかなく、会社のツールで毎日アラートが出ている状況でした。
チューニング後の状況は下記のような形で、40GB以上の空きがあります。
Tahoe 26.4へのアップデートも余裕で行うことができました。
注目すべきはこの図の利用区分のうち、「システムデータ」となっている部分です。
「アプリケーション」「書類」「メール」の区分は、利用者にわかりやすいのですが、「システムデータ」はこのような対応付けがわかりにくく、何が原因でどうしたら減らせるのか、簡単に判断できません。
以下の手順は、このわかりにくい「システムデータ」を減らすための方法と考えてください。
1. 調査コマンド
次のようなコマンドで現状調査を進めます。
(1) Time Machine・バックアップ・ゴミ箱の確認
Macのストレージを圧迫する原因として見落としがちなのが、Time Machineのローカルスナップショット、iOSデバイスのバックアップ、そしてゴミ箱の未削除ファイルです。特にTime Machineのローカルスナップショットは数十GBに膨らむケースもあり、システムデータの大半を占めることがあります。
以下の3つのコマンドでそれぞれの状況を確認します。
# Time Machineのローカルスナップショット一覧を表示
tmutil listlocalsnapshots /
# iOSデバイスのバックアップサイズを確認
du -sh ~/Library/Application\ Support/MobileSync/Backup/ 2>/dev/null
# ゴミ箱のサイズを確認
du -sh ~/.Trash/ 2>/dev/null
tmutil listlocalsnapshots / を実行してスナップショットが一覧表示された場合は、tmutil deletelocalsnapshots / で削除できます。iOSバックアップやゴミ箱も数GBあれば即削除の対象です。
(2) ユーザーキャッシュの確認
アプリが一時的に保存するキャッシュファイルは、使い続けるほど蓄積されていきます。特にブラウザや開発ツールのキャッシュは気づかないうちに数GBに膨らむことがあります。
以下のコマンドで、ユーザーキャッシュフォルダ内のアプリごとのサイズを大きい順に上位20件表示します。
# ユーザーキャッシュの一覧をサイズ順に表示
du -sh ~/Library/Caches/* 2>/dev/null | sort -rh | head -20
結果を見てGB单位のフォルダがあれば削除の候補です。キャッシュはアプリが自動的に再生成するため、削除してもアプリの動作に支障はありません。ただし削除前に対象のアプリを終了しておくことを推奨します。
なお 2>/dev/null はエラーメッセージを非表示にするオプション、sort -rh はサイズの大きい順に並び替え、head -20 は上位20件のみ表示するという意味です。
(3) システムキャッシュの確認
先ほどの(2)はログインユーザーのキャッシュでしたが、macOSにはシステム全体で共有されるキャッシュも別途存在します。こちらはシステム領域にあるため、確認には管理者権限が必要です。
以下のコマンドで、システムキャッシュフォルダ内のサイズを大きい順に上位10件表示します。
# システムキャッシュの一覧をサイズ順に表示(管理者権限が必要)
sudo du -sh /Library/Caches/* 2>/dev/null | sort -rh | head -10
sudo を付けることで管理者権限で実行でき、実行時にはログインパスワードの入力が求められます。
結果の中で特に注意したいのが com.apple.iconservices.store です。Finderで表示するアイコンのキャッシュで、4年間使用したMacでは5GB以上に膨らんでいるケースもあります。
削除後は再起動時にアイコンが一時的に正しく表示されないことがありますが、自動で再構築されるため心配は不要です。
(4) ログの確認
macOSやアプリは動作記録をログファイルとして保存し続けます。
通常は数十MB程度ですが、エラーが頻発していたり長期間放置していたりすると数百MBに達することもあります。
以下のコマンドで、ユーザーログとシステムログそれぞれのサイズを確認します。
# ユーザーログとシステムログのサイズを確認
du -sh ~/Library/Logs/ /Library/Logs/ 2>/dev/null
つのコマンドで2つのフォルダを同時に確認できるのがポイントです。
- ~/Library/Logs/ :ログインユーザーのアプリが出力するログ
- /Library/Logs/ :システム全体のログ
合計が数百MB以上あれば削除の対象です。
ログファイルはシステムの動作に影響しないため安全に削除できますが、直近のトラブルを調査中の場合は削除前に内容を確認しておくと安心です。
削除後はアプリやmacOSが自動的に新しいログファイルを生成します。
(5) Dockerの確認
開発者のMacでストレージを大量に消費する原因として特に多いのがDockerです。コンテナやイメージを使い捨て感覚で運用していると、不要なデータが積み重なり数GB〜十数GBに達することがあります。
以下のコマンドで、Dockerが使用しているディスク容量を種類別に確認します。
Dockerのディスク使用状況を確認
docker system df 2>/dev/null
結果は以下の4種類に分けて表示されます。
| 種類 | 内容 |
|---|---|
| Images | ダウンロード済みのDockerイメージ |
| Containers | 作成済みのコンテナ |
| Local Volumes | データの永続化に使うボリューム |
| Build Cache | ビルド時に生成されるキャッシュ |
注目すべきは RECLAIMABLE(回収可能)の列です。現在使用していない削除可能なデータのサイズが表示されます。2>/dev/null はDockerが起動していない場合のエラーメッセージを非表示にするオプションで、Dockerをインストールしていない環境では何も表示されません。
不要なデータをまとめて削除したい場合は以下のコマンドを使います。当面Dockerを使わない場合は --volumes を追加することでボリュームも含めて完全に削除できます。
# 未使用データの削除(確認プロンプトあり)
docker system prune -a
# ボリュームも含めて完全削除
docker system prune -a --volumes
(6) node_modulesの確認
JavaScriptやNode.jsを使った開発をしている場合、プロジェクトごとに生成される node_modules フォルダが知らないうちに大量のディスクを消費していることがあります。1つのプロジェクトで数百MB、複数プロジェクトが溜まると数GB〜数十GBに達するケースもあります。
以下のコマンドで、ホームディレクトリ以下の node_modules フォルダをサイズの大きい順に上位10件表示します。
# node_modulesフォルダをサイズ順に表示
find ~ -name "node_modules" -maxdepth 5 -type d -exec du -sh {} \; 2>/dev/null | sort -rh | head -10
各オプションの意味は以下の通りです。
| オプション | 意味 |
|---|---|
-name "node_modules" |
node_modulesという名前のフォルダを検索 |
-maxdepth 5 |
ホームディレクトリから5階層までを対象にする |
-type d |
フォルダのみを対象にする |
-exec du -sh {} \; |
見つかったフォルダのサイズを表示する |
もう使っていないプロジェクトの node_modules は削除しても問題ありません。再度必要になった場合は npm install で再生成できます。
(7) ホームディレクトリの確認
個別のキャッシュを調べる前に、まずホームディレクトリ全体を俯瞰することで、どのフォルダが容量を占めているかを素早く把握できます。原因の当たりをつけるための最初のステップとして有効です。
以下のコマンドで、ホームディレクトリ直下のフォルダをサイズの大きい順に上位10件表示します。
# ホームディレクトリの各フォルダをサイズ順に表示
du -sh ~/* 2>/dev/null | sort -rh | head -10
結果を見てGB単位のフォルダがあれば、そのフォルダをさらに深掘りしていきます。特に Library フォルダが大きい場合は、次の(8)以降の手順で詳細を確認します。Documents や Downloads が大きい場合は、不要なファイルが溜まっていないか手動で確認してみましょう。
(8) Libraryフォルダの確認
~/Library はmacOSがアプリのデータやキャッシュを保存する場所で、長期間使用したMacでは数十GBに膨らむことがあります。Finderからは通常隠れていますが、ターミナルからサイズを確認することができます。
以下のコマンドで、Libraryフォルダ直下のフォルダをサイズの大きい順に上位15件表示します。
# Libraryフォルダの各フォルダをサイズ順に表示
du -sh ~/Library/*/ 2>/dev/null | sort -rh | head -15
特に注目すべきフォルダは以下の通りです。
| フォルダ | 内容 |
|---|---|
Application Support |
アプリのデータやキャッシュ |
Containers |
サンドボックスアプリのデータ |
Group Containers |
複数アプリで共有されるデータ |
Mail |
メールの本文や添付ファイル |
Caches |
各種キャッシュ((2)で確認済み) |
GB単位のフォルダがあれば、次の手順でさらに深掘りします。
(9) Application Supportの確認
Application Support はアプリが設定ファイルやキャッシュ、ダウンロードデータなどを保存する場所です。長期間使い続けたアプリや、すでにアンインストールしたアプリのデータが残っていることもあります。
以下のコマンドで、Application Supportフォルダ内をサイズの大きい順に上位15件表示します。
# Application Supportの各フォルダをサイズ順に表示
du -sh ~/Library/Application\ Support/*/ 2>/dev/null | sort -rh | head -15
GB単位のフォルダが見つかった場合、以下の観点で削除可否を判断します。
- キャッシュフォルダ(CacheやCode Cacheなど):削除可能。自動再生成される
- アンインストール済みアプリのフォルダ:削除可能。不要なデータの残骸
- 現在使用中のアプリのデータフォルダ本体:削除不可。設定やデータが消える
(10) Claudeデータの詳細確認
ClaudeのデスクトップアプリはElectronベースで動作しており、ブラウザと同様にキャッシュやGPUキャッシュなどを蓄積します。また、Claude Codeを使用している場合は仮想マシン環境(vm_bundles)が追加で数GBを占めることがあります。
以下のコマンドで、Claudeのデータフォルダの内訳を確認します。
# Claudeデータフォルダの内訳をサイズ順に表示
du -sh ~/Library/Application\ Support/Claude/*/ 2>/dev/null | sort -rh
各フォルダの削除可否は以下の通りです。
| フォルダ | 削除可否 | 備考 |
|---|---|---|
Cache |
削除可 | 自動再生成される |
Code Cache |
削除可 | 自動再生成される |
GPUCache |
削除可 | 自動再生成される |
DawnWebGPUCache |
削除可 | 自動再生成される |
DawnGraphiteCache |
削除可 | 自動再生成される |
vm_bundles |
任意 | Claude Code使用時に再構築が必要。初回起動が数分遅くなる |
Local Storage |
残す | 設定やセッション情報が含まれる |
削除前にはClaudeアプリを完全に終了してから実行してください。
(11) ContainersとGroup Containersの確認
Containers はサンドボックス環境で動作するアプリ(Microsoft OfficeやTeamsなど)がデータを保存する場所です。Group Containers は複数のアプリが共有するデータを保存する場所で、主にOffice suite全体で共有されるデータが格納されます。
以下のコマンドで、それぞれのフォルダをサイズの大きい順に上位15件表示します。
# Containersの各フォルダをサイズ順に表示
du -sh ~/Library/Containers/*/ 2>/dev/null | sort -rh | head -15
# Group Containersの各フォルダをサイズ順に表示
du -sh ~/Library/Group\ Containers/*/ 2>/dev/null | sort -rh | head -15
これらのフォルダはアプリのデータ本体が含まれることが多く、基本的には削除しないことを推奨します。ただし、以下のケースは削除できます。
| フォルダ | 削除可否 | 備考 |
|---|---|---|
アプリ内の Cache や Caches サブフォルダ |
削除可 | 自動再生成される |
| アンインストール済みアプリのフォルダ | 削除可 | 不要なデータの残骸 |
| アプリのデータフォルダ本体 | 残す | 削除するとデータが失われる |
例えばTeamsのキャッシュであれば、フォルダ本体ではなく内部の Cache や Caches フォルダのみを削除することで、データを保持しつつ容量を回収できます。
rm -rf ~/Library/Containers/com.microsoft.teams2/Data/Library/Caches
2. 削除コマンド
step 1で削除すべき対象が判明した場合、以下の手順に従って削除を実施します。
以下の手順では、個々のタスクで注意すべき点を解説していますが、削除実施の際はかならず他の手段でその妥当性を確認してからにします。
万一、トラブルが発生した場合、リスクを追うのは削除コマンドを実施した本人である点にご注意ください。
(1) Googleキャッシュの削除
ChromeはWebページの表示を高速化するために、画像やスクリプトをキャッシュとして保存します。
長期間使用すると ~/Library/Caches/Google と Application Support 内のキャッシュを合わせて数GB に達することがあります。
rm -rf ~/Library/Caches/Google
rm -rf ~/Library/Application\ Support/Google/Chrome/Default/Cache
rm -rf ~/Library/Application\ Support/Google/Chrome/Default/Code\ Cache
削除前にChromeを完全に終了してから実行してください。削除後はChromeが自動的にキャッシュを再生成するため、初回のページ読み込みがやや遅くなりますが、通常の動作には影響しません。ブックマークやパスワード、拡張機能などのデータは消えません。
(補足)自分が実施したときは、削除してブラウザ再起動後、いつまでたっても画面が表示されずあせりました。
アプリ再起動で解決しましたが。Chromeのプロセスが残っていた状態で削除してしまったのかもしれません。
(2) アイコンサービスキャッシュの削除
macOSはFinderで表示するアイコンをキャッシュとして /Library/Caches/com.apple.iconservices.store に保存しています。 長期間使用したMacではこのファイルが5GB以上に膨らむケースもあります。
sudo rm -rf /Library/Caches/com.apple.iconservices.store
sudo が必要なためパスワードの入力が求められます。
削除後に再起動すると、Finderのアイコンが一時的に正しく表示されないことがありますが、macOSが自動的にキャッシュを再構築するため数分で元に戻ります。
(3) Docker完全削除
Dockerを当面使用しない場合、イメージ・コンテナ・ボリューム・ビルドキャッシュをまとめて削除できます。
--volumes オプションを付けることでボリューム内のデータも含めて完全に削除します。
docker system prune -a --volumes
実行すると削除内容の確認プロンプトが表示されるので、y を入力して進めます。削除されるデータの内訳は以下の通りです。
| 種類 | 内容 |
|---|---|
| Images | 全Dockerイメージ(使用中・未使用問わず) |
| Containers | 全コンテナ |
| Local Volumes | 全ボリューム(DBデータなども含む) |
| Build Cache | ビルド時のキャッシュ |
再度Dockerを使う際は docker pull でイメージを再取得する必要があります。
--volumes を外せばボリューム(docker用データ領域)は保持されるため、データを残したい場合は省略してください。
(4) Slackキャッシュの削除
Slackはメッセージやファイルのプレビューなどをキャッシュとして保存します。長期間使用すると Cache と Code Cache を合わせて数百MB〜1GB程度に達することがあります。
rm -rf ~/Library/Application\ Support/Slack/Cache
rm -rf ~/Library/Application\ Support/Slack/Code\ Cache
削除前にSlackを完全に終了してから実行してください。
削除後は絵文字や画像の読み込みが一時的に遅くなりますが、自動的に再生成されます。メッセージの履歴やアカウント情報には影響しません。
(5) Microsoft Edgeキャッシュの削除
EdgeもChromeと同様にWebページのキャッシュを蓄積します。Cache と Code Cache を合わせて数百MB〜1GB程度になることがあります。
rm -rf ~/Library/Application\ Support/Microsoft\ Edge/Default/Cache
rm -rf ~/Library/Application\ Support/Microsoft\ Edge/Default/Code\ Cache
削除前にEdgeを完全に終了してから実行してください。
削除後は初回のページ読み込みがやや遅くなりますが、ブックマークやパスワードなどのデータには影響しません。
(6) VSCode ShipItキャッシュの削除
com.microsoft.VSCode.ShipIt はVSCodeのアップデートを管理するプロセスが生成するキャッシュです。
古いアップデートファイルが蓄積され、数百MBに達することがあります。
rm -rf ~/Library/Caches/com.microsoft.VSCode.ShipIt
削除してもVSCode本体や拡張機能、設定には影響しません。
次回VSCodeのアップデート確認時に自動的に再生成されます。
(7) AWSキャッシュの削除
AWS CLIはコマンドの応答速度向上のために認証情報やリソース一覧などをキャッシュとして保存します。
長期間使用すると数百MBに達することがあります。
rm -rf ~/Library/Caches/aws
削除しても認証情報(~/.aws/credentials)や設定(~/.aws/config)には影響しません。次回AWS CLIを実行した際に自動的にキャッシュが再構築されます。
(8) Claudeキャッシュの削除
ClaudeデスクトップアプリはElectronベースで動作しており、表示の高速化のためにさまざまなキャッシュを保存します。これらはすべて自動再生成されるため安全に削除できます。
rm -rf ~/Library/Application\ Support/Claude/Cache
rm -rf ~/Library/Application\ Support/Claude/Code\ Cache
rm -rf ~/Library/Application\ Support/Claude/GPUCache
rm -rf ~/Library/Application\ Support/Claude/DawnWebGPUCache
rm -rf ~/Library/Application\ Support/Claude/DawnGraphiteCache
各フォルダの内容は以下の通りです。
| フォルダ | 内容 |
|---|---|
Cache |
Webコンテンツのキャッシュ |
Code Cache |
JavaScriptのコンパイルキャッシュ |
GPUCache |
GPU描画のキャッシュ |
DawnWebGPUCache |
WebGPUレンダリングのキャッシュ |
DawnGraphiteCache |
グラフィック描画のキャッシュ |
削除前にClaudeアプリを完全に終了してから実行してください。
会話履歴やアカウント情報には影響しません。
(9) Teamsキャッシュの削除
Microsoft Teamsはメッセージや画像、ファイルのプレビューなどをキャッシュとして保存します。キャッシュフォルダのみを削除することで、アカウント情報や設定を保持しつつ容量を回収できます。
rm -rf ~/Library/Containers/com.microsoft.teams2/Data/Library/Application\ Support/Microsoft/MSTeams/Cache
rm -rf ~/Library/Containers/com.microsoft.teams2/Data/Library/Caches
削除前にTeamsを完全に終了してから実行してください。削除後はTeams再起動時に画像や絵文字の読み込みが一時的に遅くなりますが、自動的に再生成されます。
メッセージの履歴やアカウント情報には影響しません。
3. おわりに
少し前であれば、これだけのことを調査して記事にするのはほぼ1日仕事だったと思います。
今では、基本的にAIに指示を出して、チェック、間違いと表現の微修正で済むので、1、2時間でここまでできます。
便利な時代になったものだと、改めて感じました。