起きる症状
MacのFinderでフォルダを右クリック→「フォルダ名.zipに圧縮」で作ったZIPには、.DS_Store(ウィンドウの表示設定を保存するファイル)と __MACOSX/ フォルダ(リソースフォークを保持する隠しフォルダ)が含まれます。Windowsで展開すると __MACOSX フォルダが見えてしまい、受け取り側が「余計なファイルが入っている」と混乱することがあります。
ホスティングサービスによっては .DS_Store が原因でZIPの解析に失敗するケースも報告されています。また、.DS_Store にはディレクトリ構造やファイル名の一部が記録されているため、セキュリティ上の観点から公開HTMLのZIPに含めるべきではありません。特に社外向けに共有するZIPには、隠しファイルを除外する手順を標準化することを推奨します。
- 相手がログインなしで開ける状態か確認する
- PCとスマホで最低1回ずつ表示を確認する
- 内部情報・個人情報・不要な外部送信が残っていないか見る
- レビュー期限と修正時の差し替え方を決めておく
正しい構成
隠しファイルを含まないZIPを作るには、Finderの右クリックではなくターミナルで「zip -r site.zip . -x '*.DS_Store' -x '__MACOSX/*'」を実行します。このコマンドでカレントディレクトリをZIPに圧縮しつつ .DS_Store と __MACOSX を除外できます。作業前に対象フォルダ直下に移動してから実行してください。
ZIPを作成したら「unzip -l site.zip」で内容物を一覧表示し、__MACOSX や .DS_Store が含まれていないことを確認します。出力の1行目が index.html またはアセットフォルダのようなプロジェクトファイルであればOKです。ここで .git フォルダが含まれていないかも同時にチェックしてください。
- ZIP直下または指定階層にindex.htmlがあるか確認する
- 相対パスの画像・CSS・JSが同梱されているか見る
- 不要な隠しファイルや作業ファイルを除く
- 圧縮前のフォルダ名に日本語や空白を入れすぎない
圧縮前チェック
圧縮する前に対象フォルダで「find . -name '.DS_Store' -delete」を実行し、ネストしたサブフォルダ内の .DS_Store も一括削除します。Finderでは隠しファイルが見えないため(Shift+Command+. で表示切り替え可能)、削除したつもりでも残っていることがあります。find コマンドを使うと確実に全階層の .DS_Store を除去できます。
フォルダ名や内部ファイル名に日本語・スペースが含まれている場合、Windowsで展開したときに文字化けするリスクがあります。ZIPを社外や異なるOSのユーザーへ送る場合は、フォルダ名を英数字とハイフンのみに変更してから圧縮することを推奨します。ファイル数が多い場合は一括リネームツールを活用してください。
- HTML内の外部script・form action・iframeを確認する
- APIキーやトークンらしき文字列がないか検索する
- 画像・CSS・JSのパスが公開後も解決できるか見る
- noindexと認証を混同せず、必要なら両方設定する
アップロード後確認
アップロード後にURLを開いてページが正常に表示されれば、隠しファイルが原因でのエラーは発生していません。念のためブラウザの開発者ツールのNetworkタブで不審なファイルへのリクエストが発生していないかを確認します。.DS_Store へのリクエストが記録されていれば、HTMLに相対パスでの参照が残っている可能性があります。
スマホでも同じURLを開いてレイアウトに問題がないかを確認します。隠しファイルの混入はスマホ表示に直接影響することはほとんどありませんが、ページ全体が正しく表示されるかをPCとスマホの両方で確認しておくことで、ZIP構成以外の問題も同時に発見できます。
- HTML内の外部script・form action・iframeを確認する
- APIキーやトークンらしき文字列がないか検索する
- 画像・CSS・JSのパスが公開後も解決できるか見る
- noindexと認証を混同せず、必要なら両方設定する
よくある質問
Finderの「フォルダをZIPに圧縮」を使い続けてよいですか?
社外共有や公開用途では推奨しません。隠しファイルが混入するため、ターミナルで除外オプション付きのzipコマンドを使うか、専用の圧縮ツールを使ってください。
.DS_Storeが混入したZIPをすでに共有してしまった場合はどうすればよいですか?
隠しファイルを除いたZIPを作り直してアップロードし直してください。ギガサイト便では差し替えアップロード後も同じURLが維持されるため、相手へURLの再送は不要です。
GitHubのDownload ZIPボタンで取得したZIPにも隠しファイルは含まれますか?
GitHubのDownload ZIPには.DS_Storeは含まれません。ただし.gitignoreに登録されていないファイルはすべて含まれるため、APIキーなどが混入していないか確認してください。