macOS App · 直接配布

CmpfsCheck

使わないファイルを消さずに、最大 90% 圧縮
ある開発機では実測で 90GB → 25GB(64GB 回収)。

再生成できるファイルだけを狙って安全に。圧縮後も Xcode / アプリはそのまま読める透過圧縮です。

Apple Developer ID 署名・notarized 済み · macOS 15+ / Apple Silicon · SHA-256: bb6984dcd099785abb6e9c7a29610b4d006264cf6ef18cbbd8275d196b779344

Concept

macOS に隠された「透過圧縮」を、安全に引き出す

macOS には APFS 標準の decmpfs という透過圧縮機構が存在します。Apple 自身は OS ファイルの圧縮に活用していますが、ユーザー向け公式ツールはありません。CmpfsCheck はこの隙間を埋め、あまり更新されない古いファイルやフォルダを そのまま残しながらストレージだけ縮める、オンデマンド型のメンテナンス GUI です。常駐せず、ユーザーがボタンを押したときだけ動きます。

Screenshots

画面イメージ

主要な画面のスクリーンショット。画像をクリックすると拡大表示します。

登録一覧(圧縮後)

状態・元/物理サイズ・削減率を 9 カラムで一覧。圧縮済みと未圧縮が一目で分かる

容量解放ウィザード

DerivedData / Archives などプリセット 9 種。圧縮前にサイズを自動計算して表示

圧縮の進捗

経過 / 残り時間・速度・処理中ファイル・メモリ使用量。いつでもキャンセル可

完了サマリー

完了後は削減量を大きく強調(この例で 13.53 GB・63% 削減)

ストレージステータス

マウント済みボリュームと decmpfs 対応可否、空き容量を一望

登録直後(圧縮前)

登録直後はすべて「未圧縮」。ここから一括圧縮で上の状態へ

For Developers

Xcode 開発者の Mac に、数十 GB が眠っている

DerivedData / iOS DeviceSupport / CoreSimulator / Xcode Archives——どれも再生成できるのに、気づけば数十 GB を占有しています。CmpfsCheck はこの「再生成可能なのに大きい」領域を狙い撃ちします。

📦

実測 30GB → 7.5GB

DerivedData・iOS DeviceSupport・CoreSimulator を実測で約 30GB → 7.5GB に回収。再生成可能なものだけを対象にするので、消すリスクはありません。

🔄

圧縮後もそのまま使える

透過圧縮なので、圧縮した DerivedData やシミュレータも Xcode がそのまま読みます。再ビルド不要。署名済みバイナリも SHA-256 往復検証で壊しません。

🗄️

.xcarchive も中身まで

配信済みの Xcode Archives(.xcarchive バンドル)も内部の dSYM / アプリバイナリまで圧縮対象に。静的なアーカイブを安全に縮められます。

⏱️

cron で定期自動圧縮

--auto-recompress でウィンドウを出さずに登録済みを再圧縮。launchd / cron に仕込めば放置で容量を保てます(直近 30 分以内に触ったファイルは安全側でスキップ)。

Benchmark

実測ベンチマーク

実エンジン(LZFSE・往復検証込み)での実測値です。Apple Silicon・コールド計測。

ファイル種別ごとの圧縮(元サイズ → 圧縮後)

バーは圧縮後の大きさ。短いほど縮んでいます。

JSON
3.01 → 0.20 MB
ログ
6.37 → 0.53 MB
CSV
3.63 → 0.44 MB
Markdown
0.18 → 0.11 MB
Swift コード
0.51 → 0.34 MB
既圧縮メディア
8.00 → 8.00 MB

実データ合計(既圧縮メディア除く)は 13.70 MB → 1.62 MB(およそ 1/8 のサイズに)。JPEG / ZIP / 動画など既に圧縮済みのファイルは縮みません(最下段がコントロール)。

開発者ディレクトリの実測例(ある Mac 1 台)

90.1 GB25.3 GB(64.7 GB 回収)
DerivedData
44.9 → 4.2 GB
DeviceSupport
28.2 → 9.4 GB
CoreSimulator
10.7 → 7.0 GB
Caches
6.2 → 4.7 GB
Archives
0.08 → 0.04 GB

