macOS に隠れていた「APFS 透過圧縮 (decmpfs)」を、GUI から扱えるコールドストレージ管理ツール。
アトミック差し替え + 往復検証で、ファイルを絶対壊さず容量だけ削減。
macOS には APFS 標準の decmpfs という透過圧縮機構が存在します。Apple 自身は OS ファイルの圧縮に活用していますが、ユーザー向け公式ツールはありません。CmpfsCheck はこの隙間を埋め、あまり更新されない古いファイルやフォルダを そのまま残しながらストレージだけ縮める、オンデマンド型のメンテナンス GUI です。常駐せず、ユーザーがボタンを押したときだけ動きます。
主要な画面のスクリーンショット(順次差し替え予定)。
9 カラムで状態・サイズ・削減率・期待度を一覧
DerivedData / Archives などプリセット 9 種から一括登録
期間・サイズ・拡張子で候補を発掘
進捗 + メモリ使用量、完了後は削減量を強調表示
マウント済みボリュームと cmpfs 対応可否を一望
独立ウィンドウのログ画面、TSV コピーにも対応
「ファイルを壊さない」を最優先にした設計。安全装置を重ねた上で、大量ファイルも実用速度で処理します。
圧縮 / 解除は別 inode への書き出し + rename(2) による原子的差し替え。クラッシュしても原本は無傷です。
圧縮直後に再展開して元バイト列とハッシュ照合。不一致なら原本を残してスキップし、絶対に壊しません。
xattr / ACL / chflags / mode / 所有者 / 作成日時 / mtime / atime まで原本から引き継ぎ。Finder タグや Gatekeeper の quarantine 情報も rename を跨いで失われません。
DerivedData / iOS DeviceSupport / Xcode Archives / CoreSimulator / Caches / Logs / Downloads など、開発者がまず削りたい場所をプリセット 9 種で用意。サイズの非同期計算で「どれだけ縮みそうか」が一目で分かります。
最終更新日・サイズ・拡張子・既圧縮除外で候補を絞り込み、ライブ進捗を見ながらキャンセル可能。「N 年以上触っていない大きいファイル」をそのまま登録できます。
名前 / 種類 / 状態 / 元サイズ / 物理 / 比率 / 期待度(★ 5 段階)/ 最終更新 / 操作 を一覧表示。ソート・フィルタ・列リサイズ対応で、フォルダは展開せず集計だけ見ることもできます。
ファイル/フォルダをドラッグ & ドロップ、もしくはファイル選択で登録。重複や子フォルダの二重登録は自動で除外します。
v1 は書き込みを LZFSE に固定(Apple Silicon × decmpfs のスイートスポット)。インライン(小ファイル)/リソースフォーク形式(大ファイル)を applesauce 互換で実装し、kernel が透過的に読めることを確認済み。
I/O 律速を踏まえた 8 並列固定。バッチ内の最大ファイルサイズに応じてメモリ圧迫を避ける向きに 8 / 4 / 2 / 1 へ自動で絞り込みます。
50,000 件級でも数十 MB/s(LZFSE のネイティブ性能級)。一括中は SwiftData をメモリ蓄積に切り替え、完了後 1 トランザクションで反映して MainActor の固まりを防ぎます。
シンボリックリンク / ハードリンク / 4KB 未満 / 過去に「縮みません」と記録されたファイルは inspect 時点で ◌ 圧縮不可 に分類。「未圧縮」カウントから外し、再試行も行いません。
iCloud Drive / Dropbox / OneDrive 等が本体を退避した dataless ファイル(DATALESS_CMPFS_TYPE)を識別。「☁ クラウド退避中」と表示し、対処方法を popover で案内します。
iCloud Drive / File Provider 系フォルダの登録時に「ローカル容量しか減らない」「再同期で剥がれる」等のリスクを提示してから続行 / キャンセルを選べます。
経過時間 / 残り時間 / 速度 / 並列度 / 累計削減量に加え、自プロセスのメモリ使用量を搭載 RAM 比でリアルタイム可視化。完了時には削減量を大きく強調するサマリーカードを表示します。
実行日時 / 操作 / パス / 圧縮前後 / 所要時間 / 成否を SwiftData に記録。独立ウィンドウのログ画面でフィルタ・検索・TSV コピー、保持ポリシー(90 日 / 10,000 件・設定で変更可)に従って自動クリーンアップします。
マウント済みボリュームを一覧化。ハードウェア情報 / FS 情報 / マウントフラグ / 20 以上の機能能力フラグを表示し、decmpfs 対応可否を強調します。
30 日経過すると「またメンテどうですか」をローカル通知。ON/OFF と認可状態は設定タブから管理でき、外部送信は一切ありません。
macOS 26 以降のオンデバイス LLM と連携。「用途 / 削除安全性 / 透過圧縮の効果」を 3 観点で尋ねられ、ファイルメタデータだけをプロンプトに渡してストリーミング応答します。
open -a CmpfsCheck --args --auto-recompress でウィンドウを出さずに登録済みファイルを自動再圧縮。cron / launchd から呼べばスケジュール圧縮も実現できます。直近 30 分以内に更新されたファイルは編集中ガードで保守的にスキップ。
圧縮後もアプリ側は何も意識せず読み書き可能。OS 層で自動的に解凍されるので互換性は完全です。
登録パスへのアクセスを bookmark でシリアライズ。再起動後も再選択不要で、移動を検出した場合は stale 解決で追従します。
外部送信・解析タグ・クラッシュレポート収集は一切なし。ライセンス検証と Sparkle 自動更新の通信のみ(いずれもプライバシーポリシーで明示)。
最新の Apple Silicon Mac に最適化した、Direct DL 配布の macOS ネイティブアプリです。