Macでアプリを残存ファイルごと完全にアンインストールする方法
アプリをゴミ箱にドラッグすると、アプリのバンドルが削除されるだけで、ほかは何も削除されません。サポートデータ、キャッシュ、環境設定、コンテナ、バックグラウンドのヘルパーなど、アプリが実行中に作成したファイルはライブラリに残ります。アプリを完全にアンインストールするには、アプリを削除したうえで、そのアプリのバンドル識別子を手がかりに残存ファイルを見つけ、それらも削除します。
このガイドでは、残存ファイルがどこにあるか、どうやって見つけるか、そして壊れたエントリを残さずにバックグラウンド項目を削除する方法を説明します。
ゴミ箱にドラッグしてもファイルが残る理由
Macのアプリは /Applications にある1つのバンドルで、macOSには、アプリがほかの場所に書き込んだものを追跡するアンインストーラがありません。アプリは、アップデートや再インストールのあともデータが残るように、ライブラリ内の標準的なフォルダにデータを保存します。再インストールするときには便利ですが、しないのであれば不要な残り物です。
残存ファイルのほとんどは、環境設定ファイルや保存されたウインドウの状態など、小さなものです。しかし、そうでないものもあります。チャットアプリ、ブラウザ、デザインツール、開発ツールは、数GBのキャッシュやサポートデータを残すことがあります。バックグラウンドのヘルパーをインストールしたアプリは、アプリがなくなったあとも動き続けるものを残すこともあります。
削除する前に:アンインストーラの確認とサインアウト
数分の準備で、よくある失敗を避けられます。
- アプリに専用のアンインストーラが付属している場合は、それを使います。ドライバ、システム機能拡張、セキュリティツールをインストールするアプリには通常用意されており、手動では簡単に手の届かない部分まで削除してくれます。
- コンピュータの台数に制限があるアプリの場合は、アプリ内でサインアウトするか、ライセンスの認証を解除します。
- 残しておきたいものは書き出します。サポートファイルを削除すると、プロジェクト、チャット履歴、設定などのローカルデータが削除されます。
- ゴミ箱に入れる前に、メニューバーのアイコンも含めてアプリを終了します。
残存ファイルのある場所
以下が標準的な場所です。フォルダ名は、アプリ名、開発元の名前、またはアプリのバンドル識別子になっています。
- ~/Library/Application Support:アプリのデータとデータベース。通常は最も大きな残存ファイルです。
- ~/Library/Caches:アプリが作り直せるファイル。
- ~/Library/Preferences:設定。バンドル識別子が名前になった .plist ファイルです。
- ~/Library/Containers:サンドボックス化されたアプリのデータフォルダ全体。Mac App Storeのアプリのほとんどが該当します。Finderでは、これらのフォルダはアプリ名で表示されます。
- ~/Library/Group Containers:同じ開発元のアプリや機能拡張のあいだで共有されるデータ。
- ~/Library/Saved Application State:次回起動時のためのウインドウの位置。
- ~/Library/Logs、~/Library/HTTPStorages、~/Library/WebKit:ログ、Cookie、Webデータ。
- ~/Library/LaunchAgents:ログイン時に開始されるバックグラウンドジョブ。
- /Library/LaunchDaemons:システム全体に対してrootとして実行されるバックグラウンドジョブ。
- /Library/PrivilegedHelperTools:管理者権限を持つヘルパープログラム。それぞれがLaunchDaemonと対になっています。
- /Library/Application Support と /Library/LaunchAgents:上記と同じものが、すべてのユーザ向けにインストールされたもの。
バンドル識別子で残存ファイルを見つける
すべてのアプリにはバンドル識別子があります。com.example.appname のような、ドメインを逆順にした名前です。アプリのファイルやフォルダのほとんどにこの名前が付いているため、検索の手がかりとして最も確実です。アプリを削除する前に調べておいてください。次のコマンドはSlackの識別子を表示します。Slackの部分を、お使いのアプリの名前に置き換えてください。
osascript -e 'id of app "Slack"'ライブラリで識別子を検索する
次に、ライブラリでその識別子を検索します。下記のコマンドの com.example.appname を、先ほど調べた識別子に置き換えてください。一致するものを一覧表示するだけで、何も削除しません。
Application Supportのフォルダには識別子ではなくアプリ名や開発元の名前が使われていることが多いので、それらの名前でも検索をもう一度実行します。システム全体のファイルについては、/Library でも同じことを繰り返します。削除する前に結果を1つずつ読み、一致したものはFinderでゴミ箱に入れてください。そうすれば、ほかの何かが動かなくなった場合に元に戻せます。
find ~/Library -iname "*com.example.appname*" 2>/dev/nullLaunchAgentとヘルパーを安全に削除する
LaunchAgentとLaunchDaemonは、バックグラウンドでプログラムを開始するようmacOSに指示する小さな .plist ファイルです。アプリを削除してplistを残すと、macOSはもう存在しないものを開始しようとし続けます。ジョブが読み込まれている状態でplistを削除すると、ジョブは次に再起動するまで動き続けます。
きれいに行うには、まずジョブの読み込みを解除し、それからファイルを削除します。自分のライブラリにあるLaunchAgentの場合は、下記のコマンドを実際のファイル名に置き換えて使います。ジョブを停止するだけで、ディスクからは何も削除しません。そのあとで、plistをゴミ箱に入れます。
/Library/LaunchDaemons にあるデーモンの場合、同等のコマンドは sudo launchctl bootout system のあとにplistのフルパスを続けたものです。そのあと、plistと、/Library/PrivilegedHelperTools にある対応するファイルをゴミ箱に入れます。Finderが管理者パスワードを求めます。
バックグラウンド項目は、「システム設定」の「一般」>「ログイン項目と機能拡張」でも確認してオフにできます。削除するのは、アンインストールするアプリと名前が明らかに一致するplistだけにしてください。com.apple で始まるものには手を付けないでください。
launchctl bootout gui/$(id -u) ~/Library/LaunchAgents/com.example.appname.agent.plist手を付けないほうがよいもの
共有されている可能性のあるものには注意してください。Group Containersのフォルダは同じ開発元の複数のアプリのものであることがあり、ほかのアプリをまだ使っているのに削除すると、そのアプリのデータも削除されます。Application Supportにある開発元の名前のフォルダで、アプリのスイート全体のデータを持つものについても同じです。
あるファイルがそのアプリのものかどうか確信が持てない場合は、そのままにしておきます。取り残された環境設定ファイルはほとんど領域を使わず、害もありません。すべてをゴミ箱に入れたら再起動し、ほかのアプリが正常に動作することを確認して、それからはじめてゴミ箱を空にします。
Diskzyでアプリをアンインストールする場合
DiskzyはMacのネイティブアプリで、「Uninstall」(アンインストール)タブがこの検索を代わりに行います。アプリを、それが残したサポートファイル、キャッシュ、環境設定、コンテナ、LaunchAgent、特権ヘルパーごと削除します。ほかのアプリと共有されているファイルには手を付けないよう、保護の仕組みがあります。
Diskzyが削除するものはすべてゴミ箱に入るので、ゴミ箱を空にするまでは何も失われません。すべてを見るにはフルディスクアクセスが必要で、Appleによる署名と公証を受けています。72時間はすべての機能が無料で使え、その後は$9の買い切りでMac 2台まで使えます。
よくある質問
- アプリをゴミ箱にドラッグすれば、完全にアンインストールされますか?
- いいえ。アプリ本体は削除されますが、サポートファイル、キャッシュ、環境設定、バックグラウンドのヘルパーは、削除するまでライブラリに残ります。
- Macでは、アプリの残存ファイルはどこに保存されていますか?
- 大半はユーザのライブラリ内の Application Support、Caches、Preferences、Containers、Group Containers、Saved Application State にあります。バックグラウンド項目は ~/Library/LaunchAgents、/Library/LaunchDaemons、/Library/PrivilegedHelperTools にあります。
- アプリのバンドル識別子はどうやって調べますか?
- ターミナルで、osascript -e 'id of app "AppName"' をアプリの名前に置き換えて実行します。com.example.appname のような識別子が表示され、そのアプリのファイルのほとんどにこの名前が付いています。
- ~/Library/Preferences のファイルは削除しても安全ですか?
- アンインストールしたアプリの環境設定ファイルは、削除しても安全です。まだ使っているアプリのものを削除すると、そのアプリはデフォルトの設定で起動します。
- 削除したアプリがバックグラウンドで動かないようにするには?
- 「システム設定」>「一般」>「ログイン項目と機能拡張」と開き、そのバックグラウンド項目をオフにします。そのうえで、~/Library/LaunchAgents または /Library/LaunchDaemons にあるplistの読み込みを解除して削除します。
関連ガイド
- Application Support~/Library/Application Support
- Caches~/Library/Caches
- Logs~/Library/Logs
- Trash~/.Trash
アンインストールガイド
Macの空き領域がどこに消えたのかを確認
Diskzyはディスク全体をマップにし、システムデータの内訳を示し、安全なものを消去します。72時間は無料、その後は$9の買い切りでMac 2台まで使えます。
Diskzyを無料で試す