macOS App · 無料

ShrinkCheck

旧名 CmpfsCheck

使わないファイルを消さずに、容量だけ減らす。
無料で使えます。

圧縮したあとも、アプリや Xcode はこれまでどおりファイルを読めます。圧縮はいつでも元に戻せます。

CmpfsCheck は ShrinkCheck に名前を変えて、v1.0.0 から無料になりました。

Apple Developer ID 署名・notarize 済み · macOS 15 以降 / Apple Silicon · SHA-256: 6cd0e227197c76a08fab1fc424bfd9e91d756aefa135d3b939da680a9064d27b

お知らせ

CmpfsCheck は ShrinkCheck になりました

v1.0.0 から、アプリの名前を CmpfsCheck から ShrinkCheck に変えました。同時に、無料になりました。

旧版(CmpfsCheck 0.9.x)をお使いの方は、ShrinkCheck に切り替えてください。旧版は 2027 年 1 月 1 日から、新しい圧縮ができなくなります(圧縮済みファイルの解除と閲覧は、そのまま使えます)。

切り替えの手順

  1. ShrinkCheck をダウンロードして、アプリケーションフォルダに入れます。
  2. 起動します。登録した場所や履歴、設定はそのまま引き継がれます。
  3. 旧版の CmpfsCheck を削除します。アプリケーションフォルダの CmpfsCheck.app をゴミ箱へ入れてください。(旧版が残っていると、ShrinkCheck の起動時にお知らせします。自動では消しません。)

cron や launchd で自動圧縮を使っている方

コマンドのアプリ名を書き換えてください。

終了コードを受け取りたい場合のおすすめの書き方は、コマンドラインでの使い方をご覧ください。

すでに圧縮したファイルは、そのまま使えます。やり直しは要りません。旧版が使っていた試用期間の記録は、ShrinkCheck を初めて起動したときに自動で削除されます。

Concept

macOS に隠れている「透過圧縮」を、安全に使えるようにしました

macOS の APFS には、decmpfs という透過圧縮のしくみがあります。Apple は OS のファイルに使っていますが、一般の人が使える公式のツールはありません。ShrinkCheck は、あまり更新しない古いファイルやフォルダを、そのまま残しながら小さくします。常駐はしません。あなたが操作したときだけ動きます。

Safety

ファイルを壊さないために、3 つのことをしています

ShrinkCheck は、ファイルが壊れないことを何より優先します。

✅

1 つずつ確かめながら圧縮します

圧縮は、別の場所に書き出してから入れ替える方法で行います。途中で止まっても、元のファイルは無傷です。圧縮したあとは、すぐに読み戻して元の内容と照合します。一致しなければ、元のファイルを残します。

🩺

動作確認(自己診断)

macOS やアプリを更新して最初に起動したとき、ShrinkCheck は、このアプリ自身が作ったテスト用のファイルで、圧縮と解除が正しくできるかを確かめます。数秒で終わります。あなたのファイルには触れません。確認が済むまで、新しく圧縮することはできません。合格しなかった場合は、理由と対処を画面でお知らせします。

🚦

停止情報

公開したあとに問題が見つかったときは、新しいファイルの圧縮を一時的に止めることがあります。このとき、圧縮の解除と、一覧の閲覧は、いつでも使えます。停止の知らせは、画面の上部に「次にすること」つきで表示されます。

停止情報の確認では、停止すべきバージョンの一覧と最新バージョンの番号が書かれた公開ファイル(status.json)を受け取るだけです。起動時と、起動中の約 24 時間ごと、そして cron からの自動再圧縮の前に取得します。アプリから送る情報はありません。あなたや Mac を特定できる情報、アプリや OS のバージョン、ファイルの情報は、リクエストに含めません。Cookie も使いません。この確認は、設定でオフにできます。オフにすると、停止の知らせと新バージョンの案内は届きません。圧縮と解除は、通信がなくても使えます。詳しくはプライバシーポリシーをご覧ください。

Screenshots

画面イメージ

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

登録一覧(圧縮後)

状態、元のサイズ、実際の使用量、削減の割合(「オリジナルの 25%」のように表示)を一覧で確認。上の案内バーが、次にすることを 1 つだけ教えてくれます。まだ中身を確認していないフォルダは、時計のマークで分かります。

容量解放ウィザード

DerivedData や Archives など、よくある場所をおすすめとして用意。圧縮する前に、どれだけ縮みそうかを計算して表示します。ツールバーのボタンからいつでも開けます。

圧縮の進捗

経過時間、残り時間、処理中のファイルを表示。いつでもキャンセルできます。

完了サマリー

完了後は、減った容量を大きく表示します。

ストレージステータス

マウント中のボリュームと、透過圧縮が使えるかどうか、空き容量を一覧で確認。

登録直後(圧縮前)

登録した直後は、すべて「未圧縮」。案内バーの「すべて圧縮」を押すと、まとめて圧縮します。

右クリックと下部バー

選んだものだけ圧縮するときは、右クリック、または画面下のバーから。何も選んでいない間は、バーが選び方を案内します。

確認前のフォルダの圧縮予約

確認が終わっていないフォルダも、すぐ圧縮を予約できます。そのフォルダの確認を先に行い、終わり次第、圧縮を始めます。

For Developers

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

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

📦

再生成できるのに大きい場所をねらえます

DerivedData、iOS DeviceSupport、CoreSimulator など、再生成できるのに大きくなりがちな場所を、おすすめとして用意しています。

🔄

圧縮したあとも、そのまま使えます

透過圧縮なので、圧縮した DerivedData やシミュレータも Xcode がそのまま読みます。圧縮のたびに、読み戻して元の内容と照合します。

