Macを使っている方なら、一度は目にしたことがあるであろう謎のファイル「.DS_Store」。
私もずっと、「これなんだろう?」と思いつつ、放置していました。
普段は見えないし、自分で作った覚えもない。それなのに、気づけば勝手にサーバーにアップされていたり、Gitにコミットされていたり、ZIPファイルに紛れていたり。
この謎のファイルが、実は情報漏洩や信頼の損失につながる落とし穴になっているとしたら、どうでしょう?
この記事では、.DS_Storeの正体とそのリスク、そしてMacユーザーがやっておくべき対策を、実例も交えながらわかりやすく解説します。
.DS_Storeってなに?

まずはこの「.DS_Store」の正体から。
.DS_Storeとは、macOSが自動的に生成する隠しファイルです。
正式名称は「Desktop Services Store」。
Macでフォルダを開いたときに、そのフォルダ内の表示方法やアイコンの並び順、ウィンドウの位置といった情報を保存しておくために使われています。Finderの快適な操作をサポートするための、裏方的存在です。
つまり、基本的にはありがたい存在です。
ただ、このファイルが問題なのは、「意図せず外部に渡ってしまう可能性がある」ということです。
なぜ.DS_Storeが情報漏洩のリスクになるのか?

「フォルダの並び順とか、そんなの見られても大したことないでしょ?」
そう思った方、要注意です。
.DS_Storeファイルには、場合によってはフォルダ内のファイル名や構成情報が含まれていることがあります。
たとえば、社内の共有フォルダに「秘案件_クライアントA」や「開発中_新サービス企画」といった名前がついていたら、それが第三者の目に触れたとき、プロジェクト名・顧客名・業務の進行状況まで推測される恐れがあるのです。
また、次のようなケースでは、.DS_Storeがそのまま外部に公開されてしまう可能性があります。
- Webサイトのファイルをサーバーにアップロードしたとき
- GitHubなどでリポジトリを公開したとき
- クライアントにZIPで資料を納品したとき
「そんなファイル、誰も見ないでしょ?」と思いがちですが、Googleにインデックスされる可能性や、セキュリティスキャンツールで検出されることもあるため、案件によってはかなり神経質に扱われるようです。
ちなみに私は、.DS_Storeについてよくわかっていなかったので、気にせずサーバーにアップしていました。
DS_Storeの中身を確認してみよう

では実際に、.DS_Storeの中身を確認してみましょう。
完全に可視化するのは難しいのですが、
簡易的に中身を覗く方法があります。
Macのターミナルを開いて、
以下のコマンドを打ってみてください。
cat .DS_Store
もしくは、もっと詳しく見るならこちら
xxd .DS_Store
よくわからない文字がずらっと並んでいるかもしれませんが、もしもその中に、あなたのフォルダ内のファイル名や、見覚えのあるワードが表示されていたら、うっかり漏れてもおかしくない情報かもしれません。
.DS_Storeによって起こる具体的なリスク
.DS_Storeは、目に見えない地雷とも言えます。
以下に、その代表的なリスクを一覧でまとめてみました。
| リスク | 説明 |
|---|---|
| プロジェクト名やクライアント名が漏洩 | フォルダ名から推測される危険性あり |
| 内部構造の推測 | フォルダの階層・設計意図がバレる場合も |
| セキュリティ意識を疑われる | クライアントにZIP提出→信頼損失 |
| サーバーでの予期せぬ公開 | 全世界に向けて公開状態に |
| Gitリポジトリの汚染 | 毎回コミットされ、差分が増える |
特に制作や開発の現場では、クライアントとの信頼関係に関わる部分でもあるため、.DS_Storeは軽視できない存在です。
.DS_Storeを削除・防止するには?

では、どうすればこの「おせっかいファイル」から身を守れるのでしょうか。
ここでは、具体的な対策を4つご紹介します。
① .gitignoreに追加する(Git対策)
Gitでバージョン管理をしている場合は、.gitignoreに以下を追加しておきましょう。
.DS_Store
これだけで、今後コミットされるのを防げます。
② ターミナルでまとめて削除する
すでに生成されてしまった.DS_Storeを削除したい場合は、以下のコマンドで一括削除が可能です。
find . -name '*.DS_Store' -type f -delete
プロジェクトフォルダのルートで実行すると、その下にあるすべての.DS_Storeが削除されます。
ただ、実行する場所によっては意図しない削除が起きる可能性があるため、実行する前に、どのディレクトリで実行するかをよく確認しましょう。
③ 自動生成を止める(ネットワークフォルダ限定)
macOSの設定を変更して、ネットワーク上のフォルダに限って.DS_Storeを作らないようにする方法もあります。
defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE
このコマンドを実行後、Macを再起動すると有効になります。ただし、ローカルフォルダでは引き続き生成されるようです。
④ FTPやS3アップロード時に除外設定を入れる
Transmit、CyberduckなどのFTPクライアントでは、アップロード時に.DS_Storeを除外する設定ができます。
静的サイトのデプロイ時にも、ビルドスクリプトで除外処理を入れておくと安心です。
ちなみに、FileZillaでの除外設定は下記です。
- FileZillaを起動する。
- メニューバーの「表示」→「ディレクトリリストのフィルタリング」を選択
- 「フィルタールールの編集」をクリック
- 「新しいフィルタールール」を作成(新規をクリック)
- 「.DS_Store除外」のような名前をつける
- ↑で作成したフィルターを選択した状態で、右の欄で条件設定
「名前」「完全一致」「.DS_Store」 - 「ディレクトリリストのフィルタリング」の中の「.DS_Store除外」にチェックを入れる
- ローカルフィルターにある「.DS_Store除外」にチェックが入っていることを確認して適用
まとめ:Macユーザーは「見えない漏洩」に要注意
.DS_Storeは、Macにとっては便利な存在かもしれませんが、制作や開発の現場では、リスクになることが多い存在です。
- 自分では気づかないうちに、機密情報を漏らしてしまっているかもしれない
- 自分の恥ずかしい情報を世界に向けて発信してしまうかもしれない
- クライアントや上司に渡すファイルに混ざっていると、信用を失う可能性もある
でも、ほんの少しの工夫で、
.DS_Storeが持つリスクを防ぐことはできます。
「そういえば自分も」と心配になった方は、この記事を読んでご自身の設定を確認してみてください。
そして私含め、万が一の漏洩リスクなども考えて、これからはフォルダやファイル名などにも気を遣っていきましょう。

