iMessage の添付ファイルが静かに Mac を圧迫している
Mac の iMessage の添付ファイルがどこに保存され、どれだけ容量を使っているのかを確認する方法と、安全に削除するための手順を解説します。
この種のガイドは、現在のところ英語版のほうが充実しています。 すべての記事を見る
Messages が iCloud 経由で iPhone と Mac の間で同期されている場合——これがデフォルトで、ほとんど の人がこの状態で使っています——会話の中で誰かがあなたに送ったすべての写真、動画、ボイスメモ、 ファイルは、スマートフォンだけでなくこの Mac にもローカルにキャッシュされます。
du -sh ~/Library/Messages/Attachments
写真や動画のやり取りが多いグループチャットが、たいていの原因です——アクティブなグループチャット がたった1つでも、1〜2年続けば簡単に数ギガバイトに達し、ほとんどの人はグループチャットを複数抱え ています。
実際のデータはどこにあるのか
Messages は、Mail と似た構造で、データベース(テキストとメタデータ)と、メディア本体を格納する 別の添付ファイルフォルダに分かれてストレージを使っています。
du -sh ~/Library/Messages/chat.db # message text, small relative to attachments
du -sh ~/Library/Messages/Attachments # every photo, video, voice memo — this is the big one
Attachments は会話ごとではなく、ハッシュベースの入れ子になったフォルダ構造で整理されています。
そのため「この特定のグループチャット用のフォルダ」に単純にたどり着くことはできません——会話ごと
に特定して削除するには、アプリ自体の UI を使うのが実用的な方法で、これは以下で説明します。
最も簡単で安全な対処法:Messages に自動管理させる
System Settings → Messages → iMessage → Message History、または Messages アプリ自体の設定 の中に、すべてを永久に保持する代わりに30日または1年でメッセージと添付ファイルを自動削除するオプ ションがあります。これはほとんどの人にとって最も効果の大きい変更です——「Forever」ではなく1年保 持をオンにするだけで、それ以上何もしなくても継続的な増加に上限がかかります。
これはあくまで今後に対してのみ有効です——すでに何年分も溜まった添付ファイルを遡って片付けてくれ るわけではありません。それは以下の手順で対処します。
すでに溜まったものを片付ける
アプリ内で会話ごとに(最も安全で、最も的を絞った方法):会話を開き、会話詳細パネルを使って 個々の大きな添付ファイルや写真を確認・削除できます。特に、まだ抜けてはいないもののもうアクティブ に参加していないグループチャットで有効です。
System-wide、Storage 設定経由:System Settings → General → Storage から Messages のカテ ゴリを選ぶと、合計サイズと、サイズ順に並んだ「Review Large Attachments」のようなビューが表示さ れます——すべての会話を手動で開かなくても、最大の原因を素早く見つけられる方法です。
Attachments フォルダから直接削除する(最終手段、より破壊的):Messages が内部の参照を再生成 するという意味では安全ですが、古い会話に壊れて見えるプレースホルダー画像を残し、メッセージの参照 までは綺麗に消えないことがあります。上記のアプリ内での削除方法のほうがクリーンで、ほとんどの人に とってはそちらを推奨します。このオプションが存在するのは、主に特定の日付より古い添付ファイルを一 括でクリーンアップするスクリプトを組む場合のためです。
find ~/Library/Messages/Attachments -type f -mtime +365 -exec du -ch {} + | tail -1
# Review the total first; only proceed to an actual delete via the app's own
# retention settings above rather than deleting these files directly, to
# avoid the broken-placeholder issue.
ボイスメモについて
Messages 経由で送られるボイスメッセージには、iOS 上ではデフォルトの有効期限があります(「Keep」 をタップしない限り、再生後2分)。ただしこの期限切れの挙動は、Mac 上でのキャッシュのされ方には必 ずしもきれいに適用されず、それでも溜まってしまうものがあります。ボイスメモをよく使う人は、個別に 確認する価値があります。
find ~/Library/Messages/Attachments -iname "*.caf" -exec du -sh {} \; 2>/dev/null | sort -hr | head -10
触れてはいけないもの
chat.db はあなたの実際のメッセージ履歴——テキスト内容、タイムスタンプ、既読情報です。明らかな
ストレージコストを持つ大きなメディアファイルである添付ファイルとは違い、データベース自体は小さく
容量目的で狙う価値はありません。削除したり壊したりすると、デバイス上のみで保持している設定では
サーバー側の復元手段もなく、会話履歴が完全に失われます。この記事で扱っているのは意図的に
Attachments のみで、データベースは対象外です。
もう一度、このパターンを
Messages は、Mail や Photos と並んで、ディスポーザブルなキャッシュではなく本物の同期データを静 かに蓄積していく、Apple 製アプリの三大カテゴリの1つです——このブログの他の部分で扱っている開発者 向けビルドキャッシュとは別のカテゴリとして知っておく価値があります。それぞれへの安全な対処法が異 なるからです。開発者向けキャッシュは自由に削除できますが、この3つは保持設定と選択的な確認を通じ て管理するものです。
DevCruft は、Messages の添付ファイルも他のすべてと一緒にマップ上でサイズ表示し、わざわざ Settings まで見に行く価値があるかどうかを事前に判断できるようにすることを目指して開発中の無料 Mac アプリです。公開時にお知らせを受け取りたい方は ウェイトリスト に登録してください。
Mail での同じ状況については Mail のストレージガイド を参照してください。