MacでZIP圧縮すると .DS_Store が入る理由と削除方法
Macで資料をZIP圧縮して、Windowsを使っているクライアントに送付したとき、こんなことを言われた経験はありませんか?
結論から言うと、これは不正なファイルではありません。しかし、「Macユーザー特有の配慮不足」と受け取られてしまう可能性がある、厄介なファイルです。
また、似たような不要ファイルとして __MACOSX というフォルダも生成されることがありますが、これもWindowsユーザーにとってはノイズでしかありません。
この記事では、なぜこのファイルが勝手に作られるのか、技術的な削除方法、そして再発を防ぐための運用ルールについて解説します。
.DS_Store の正体とは?
.DS_Store(Desktop Services Store)は、macOSのFinderが自動的に生成する隠しファイルです。
このファイルには、フォルダごとの表示設定が保存されています。
- アイコンの並び順
- ウィンドウのサイズ
- 背景の設定
Macを使っているときは、Finderがこの設定を読み取ってくれるので便利ですが、隠しファイルなので普段は見えません。
しかし、Windowsなどの他のOSでは隠しファイルとして扱われないことが多く、ZIPを解凍した瞬間に「怪しく不要なファイル」として可視化されてしまうのです。
手動で削除する方法(ターミナル)
Mac標準の機能を使い、完全にこれらの不要ファイルを消してから圧縮するには、黒い画面(ターミナル)を使うのが最も確実です。
方法1: zipコマンドの除外オプションを使う
リソースフォーク(__MACOSX)も同時に除去するために -X オプションも併用するのがベストプラクティスです。
zip -r -X output.zip target_folder -x "*.DS_Store" -r: 再帰的にディレクトリを圧縮-X: リソースフォーク(__MACOSXなど)を除外-x "*.DS_Store": .DS_Storeファイルを除外
方法2: dot_clean コマンドの真実
よく「dot_clean で .DS_Store を消せる」と紹介されますが、正確にはこれは「AppleDoubleファイル(._)をオリジナルファイルにマージ(統合)する」ためのコマンドです。
dot_clean -m target_folder
これにより ._ファイル名 は消えますが、.DS_Store 自体が(Finderが開いている限り)即座に再生成されることもあります。あくまで「属性情報の整理」として使うのが正解です。
方法3: findコマンドで一括削除(推奨)
確実に消し去りたい場合は find コマンドが最強です。
find . -name ".DS_Store" -delete ※誤って必要なファイルを消さないよう、実行ディレクトリには十分注意してください。
確認方法:本当に消えたかチェックする
圧縮後のZIPの中身をリスト表示して確認します。
zipinfo output.zip | grep .DS_Store 何も表示されなければ成功です。
【比較】手動作業 vs 専用アプリ
毎回コマンドを打つのと、専用アプリを使うのでどれくらい差が出るのか、実際の作業フローで比較してみました。
| 工程 | 手動(ターミナル) | Pon!とZip! |
|---|---|---|
| 1. 準備 | ターミナルを起動し、cdコマンドで移動 (約30秒) | アプリを起動 (2秒) |
| 2. 実行 | コマンド入力(zip -r -X...) (約1分) | D&Dで放り込むだけ (3秒) |
| 3. 確認 | zipinfoで中身を目視確認 (約1分) | 自動で完了 (0秒) |
| 合計時間 | 約3分 / 回 | 約5秒 / 回 |
手動コストの年間試算
- 1日1回送信 × 20営業日 = 月間 60分 の無駄
- 時給3,000円換算で、年間 約36,000円 の損失
何より、コマンドの打ち間違いによる「再送」のリスクと精神的ストレスがゼロになるのが最大のメリットです。
「もっと直感的に、ドラッグ&ドロップだけでこの手間をゼロにしたい」
そう思うのが、効率化を求めるエンジニアやクリエイターとして自然な思考です。
【推奨】専用アプリで自動削除する
この「Macの余計なファイル問題」を解決するために開発されたのが、「Pon!とZip!」です。
よくある質問 (FAQ)
- Q. .DS_Storeの生成自体を無効化できませんか?
-
A. ネットワークドライブに関しては以下のコマンドで抑制可能ですが、ローカルフォルダでの完全な無効化は推奨されていません。
defaults write com.apple.desktopservices DSDontWriteNetworkStores trueMacのFinder機能(アイコン位置の記憶など)が動作しなくなるため、生成自体は許容し、「共有時に削除する」運用が現実的です。
- Q. Gitの管理対象になって困っています。
-
A. プロジェクトのルートにある
.gitignoreファイルに.DS_Storeを記述してください。また、既にコミットされてしまった場合はgit rm --cached .DS_Storeでインデックスから削除する必要があります。
まとめ
.DS_Store はMacにとっては大切な設定ファイルですが、Windowsユーザーにとっては怪しく不要なファイルです。
ビジネスシーンでのデータ受け渡しでは、相手の環境を考慮した「クリーンなデータ」を作ることが信頼につながります。
難しいコマンド操作で時間を浪費するよりも、専用ツールを使ってスマートに解決しましょう。