🗄️

.xcarchive も中身まで

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

⏱️

cron で定期的に自動圧縮

open -a ShrinkCheck --args --auto-recompress で、ウィンドウを出さずに登録済みの場所を再圧縮します。launchd や cron に入れておけば、放っておいても容量を保てます。直近 30 分以内に触ったファイルは、安全のためスキップします。自動圧縮の前にも、動作確認と停止情報の確認を行います。旧版から切り替えた方は、コマンドの名前を ShrinkCheck に書き換えてください。設定例と終了コード →

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、動画など、すでに圧縮されているファイルは縮みません(最下段がコントロール)。縮まないと分かったファイルは、圧縮せずにそのまま残します。

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

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

Features

主な機能

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

🩺

動作確認と停止情報

macOS やアプリを更新したあとに、圧縮と解除が正しくできるかを自分で確かめます。公開後に問題が見つかったときは、新しい圧縮だけを止めます。詳しくは「安全のしくみ」へ。

🛡️

アトミック差し替え

圧縮 / 解除は別 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 年以上触っていない大きいファイル」をそのまま登録できます。

📊

状態が一目で分かる一覧

名前、種類、状態、元のサイズ、実際の使用量、削減率、期待度(★ 5 段階)、最終更新を一覧で表示します。並べ替えや絞り込みができ、フォルダは開かなくても合計だけ見られます。操作は、画面上部の案内バー、右クリック、画面下のバーに集めました。行ごとのボタンはありません。

🗂️

登録レジストリ

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

⚡

LZFSE エンジン

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

🚦

8 並列で処理

ディスクの読み書きが処理の速さを決めるので、同時に処理するファイルは 8 つに固定しています。画面と cron のどちらでも、同じしくみで動きます。いつでもキャンセルできます。

💪

数万件でも固まりません

50,000 件級でも、画面が止まらずに処理できます。進捗を見ながら、いつでもキャンセルできます。

⏳

確認前のフォルダも、すぐ圧縮を予約

確認が終わっていないフォルダを選んで「圧縮(確認後)」を押すと、そのフォルダの確認を先に行い、終わり次第、自動で圧縮を始めます。待っている間も、ほかの操作はそのまま使えます。予約はいつでも取り消せます。

🏎️

フォルダの確認が速くなりました

フォルダの中身を確認する処理を見直し、確認が速くなり、使うメモリも減りました。6.8 万件のファイルを含む DerivedData で、40 秒以上かかっていた確認が約 2 秒になりました。確認中・未確認のフォルダは、アイコンで分かります。

🚫

縮まないものは、はじめから対象外

シンボリックリンク、ハードリンク、4 KB 未満のファイル、過去に「縮みません」と分かったファイルは、「圧縮不可」として扱い、未圧縮の数に入れません。

👯

Finder の複製(クローン)は圧縮しません

Finder の「複製」などで作られた APFS のクローンは、元のファイルと中身を共有しています。圧縮しても空き容量は増えないので、「共有中」として対象から外します。共有がなくなったものは、また対象に戻ります。調べられなかったときは、安全のため圧縮しません。

☁️

クラウド退避ファイルの検出

iCloud Drive / Dropbox / OneDrive 等が本体を退避した dataless ファイル(DATALESS_CMPFS_TYPE)を識別。「☁ クラウド退避中」と表示し、対処方法を popover で案内します。

⚠️

クラウド同期フォルダの警告

iCloud Drive / File Provider 系フォルダの登録時に「ローカル容量しか減らない」「再同期で剥がれる」等のリスクを提示してから続行 / キャンセルを選べます。

📈

進捗 + 成果サマリー

経過時間 / 残り時間 / 速度 / 並列度 / 累計削減量に加え、自プロセスのメモリ使用量を搭載 RAM 比でリアルタイム可視化。完了時には削減量を大きく強調するサマリーカードを表示します。

📝

履歴ログ

実行日時 / 操作 / パス / 圧縮前後 / 所要時間 / 成否を記録。独立ウィンドウのログ画面でフィルタ・検索・TSV コピー、保持ポリシー(90 日 / 10,000 件・設定で変更可)に従って自動クリーンアップします。

💾

ストレージステータス画面

マウント済みボリュームを一覧化。ハードウェア情報 / FS 情報 / マウントフラグ / 20 以上の機能能力フラグを表示し、decmpfs 対応可否を強調します。

🔔

月次リマインダー

30 日経過すると「またメンテどうですか」をローカル通知。ON/OFF と認可状態は設定タブから管理でき、外部送信は一切ありません。

🤖

Apple Intelligence 連携

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

💻

CLI / headless モード

open -a ShrinkCheck --args --auto-recompress で、ウィンドウを出さずに登録済みの場所を自動で再圧縮します。cron や launchd から呼べば、定期的な圧縮もできます。直近 30 分以内に更新されたファイルは、編集中の可能性があるのでスキップします。実行前に、動作確認と停止情報の確認を行います。詳しい使い方 →

🔄

透過動作

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

🔐

Security-Scoped Bookmark

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

🌐

日本語と英語に対応

画面、通知、コマンドの出力が、日本語と英語で表示されます。

📵

利用状況の送信はありません

解析タグ、行動の追跡、クラッシュレポートの送信は、いっさいありません。アプリが行う通信は、停止情報と最新バージョンの確認(公開ファイルを受け取るだけ)だけです。アプリから送る情報はなく、設定でオフにもできます。詳しくはプライバシーポリシーをご覧ください。

Requirements

動作環境

最新の Apple Silicon Mac に合わせた、直接配布の macOS アプリです。

Related

あわせてどうぞ

同じ作者の macOS アプリ。