【Mac】.DS_Storeとは何かとその一括削除 | KonNotes

【Mac】.DS_Storeとは何かとその一括削除

Mac
Mac

Macを愛用しているエンジニアやデザイナーにとって、避けては通れない「謎のファイル」があります。それが .DS_Store です。

普段はFinder上で非表示になっているため意識しにくい存在ですが、この小さなファイルが原因でプロジェクトの機密情報が漏洩したり、共同作業のリポジトリを汚染したりすることがあります。

この記事では、.DS_Store の仕組みから、なぜそれが「危険」と言われるのか、そしてプロフェッショナルが使うべき一括削除コマンドについて詳しく解説します。


1. .DS_Store とは何か?

.DS_Store(Desktop Services Store)は、macOSのFinderが自動的に生成する隠しファイルです。

主な役割

このファイルには、そのフォルダをFinderで開いた際の「表示設定」が記録されています。

  • アイコンの配置場所
  • ウィンドウのサイズと位置
  • 表示形式(リスト、アイコン、カラムなど)
  • 背景画像の設定

MacのFinderでフォルダを開くたびに、OSはこのファイルを生成・更新し、ユーザーが次回そのフォルダを開いたときに「前回と同じ見た目」を再現できるようにしています。


2. なぜ「危険」なのか? 3つのリスク

一見、便利なメタデータ保持ファイルに思えますが、開発現場や共有環境では牙を剥くことがあります。

① フォルダ構造の漏洩

.DS_Store はバイナリ形式ですが、解析するとそのフォルダ内に存在していたファイル名の一覧を取得できてしまいます。 もし、Webサーバーの公開ディレクトリに誤ってアップロードしてしまうと、攻撃者はこのファイルを解析することで、「隠しておきたかった管理画面のURL」「バックアップファイル名」を特定できてしまいます。

② Gitリポジトリの汚染

チーム開発において .DS_Store がリポジトリに混入すると、他人のローカル環境の設定が自分の環境に干渉したり、本来不要な差分(Diff)として表示されたりします。これはコードレビューのノイズとなり、生産性を低下させます。

③ セキュリティ・スキャンの検知対象

脆弱性診断ツールなどを利用している場合、公開サーバー上の .DS_Store は「情報の露出(Information Exposure)」として深刻な脆弱性と判定されることが一般的です。


3. ターミナルで一括削除する最強のコマンド

Mac内の不要な .DS_Store を一掃し、今後のリスクをゼロにするために、ターミナルでの一括削除をマスターしましょう。

特に推奨されるのが、以下の条件を組み合わせたコマンドです。

実行コマンド

find . -name '.DS_Store' -type f -ls -delete

コマンドの詳細解説

このコマンドは、強力な武器を組み合わせたような構成になっています。

  • find .: カレントディレクトリ(現在いる場所)から下の階層をすべて探索します。
  • -name '.DS_Store': ファイル名が「.DS_Store」に一致するものだけを対象にします。
  • -type f: 「ディレクトリ」ではなく「ファイル」であることを明示します。
  • -ls(重要) 削除する前に、該当するファイルの情報を一覧表示します。「何を消そうとしているか」を可視化するため、安全性が高まります。
  • -delete: 見つかったファイルを実際に削除します。

注意点: -delete オプションは、最後に記述してください。find コマンドは引数を左から順に評価するため、-delete を先に書くと意図しない動作を招く恐れがあります。


4. 今後の発生を防ぐための「根本対策」

削除しただけでは、Finderでフォルダを開けば再び生成されます。プロフェッショナルな環境を保つための2つの追加対策を紹介します。

A. Gitのグローバル設定で無視する

個別のプロジェクトごとに .gitignore を書くのは面倒です。自分のMac全体で .DS_Store をGitの対象外にする設定を行いましょう。

Bash

# グローバルなignoreファイルを作成(既にある場合は追記)
echo ".DS_Store" >> ~/.gitignore_global

# Gitのグローバル設定に登録
git config --global core.excludesfile ~/.gitignore_global

B. ネットワークドライブでの生成を抑制する

サーバー上の共有フォルダなどに .DS_Store を作らせない設定です。

Bash

defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE

※設定反映にはMacの再起動が必要です。


5. まとめ

.DS_Store はMacの利便性を支える一方で、Web公開やチーム開発においては「火種」になりかねない存在です。

  1. 仕組みを知る: Finderの表示設定ファイルである。
  2. リスクを認識する: ファイル名一覧が漏洩するリスクがある。
  3. コマンドで管理するfind . -name '.DS_Store' -type f -ls -delete を活用する。
  4. 予防する: Gitのグローバル設定で最初から除外する。

これらを徹底することで、あなたの開発環境はよりセキュアでクリーンなものになるはずです。