# Mac アプリ削除後の残骸ファイルを片付ける

> Library の残骸をバンドル ID で帰属させ、共有ベンダーデータを守り、ゴミ箱行きや長い間使っていないインストール後の残りを確認します。

Published: 2026-07-29 | Updated: 2026-08-08

同じアンインストール済みアプリに、ふたつの残留スキャナーを向けると、出てくる一覧は異なります。これは
バグではありません。各ツールは所有権の判定ルール、拒否リスト、管理者権限で扱う範囲を
それぞれ独自に決めています。画面に並ぶ候補は、その三つの選択で決まります。
アトリビューション（帰属）を理解すると、残留クリーンアップは「どれがより多くのゴミを見つけるか」から
「どちらの失敗のダメージが小さいか」に変わります。

このガイドは、そのあとの状態についてです。アプリはすでに消えているか、いまちょうど
Trash に入ったところ。本来アンインストーラーが持つべき丁寧さで、残留を見直したいとき向けです。
アプリがまだ動いているあいだの手順全体は、
[完全なアンインストール](https://mole.fit/ja/blog/how-to-completely-uninstall-apps-on-mac) を参照してください。製品選びは
[AppCleaner の先へ](https://mole.fit/ja/blog/appcleaner-alternative) を参照してください。

**短い答え：** アプリを Trash にドラッグしても消えるのはバンドルだけで、データは `~/Library` 以下の Application Support、Caches、Preferences、Containers に残ります。残留はサイズや名前ではなく bundle identifier で帰属させ、削除前に候補をひとつずつ確認するか、まさにそれを徹底するアンインストーラーを使ってください。

## macOS で「アンインストール」が実際に意味すること

macOS は、アプリケーションを「削除ボタンがひとつある単一のオブジェクト」としては扱いません。少なくとも
三つの層があります。

| 層 | よくある場所 | 誰が消すべきか |
|---|---|---|
| App bundle | `/Applications`、`~/Applications`、Setapp など | あなた、Trash、またはパッケージマネージャ |
| ユーザーサポート | `~/Library/…` | 残留スキャナー、または丁寧な手作業レビュー |
| システム / 特権 | `/Library`、helpers、receipts、extensions | **まずベンダーのアンインストーラー** |

Trash にドラッグして確実に消えるのは、いちばん上の層だけです。真ん中の層では汎用
ツールが役に立ちます。三番目の層では、よく「できたつもり」になって失敗します。ドライバー、
ネットワーク拡張、特権ヘルパー、ライセンス用デーモンです。だからこそ Apple も、その層では
ベンダーの Uninstall アプリを優先するよう案内しています
([Delete or uninstall apps](https://support.apple.com/102610))。

<figure class="blog-diagram">
  <img src="https://mole.fit/img/blog/app-uninstall-layers.webp" width="1360" height="454" loading="lazy" alt="アプリバンドル、ユーザのライブラリのサポートファイル、システムレベルのヘルパーの3層です">
  <figcaption>アプリバンドルの削除は最上層だけです。ユーザー Library の残留とシステムヘルパーは、リスクの異なる別判断です。</figcaption>
</figure>

## ユーザー残留が実際にいる場所

サードパーティの残留の多くは、ホームの Library 以下に集まります。

| 領域 | 多くの場合の中身 |
|---|---|
| `Application Support/<Name or ID>` | データベース、オフラインパック、プロジェクト状態 |
| `Caches/<bundle id>` | 再生成できるキャッシュ |
| `Containers/` と `Group Containers/` | サンドボックスのホームと共有グループ |
| `Preferences/`（+ ByHost） | 設定の plist |
| `Logs/`、DiagnosticReports | 診断情報 |
| `Saved Application State/` | ウィンドウ復元 |
| `HTTPStorages/`、WebKit、cookies | その identity のネットワーク状態 |
| `LaunchAgents/` | plist を持つユーザーのログインヘルパー |
| `Application Scripts/` | サンドボックス用スクリプトパッケージ |

`/Library` 以下のシステムパス（LaunchDaemons、PrivilegedHelperTools、`/private/var/db/receipts` の
receipts）は、よりリスクの高い層です。ベンダーの削除手段を優先し、汎用スキャナーは
そこではレビュー専用として扱ってください。

サンドボックス化されたアプリは、見た目がすっきりしていることがよくあります。主コンテナは
`~/Library/Containers/<bundle id>` です。それでも App Groups、Application Scripts、
共有キャッシュ、CloudKit、Keychain 項目を使うことがあります。サンドボックスは直接のファイルアクセスを
狭めますが、ディレクトリがひとつに収まる保証はありません。サンドボックスなしのアプリは
Application Support、Caches、Preferences、Logs、Saved Application State、WebKit、
Cookies に散らばります。散らばりが広いほど、ふたつのツールが食い違う余地も増えます。

## アトリビューションがスキルのすべて

安全な残留検出の鍵は、マーケティング名ではなく **identity（識別子）** です。

### Bundle identifier と表示名

`com.example.widget` は、改名やローカライズをまたいでも安定しています。表示名はそうではありません。
ふたつの製品が会社フォルダ（`…/Application Support/Google`）を共有していて、
アンインストールしたのは片方だけ、ということもあります。「Google」を文字列としてマッチさせるのは、
スキャナーが数 GB 規模の誤検出を作る典型パターンです。

**Identifier matching** は精密で、兄弟アプリのデータを提案することはほとんどありません。一方で、
アプリが自分の名前で付けたフォルダは取りこぼします。

**Name matching** はそのフォルダを見つけますが、たまたま同じ語を共有しているものも拾います。
見つかる量は増え、誤る回数も増えます。

<figure class="blog-diagram">
  <img src="https://mole.fit/img/blog/matching-strategies.webp" width="1360" height="454" loading="lazy" alt="Bundle identifier の照合は所有パスを正確に見つけ、表示名の照合は候補も誤検出も多くなります">
  <figcaption>識別子マッチは狭くて安全です。名前マッチは残留を多く見つけますが、製品がベンダーフォルダを共有していると誤ることが増えます。</figcaption>
</figure>

削除前の実務チェック：

```
mdfind 'kMDItemCFBundleIdentifier == "com.example.widget"'
ls /Applications ~/Applications 2>/dev/null
```

その id を持つものがまだあれば、共有のサポートパスは **live（稼働中）** として扱ってください。

### ヘルパーと埋め込み identity

最近のアプリは、関連 id を持つヘルパーを同梱します。`com.example.widget.helper`、
`SMPrivilegedExecutables` で宣言された名前、`Contents/Library/LoginItems` 以下のログイン項目などです。
丁寧なスキャナーは、アプリが消える **前に** バンドルからそれらの id を集めます。バンドルが
なくなったあとに残るのは、記録しておいた情報か、正確な名前のままディスクに残っているものだけです。

### Group containers

`~/Library/Group Containers/` は、スイート共有データを意図的に置きます。

- `group.<bundle id>`
- `<TeamID>.<bundle id>` のような team-scoped 名
- 複数アプリが使う共有の `group.*` 空間

自動関連付けの候補にしてよいのは、所有者スコープが正確に一致するパスだけです。共有グループ
ツリーは、兄弟がひとつでも残っているならレビュー専用か、手を付けない方がよいです。ここが
「たくさん見つけた」ツールが実害を出す典型カテゴリです。

### 名前のバリアントとチャネルビルド

`Foo Beta` は `Foo Beta`、`FooBeta`、そしてまだインストールされているリリースチャネル用の
安定版 `Foo` フォルダを残すことがあります。チャネル名を剥がしたベース名は誤検出リスクが
高いです。安定版アプリが消えたと証明できない限り、レビュー専用に留めてください。

<figure class="blog-diagram">
  <img src="https://mole.fit/img/blog/leftover-attribution.webp" width="1360" height="454" loading="lazy" alt="バンドルの同一性が残留候補へ流れ、共有ベンダーフォルダは保護されたままです">
  <figcaption>帰属は bundle identity から所有パスへ辿るべきで、ほかのアプリがまだ使うベンダー全体フォルダへ広げてはいけません。</figcaption>
</figure>

## 安全な入口は三つ

### 1. まずベンダーのアンインストーラー

セキュリティエージェント、VPN クライアント、オーディオドライバー、エンドポイントツールは、
自分の receipt と拡張機能の取り外し順を知っています。Library を歩く前に、それらを先に実行してください。
ファイル削除は、システム拡張やネットワーク拡張を確実に無効化する手順ではありません。macOS が
それらを登録しています。

### 2. アプリがすでに消えたあとのレビュー

`.app` がなくなったあとは、その bundle id や正確な名前バリアントが付いたパスをスキャンします。
保守的な既定の扱い：

- **所有が明確なら多くの場合 OK：** caches、logs、saved state、crash reports
- **慎重にレビュー：** Application Support、Containers、Preferences（ライセンス、オフライン
  メール、プロジェクト DB）
- **通常は残す：** 正確な所有権のない Group Containers、Library 外の Documents、
  別の id がまだ必要とするもの

候補のサイズ確認：

```
du -sh ~/Library/Application\ Support/<Name> \
  ~/Library/Caches/<bundle.id> \
  ~/Library/Containers/<bundle.id> 2>/dev/null
```

権限エラーの多くは、フォルダが空という意味ではなく、Terminal に Full Disk Access がないことを
意味します。

### 3. アプリが Trash に入った瞬間

多くの人は、まず Trash に入れてから考えます。`~/.Trash` に新しい `.app` が来たことを検知し、
Info.plist の identity を読み、関連サポートファイルをスキャンして **review panel** を開く
ウォッチャーは、宝探しなしに残留を拾えます。有用と有害を分ける設計上の制約：

- ゴミ箱に入れたアプリバンドル自体は絶対に自動削除しない（Put Back が動くこと）
- protected / AV / MDM クラスではポップしない
- **クリーナー自身** がアンインストール中にそのアプリをゴミ箱へ入れた場合は、
  一回限りの抑制を消費する（そうしないとパネルがアンインストール流れと競合する）
- Full Disk Access を前提にし、なければバックグラウンドから促さず静かに失敗する

[Mole](https://mole.fit/) は、ディスク分析、アプリのメンテナンス、レビュー優先のクリーンアップを、ネイティブな
Mac アプリにまとめています。システムデータは、引き続き macOS と所有アプリが管理します。

## 孤児は「Library 内の大きいもの全部」ではない

忘れ去ったアプリの残留を見つけるには **claim subtraction（請求の引き算）** が必要です。候補となる
サポートフォルダを列挙し、インストール済みソフトがまだ請求しているもの（bundle id、起動中アプリ、
Launch Services 登録、ベンダールート）を差し引きます。claim スキャンが部分的なとき
（タイムアウト、読めないディレクトリ）の安全な結果は、当てずっぽうの一覧ではなく **orphans ゼロ** です。
きれいな Mac でいつも何十個もの「ジャンク」アプリを見つけてくるツールは、販売向けの数字に
最適化しています。

Quiet-period ゲートも重要です。先週書き換えられた設定は、claim ウォークが見えない
CLI ツールのものかもしれません。最近の mtime は、候補を抑える材料になります。

## 具体例：ふたつのツール、ひとつのベンダー・スイート

同じ会社が Product B も出しており、そちらはまだインストールされている状態で、Product A を
アンインストールしたとします。

- ツール 1（identifier 寄り）：短い一覧。ほぼ `com.vendor.productA.*` パス。
- ツール 2（name 寄り）：`~/Library/Application Support/Vendor`（4 GB）と、両製品が使う
  group container を追加。

ツール 2 の方が徹底しているように見えます。しかし提案している削除は、Product B を壊し得ます。
画面下端の合計は品質スコアではありません。その上にあるカテゴリが肝心です。

## Homebrew の孤立した receipt

アプリが Homebrew Cask 由来なら、`.app` だけ消すと Caskroom の記録が残り、再インストールを
妨げることがあります。ファイル残留のあとに：

```
brew list --cask
```

token が残っていれば、`brew uninstall --cask <token>` で関連付けを切れます（brew 自身の
より広いクリーンアップが欲しいときだけ `--zap` を受け入れる）。アプリがすでに消えたあとの
「Cask is not installed」は **stale association（古い関連付け）** であり、Caskroom の
パスを適当に `rm -rf` する理由にはなりません。

## 名前が一致しても拒否すべきもの

- まだインストールされている兄弟やチャネルの双子
- 共有の group containers とベンダー親フォルダ
- 検証済みの削除手段がない receipts と privileged helpers
- Library 外のユーザー文書
- キャッシュパスの近くにある AI のチャット保存やモデルディレクトリ
  ([AI cleanup](https://mole.fit/ja/blog/how-to-remove-ai-tool-leftovers-mac))

## よくある誤り

**見つかった一覧を最大化する。** 候補が多いほど、帰属が悪いことが多いです。

**Group Containers を既定で消す。** 共有は意図的なものです。

**VPN、AV、オーディオ、仮想化でベンダーのアンインストーラーを飛ばす。**

**Full Disk Access なしで計測し、「何も残っていない」と結論する。**

**まとめて残留を消した直後に Trash を空にする。** 重要なものが誤帰属していたかもしれないなら、
通常利用を一日ほど挟んでからにしてください。

## 確認

1. 削除したパスを再計測する。
2. その id のログイン項目や launch agent が残っていないことを確認する
   ([startup items](https://mole.fit/ja/blog/how-to-disable-startup-programs-on-mac))。
3. 同じベンダーの兄弟アプリを起動する。
4. 削除を受け入れてからだけ、Trash を空にする。

## 作業の順番

1. ドライバー、拡張、ヘルパーがあったアプリなら、ベンダーのアンインストーラーを探す。
2. 必要なら、アプリがまだ動いているうちにエクスポートや認可解除をする。
3. アプリと見えるヘルパーを終了する。
4. バンドルを削除する（またはすでに Trash にあることを確認する）。
5. 残留を identity でレビューする。共有コンテナには手を付けない。
6. 該当すれば Homebrew cask の receipt を処理する。
7. Mac を普通に使っているあいだは Trash に置き、そのあと空にする。

## 参考リンク

- Apple: [Delete or uninstall apps on Mac](https://support.apple.com/102610)
- Related: [complete uninstall](https://mole.fit/ja/blog/how-to-completely-uninstall-apps-on-mac),
  [AppCleaner alternatives](https://mole.fit/ja/blog/appcleaner-alternative),
  [what cleaners should never delete](https://mole.fit/ja/blog/what-mac-cleaners-should-never-delete)

残留クリーンアップは identity の整備です。スキルはギガバイトの最大化ではなく、
所有を証明し、共有状態を守り、削除を復元可能に保つことです。

## よくある質問

### 自分で ~/Library 以下の残留を消して大丈夫ですか？

帰属が取れているときだけです。フォルダをアプリの bundle identifier に合わせ、サイズや似た名前には合わせず、送る前にひとつずつ確認してください。ひとつの誤りが、別アプリのデータや自分の文書を消すことがあります。

### そもそもなぜアプリはファイルを残すのですか？

macOS にはアンインストール契約がありません。バンドルを Trash にドラッグすることが仕組みの全部で、実行時に書いたものは書いた場所に残ります。

### 再インストールすれば、消したものは戻りますか？

再構築できる状態は、はい。caches、receipts、既定の preferences は初回起動で戻ります。Documents、チャット履歴、ライセンスは戻りません。だから丁寧なツールは、再インストールで作られるものだけをあらかじめ選びます。

---

Canonical HTML page: https://mole.fit/ja/blog/how-to-remove-leftover-files-after-uninstalling-mac-apps
Blog index for agents: https://mole.fit/ja/blog/llms.txt
Site index for agents: https://mole.fit/llms.txt
