Mac の ~/Library/Group Containers とは?削除してよいものの見分け方
しばらく使ってきた Mac で ~/Library/Group Containers を開くと、UBF8T346G9.Office、group.com.apple.notes、9K33E3U3T4.net.shinyfrog.bear のような名前のフォルダがずらりと並んでいます。数 KB の設定しか入っていないものもあれば、アプリのデータベースがまるごと入っているものもあり、とうに削除したアプリのものもいくつか混ざっています。名前が意味のない文字列に見えるので、容量に困った人がこのフォルダを空にしてしまい、それがよく問題を起こします。
この記事では、このフォルダの正体、名前の読み方、インストール済みのどのアプリがまだグループを使っているかの調べ方、そして削除したアプリが残したグループのうちゴミ箱に入れてよいものを扱います。
このフォルダの正体
App Group は、開発者がアプリのコード署名の中で com.apple.security.application-groups エンタイトルメントとして宣言する共有スペースです。Apple の App Groups エンタイトルメントのドキュメントでは、同じ開発チームの複数のアプリがコンテナやキーチェーンアクセスグループを共有し、互いにやり取りするための仕組みとして説明されています。Mac では、グループごとに ~/Library/Group Containers/<group id> というフォルダが作られ、最初に使われたときにシステムがその中に Library/Application Support、Library/Caches、Library/Preferences を追加します。
Apple が挙げている識別子の形式は2つです。
group.<group name>:Apple Developer の Web サイトで登録するもので、iOS と同じ形式です。<team identifier>.<group name>:macOS の形式で、開発者の10文字の Team ID で始まり、登録は不要です。
フォルダ名が識別子そのものなので、一覧を表示するだけで、各グループがどちらの形式かが分かります。
アプリより長く残るグループ
グループのメンバーがアプリ1つだけということはまれです。メインのアプリ、そのウィジェット、共有拡張機能や Finder 拡張機能、ヘルパーツールが同じグループに参加し、同じ設定やファイルを読むことがよくあります。開発者は別々のアプリを1つのグループにまとめることもできます。Microsoft の Office アプリは UBF8T346G9.ms、UBF8T346G9.Office、UBF8T346G9.OfficeOsfWebHost を共有し、Pages、Numbers、Keynote は group.com.apple.iWork を共有しています。
削除の扱いは macOS と iOS で異なります。Apple の containerURL(forSecurityApplicationGroupIdentifier:) のドキュメントによると、iOS ではグループ内のアプリがすべてなくなるとシステムがグループのディレクトリを削除しますが、macOS ではアプリが最初に必要としたときにディレクトリを作成し、それを削除することはありません。アプリをゴミ箱にドラッグしても、グループはそのまま残ります。
中身はさまざまです。小さな環境設定ファイルのこともあれば、キャッシュのことも、本物のデータのこともあります。Microsoft は、Office の3つの共有フォルダをゴミ箱に入れると Outlook のデータが削除されると注意しています。WhatsApp は受信したメディアを group.net.whatsapp.WhatsApp.shared と group.net.whatsapp.WhatsApp.private に保存していて、数十 GB から数百 GB になることもあります。
フォルダ名の読み方
| 名前の形 | 例 | たいていの意味 |
|---|---|---|
group.<bundle id> |
group.com.apple.testflight |
特定の1つのアプリにちなんだ名前。この例では TestFlight |
group.<bundle id>.<suffix> |
group.net.whatsapp.WhatsApp.shared |
1つのアプリの完全な ID に紐づき、そのアプリか拡張機能が使う |
group.<shared name> |
group.com.apple.iWork、group.net.whatsapp.family |
複数のアプリで共有され、名前にどのアプリの ID も含まない |
<TeamID>.<bundle id> |
9K33E3U3T4.net.shinyfrog.bear |
1つのアプリ、Mac 形式。この例では Bear |
<TeamID>.group.<name> |
G78RJ6NLJU.group.at.EternalStorms.Yoink |
チーム単位のグループで、アプリは1つのことも複数のこともある |
<TeamID>.<short name> |
UBF8T346G9.Office、UBF8T346G9.ms |
スイート全体で共有され、製品名やベンダー名が付いている |
見た目より判断が難しい理由が2つあります。Team ID が示すのは開発者で、アプリではありません。Mac 上の Microsoft のグループは、Teams のものでも Office のものでも、すべて UBF8T346G9. で始まります。また、バンドル ID のような名前が、いまのアプリの ID とは限りません。Teams は UBF8T346G9.com.microsoft.teams を使い続けていますが、アプリ自体の ID は com.microsoft.teams2 です。名前は手がかりにすぎず、証拠になるのはインストール済みのアプリの署名です。
サイズ順に並べて削除すると失敗する理由
ここでいちばん大きいフォルダは、たいてい使用中のものです。サイズ順に並べると、メールの保存先、メモのデータベース、チャットアプリのメディアが上位に来ますが、どれもキャッシュではありません。
Apple 自身のアプリもここにあります。group.com.apple.notes と group.com.apple.reminders はメモとリマインダー、group.com.apple.iWork は Pages、Numbers、Keynote のもので、systemgroup. で始まる名前はシステムのグループです。名前に見覚えがなくても、どれも残骸ではありません。
共有グループは、どのメンバーよりも長く残ります。Word を削除しても、Excel や Outlook がインストールされている間は UBF8T346G9.Office を処分してよいことにはならず、削除すれば残ったアプリがリセットされたり動かなくなったりします。
グループを削除すると、中身は戻ってきません。そのグループをまだ必要とするアプリは、次に求めたときに新しい空のフォルダを受け取りますが、中にあったものは、コピーを取っていない限り失われます。
グループの持ち主を調べる
まずは読み取りだけで、何があってどれくらいの大きさかを確認します。
ls ~/Library/Group\ Containers
du -sh ~/Library/Group\ Containers/* 2>/dev/null | sort -h | tail -15
1行目はすべてのグループを一覧表示します。2行目は大きいものから15個を、最大のものが最後に来るように表示します。macOS が、ターミナルにほかのアプリのデータへのアクセスを許可するか尋ねることがあります。許可しなかった場合や、フォルダが権限エラーを返したりサイズが表示されなかったりする場合は、測れていないだけで、空であるとは限りません。
次に、インストール済みのアプリにどの開発者が署名したか、どのグループを宣言しているかを確認します。
codesign -dv "/Applications/Microsoft Teams.app" 2>&1 | grep TeamIdentifier
codesign -d --entitlements - "/Applications/Microsoft Teams.app" 2>/dev/null
TeamIdentifier の行は、疑っているグループの接頭辞と一致するはずです。2つ目のコマンドはアプリのエンタイトルメントを表示し、所属するグループは com.apple.security.application-groups の下に並びます。
特定のグループをまだ宣言しているインストール済みのアプリをすべて探すには、それぞれの署名を検索します。
find /Applications ~/Applications -maxdepth 3 -name "*.app" -prune 2>/dev/null |
while read -r app; do
codesign -d --entitlements - "$app" 2>/dev/null | grep -qF "UBF8T346G9.Office" && echo "$app"
done
表示される各行は、自分の署名でそのグループを宣言しているアプリで、そのグループは残します。結果が空なら有力な手がかりですが、証明ではありません。このループは各アプリの外側の署名しか読みませんが、アプリの中にあるウィジェット、拡張機能、ヘルパーはそれぞれ独自の署名を持っています。また、この2つのフォルダ以外にインストールされたアプリは見ません。
削除してよいもの
次の条件がすべてそろえば、そのグループは削除してよい残骸です。
- 名前に、削除したアプリの完全な ID か、インストール済みのどのアプリの署名にも使われていない Team ID が含まれている。
- 上の方法で確認して、
/Applications以外のアプリも含め、どのインストール済みアプリも宣言していない。 - Apple のグループではない。つまり
group.com.apple.やsystemgroup.で始まっていない。ただし、TestFlight のように個別にダウンロードした Apple のアプリを削除した場合の、そのアプリ専用のグループは除く。 - 中身を見て、必要ないと判断した。チャットアプリのメディアや Outlook の保存先は、アプリがなくなってもあなたのものです。
そのうえで、その開発者のアプリをすべて終了し、Finder の 移動 › フォルダへ移動 でフォルダを開いてゴミ箱に入れ、しばらくはゴミ箱を空にせずに置いておきます。あとでアプリを再インストールすれば、新しいグループから始まります。~/Library のほかの部分は Mac アプリ削除後の残骸ファイルを片付ける で、削除してよさそうに見えて実はそうでない場所は Mac クリーナーが絶対に消してはいけないもの で扱っています。
Mole での扱い
Mole がグループコンテナを削除するのは、アプリをアンインストールするときだけです。対象として探すのは、そのアプリのバンドル ID にちなんだ名前のグループ、その Team ID を含むグループ、そしてアプリ本体と、その中の拡張機能、ログイン項目、XPC サービス、ヘルパーの署名で宣言されたグループです。アプリの名前とぴったり一致する group.<bundle id> フォルダは、初期状態で選択されます。<TeamID>.<bundle id> フォルダ、アプリの ID で始まるだけのグループ、アプリが宣言する共有グループは、選択されない状態で表示されます。まだインストールされている、より長く具体的な ID を持つアプリのグループは、そもそも表示されません。
各グループを移動する直前に、Mole はもう一度確認します。同じ開発者のインストール済みアプリと有効なシステム機能拡張を読み直し、そのどれかがグループを宣言している場合、確認したアプリが変更されたか再インストールされた場合、その一覧を時間内に読めなかった場合は、そのグループの移動を拒否します。ある行で得た許可を、次の行に流用することはありません。Apple の group.com.apple. グループは、TestFlight のように個別に配布される Apple アプリ専用のグループを除いて保護されたままなので、Pages を削除しても group.com.apple.iWork は Numbers と Keynote のために残ります。テスト用の Mac で Microsoft Teams を削除したときは、UBF8T346G9.com.microsoft.teams、UBF8T346G9.com.microsoft.oneauth、UBF8T346G9.com.microsoft.entrabroker の3つのグループが残り、Mole は推測せずにこれらを保護対象として報告しました。Office の UBF8T346G9.Office とその仲間は、意図的に手を付けていません。
アンインストールで削除するものはすべてゴミ箱に入ります。アンインストール以外の場面では、Group Containers は Mole が保護するユーザーデータの場所の一覧に入っています。「クリーン」の削除済みアプリの残留データの項目では、group. のグループや共有グループを候補に出すことはありません。表示できるグループコンテナは、インストール済みのどのソフトウェアもその ID を使っていない、アプリ単位の <TeamID>.<bundle id> フォルダだけで、その確認が終わらないときは1つも表示しません。片付け全体については、Mac のキャッシュはどこまで削除してよい? と Office のアンインストールガイド を参照してください。
よくある質問
Group Containers フォルダをまるごと削除してもいいですか?
いいえ。メモ、リマインダー、iWork、使っているメールやチャットのアプリなど、まだインストールされているアプリのデータが入っています。インストール済みのどのアプリも宣言していないことを確認したうえで、グループを1つずつ削除してください。
アプリをアンインストールしたのに、グループが残っているのはなぜですか?
macOS では、アプリが最初に必要としたときにシステムがグループのフォルダを作り、それを削除することはありません。また、同じグループを同じ開発者のほかのアプリや拡張機能がまだ使っていることもあります。アプリをゴミ箱にドラッグしても、グループには手が付きません。
インストール済みのアプリがまだ使っているグループを削除するとどうなりますか?
アプリは、設定、サインイン状態、ローカルのデータなど、中にあったものを失い、次に求めたときに空のフォルダを受け取ります。グループはすぐに削除するのではなくゴミ箱に入れておけば、アプリが動かなくなったときに元に戻せます。