実機で実際に圧縮した実測値です(サンプリング推定ではありません)。対象は再生成可能なディレクトリのみ。圧縮率は中身に依存し、DerivedData は特によく縮みます。

圧縮しても、読み込みは遅くならない

コールド(キャッシュ無し)での読み込みは、未圧縮比で 同等〜1.66倍。圧縮で実ディスク I/O が減るぶん、大きいファイルではむしろ速くなります(64MB で 1.66倍 / 4MB で 1.22倍)。小さいファイルは伸長より 1 ファイルあたりのオーバーヘッドが支配的で、同等〜わずかに遅い程度です。内蔵 SSD では差は小さく、外付け SSD / HDD など遅いストレージほど圧縮側が有利です。

Features

主な機能

「ファイルを壊さない」を最優先にした設計。安全装置を重ねた上で、大量ファイルも実用速度で処理します。

🛡️

アトミック差し替え

圧縮 / 解除は別 inode への書き出し + rename(2) による原子的差し替え。クラッシュしても原本は無傷です。

SHA-256 往復検証

圧縮直後に再展開して元バイト列とハッシュ照合。不一致なら原本を残してスキップし、絶対に壊しません。

🏷️

全属性の保護

xattr / ACL / chflags / mode / 所有者 / 作成日時 / mtime / atime まで原本から引き継ぎ。Finder タグや Gatekeeper の quarantine 情報も rename を跨いで失われません。

🪄

容量解放ウィザード

DerivedData / iOS DeviceSupport / Xcode Archives / CoreSimulator / Caches / Logs / Downloads など、開発者がまず削りたい場所をプリセット 9 種で用意。サイズの非同期計算で「どれだけ縮みそうか」が一目で分かります。

🔍

検索モード

最終更新日・サイズ・拡張子・既圧縮除外で候補を絞り込み、ライブ進捗を見ながらキャンセル可能。「N 年以上触っていない大きいファイル」をそのまま登録できます。

📊

9 カラムの状態テーブル

名前 / 種類 / 状態 / 元サイズ / 物理 / 比率 / 期待度(★ 5 段階)/ 最終更新 / 操作 を一覧表示。ソート・フィルタ・列リサイズ対応で、フォルダは展開せず集計だけ見ることもできます。

🗂️

登録レジストリ

ファイル/フォルダをドラッグ & ドロップ、もしくはファイル選択で登録。重複や子フォルダの二重登録は自動で除外します。

LZFSE エンジン

v1 は書き込みを LZFSE に固定(Apple Silicon × decmpfs のスイートスポット)。インライン(小ファイル)/リソースフォーク形式(大ファイル)を applesauce 互換で実装し、kernel が透過的に読めることを確認済み。

🚦

8 並列 + 動的絞り込み

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 と認可状態は設定タブから管理でき、外部送信は一切ありません。

🤖

Apple Intelligence 連携

macOS 26 以降のオンデバイス LLM と連携。「用途 / 削除安全性 / 透過圧縮の効果」を 3 観点で尋ねられ、ファイルメタデータだけをプロンプトに渡してストリーミング応答します。

💻

CLI / headless モード

open -a CmpfsCheck --args --auto-recompress でウィンドウを出さずに登録済みファイルを自動再圧縮。cron / launchd から呼べばスケジュール圧縮も実現できます。直近 30 分以内に更新されたファイルは編集中ガードで保守的にスキップ。

🔄

透過動作

圧縮後もアプリ側は何も意識せず読み書き可能。OS 層で自動的に解凍されるので互換性は完全です。

🔐

Security-Scoped Bookmark

登録パスへのアクセスを bookmark でシリアライズ。再起動後も再選択不要で、移動を検出した場合は stale 解決で追従します。

📵

テレメトリゼロ

外部送信・解析タグ・クラッシュレポート収集は一切なし。現在のバージョンは外部通信を行いません。今後追加予定の自動更新(Sparkle)とライセンス認証についても、通信内容はプライバシーポリシーに明示します。

Requirements

動作環境

最新の Apple Silicon Mac に最適化した、Direct DL 配布の macOS ネイティブアプリです。