Mac のアプリを削除したときに置き去りにされるファイル
Mac でアプリを削除しても、キャッシュやコンテナ、設定ファイルは残ります。どこに何が残るのかを確認し、安全に取り除くための手順を解説します。
この種のガイドは、現在のところ英語版のほうが充実しています。 すべての記事を見る
Windows にはレジストリと、不完全ながらも後片付けを試みるアンインストーラーの慣習があります。
macOS にはどちらもありません。アプリをゴミ箱にドラッグすると、削除されるのは正確に1つだけです。
.app バンドル本体です。それ以外にディスクへ書き込まれたもの——通常のアプリは5〜6か所の異なる
場所に書き込みます——は、自分で見つけて対処しない限り、そのままの場所に永久に残り続けます。
アプリが自身のバンドル以外に実際に書き込む場所
1つのアプリが、以下のすべての場所にファイルを残すことがあり、そのどれもアプリ本体を削除しても 触れられません。
~/Library/Application Support/<AppName> # settings, local databases, sometimes huge caches
~/Library/Caches/<bundle.id> # rebuildable cache — see the dedicated guide below
~/Library/Containers/<bundle.id> # sandboxed apps get a full private filesystem here
~/Library/Preferences/<bundle.id>.plist # settings, tiny, but adds up across hundreds of apps
~/Library/Saved Application State/<bundle.id>.savedState # window/tab restore state
~/Library/Logs/<AppName> # diagnostic logs, sometimes gigabytes for chatty apps
これはバグでも、アプリの不作法でもありません——これはアプリがこの種のデータを置くべき、正式に文 書化された正しい場所です。問題は完全に削除する側にあります。アプリ自体がいなくなったときに、 それを片付ける責任を持つ仕組みが macOS のどこにも存在しないのです。
すでに削除したアプリが残したものを見つける
すでにアプリをゴミ箱にドラッグしていて、今になって何が残ったのか気になっている場合、鍵になるのは そのアプリのバンドル識別子です——上記のものはすべてこの識別子の下に格納されていますが、もうアプ リ自体が手元にないため、その識別子が何だったのか教えてくれるものがありません。
# Search Spotlight's metadata for a plausible bundle identifier match
mdfind "kMDItemCFBundleIdentifier == '*appname*'"
# Or just search by the app's name directly across the usual leftover locations
find ~/Library/Application\ Support ~/Library/Caches ~/Library/Containers \
~/Library/Preferences ~/Library/Saved\ Application\ State ~/Library/Logs \
-iname "*appname*" -maxdepth 1 2>/dev/null
バンドル識別子は逆引き DNS 形式(com.company.AppName)なので、会社名や製品名で検索すれば、正
確な識別子が分からなくても、たいていは関連するフォルダをすべて見つけられます。
削除する価値が実際にある残骸はどれか
すべての残骸を個別に追いかける価値があるわけではありません——.plist の設定ファイルは数キロバイ
トしかなく、これまで削除したすべてのアプリについてそれを探し回るのは、時間の使い方として賢明では
ありません。気にする価値があるのは、大きいものです。
~/Library/Containers/<bundle.id>— サンドボックス化されたアプリ(最近の App Store アプ リの多くを含む)にとって、これは実質的にアプリが自由に使えた専用のファイルシステムです。動画編 集ソフト、デザインツール、その他大きなメディアファイルを扱うものは、決まって数ギガバイト単位の コンテナを残します。~/Library/Application Support/<AppName>— アプリに実際のローカルデータベースがある場合、 それが置かれている場所です。チャットアプリ、メモアプリ、オフラインキャッシュを持つあらゆるアプ リが、ここに数ギガバイトを置くことがよくあります。~/Library/Logs/<AppName>— 通常は小さいですが、一部のアプリ(ビデオ会議ツールは常連で す)は非常に冗長にログを出力し、時間をかけて1ギガバイト以上に達することがあります。
すでに削除されたアプリの ~/Library/Caches/<bundle.id> は、まったく問題なく安全です——もはやそ
れを使うアプリが存在しないキャッシュなので、再構築コストの心配自体が発生しません。これは、まだ使
っているアプリのキャッシュを消す場合とは違います。
# Once you've confirmed the app is really gone and identified its folders:
rm -rf ~/Library/Application\ Support/AppName
rm -rf ~/Library/Containers/com.company.AppName
rm -rf ~/Library/Caches/com.company.AppName
Container を削除する前に確認する価値がある唯一のこと
サンドボックス化されたアプリの Container は、まれなケースとして、そのアプリの中で作成し、一度も 書き出したことのないものの唯一のコピーを保持していることがあります——一部のメモアプリや描画ア プリは、通常の Documents フォルダではなくこの方式で実際のコンテンツを保存します。削除するかどう か迷っているアプリの Container を消す前に、(まだ可能なら)もう一度アプリを開いて、書き出しておき たいものが中にないか確認してください。確信が持てたら、削除は即座に、そして再生成するものが何もな いという意味で不可逆です——ただ、警告してくれるアプリが周りにない、通常のファイル削除と同じだと いうだけです。
規模で見ると、これがなぜ思う以上に深刻なのか
1つのアプリをアンインストールして200MBの残骸を気にする人はいません。本当のコストは積み重なった ものです。何年もかけて100個のアプリをインストールしては削除してきた Mac——お試し版、単発のユーテ ィリティ、試してみたけれど使わなかったアプリ——は、もはやマシン上に存在しないソフトウェアからの 孤立したデータを10〜20GB抱えていることも珍しくなく、しかも Finder にそれを思い出させるアイコンが どこにもないため、目に見えません。
上記のコマンドを自分で使えば、無料で、実際に機能します——ただ100個のアプリ相手だと、1個相手に するより時間がかかるというだけです。この捜索を自動化するために、もうインストールされていないアプ リの残骸をまとめて見つけ出し、一度の操作で解放できる開発者向けの無料 Mac アプリ DevCruft を開発中 です。公開時にお知らせを受け取りたい方は、ウェイトリスト に登録してください。
まだ使っているアプリが残していくキャッシュフォルダについては、
~/Library/Caches ガイド を参照してください。