← ブログに戻る

macOSでWindowsでも確実に開けるZIPファイルを作る方法

macOSでWindowsでも確実に開けるZIPファイルを作る方法

macOSでWindowsでも確実に開けるZIPファイルを作る方法

macOSで作成したZIPファイルをWindowsユーザーに送ったら「ファイルが壊れていて開けない」「文字化けしている」と言われた経験はありませんか?

この記事では、macOSのターミナルを使って、Windowsでも確実に開けるZIPファイルを作成する方法を紹介します。

問題:macOSで作ったZIPがWindowsで開けない理由

macOSの標準的な方法(Finderの「圧縮」やzipコマンド)で作成したZIPファイルには、以下のような問題があります:

1. 文字化けの問題

macOSとWindowsでは、ファイル名の文字エンコーディングの扱いが異なります:

  • macOSの標準zipコマンド: ファイル名をUTF-8で保存
  • Windows: 日本語環境ではCP932(Shift-JIS)を期待

このミスマッチが、日本語ファイル名の文字化けを引き起こします。

2. macOS固有ファイルの問題

macOSで作成したZIPファイルには、以下のようなmacOS固有のファイルが含まれてしまいます:

  • __MACOSXフォルダ: 謎のフォルダが展開される
  • ._で始まるファイル: 各ファイルに対応する隠しファイルが大量に出現
  • .DS_Storeファイル: Finderの表示設定ファイル

これらのファイルが原因で:

  • Windowsの一部の解凍ソフトでエラーが発生
  • 「ファイルが壊れている」と表示されることがある
  • 不要なファイルがたくさん展開されて混乱する

解決策:dittoコマンドを使う

macOSに標準搭載されているdittoコマンドを使えば、これらの問題をすべて解決できます。追加ソフトのインストールは不要です。

dittoコマンドで作成したZIPファイルは:

  • ✅ 日本語ファイル名が文字化けしない
  • __MACOSXフォルダが含まれない
  • ._で始まるmacOS固有ファイルが除外される
  • ✅ Windowsで「ファイルが壊れている」エラーが出ない
  • ✅ Windows 10/11の標準機能で正常に解凍できる

基本コマンド

ditto -c -k --norsrc --keepParent フォルダ名 出力ファイル名.zip

オプションの説明:

  • -c: アーカイブを作成
  • -k: PKZip形式(ZIP)で作成
  • --norsrc: macOS固有のリソースファイルを完全に除外
  • --keepParent: 親フォルダを含める

実際の使用例

デスクトップのフォルダをZIP化する

デスクトップにある「Documents」フォルダをZIPにする場合:

ditto -c -k --norsrc --keepParent ~/Desktop/Documents ~/Desktop/Documents.zip

これでDocuments.zipがデスクトップに作成され、解凍するとDocumentsフォルダが展開されます。Windows PCでも文字化けなく問題なく解凍できます。

日本語フォルダ名でも大丈夫

日本語のフォルダ名も問題なく処理できます:

ditto -c -k --norsrc --keepParent ~/Desktop/資料 ~/Desktop/資料.zip

スペースや特殊文字が含まれる場合は、クォートで囲むと確実です:

ditto -c -k --norsrc --keepParent ~/Desktop/"プロジェクト 資料" ~/Desktop/"プロジェクト 資料.zip"

なぜdittoだと文字化けしないのか?

ここからは、dittoコマンドがWindows互換性が高い理由を技術的に解説します。すぐに使いたい方は、この部分を飛ばしても問題ありません。

1. UTF-8フラグの適切な設定

dittoコマンドは、ZIP形式のUTF-8フラグを適切に設定します。

ZIP仕様(6.3.0以降)には「General Purpose Bit Flag」というものがあり、11ビット目がONの場合「このファイル名はUTF-8です」という意味になります。最近のWindowsのZIP解凍機能(Windows 10以降)は、このフラグを見てUTF-8として正しく処理できます。

2. macOS固有の問題を完全に回避

--norsrcオプションは、macOS特有のファイルをZIP内に一切含めません:

除外されるファイル:

  • .DS_Store: Finderの表示設定ファイル
  • ._で始まるファイル: リソースフォーク(macOSのメタデータ)
  • __MACOSXフォルダ: これらのファイルをまとめる隠しフォルダ

これらのファイルが含まれていると、Windows側で以下のような問題が起こります:

  • 謎のファイルが大量に表示される
  • 解凍ソフトによっては「ファイルが壊れている」とエラーが出る
  • __MACOSXというフォルダが出現して混乱する

dittoコマンドの--norsrcオプションを使えば、これらのファイルを完全に除外した、クリーンなZIPファイルが作成されます。

3. Apple公式の互換性重視ツール

dittoはAppleが「WindowsとmacOS間でファイルをやり取りする」ことを想定して作ったツールなので、最初から互換性が考慮されています。

# 標準zipコマンド(Windowsで問題が起きる)
zip -r output.zip folder/
→ UTF-8フラグ設定が不十分
→ __MAXOSXフォルダや._ファイルが含まれる
→ Windowsで「壊れている」と表示されることがある

# dittoコマンド(Windows互換性が高い)
ditto -c -k --norsrc --keepParent folder/ output.zip
→ UTF-8フラグを適切に設定
→ macOS固有ファイルを完全に除外
→ Windowsで確実に開ける

フォルダ名とZIP名の関係

ZIP名とフォルダ名を揃える

ditto -c -k --norsrc --keepParent ~/Desktop/任意の名前 ~/Desktop/任意の名前.zip

結果:

  • ZIPファイル名: 任意の名前.zip
  • 解凍後のフォルダ名: 任意の名前

解凍後のフォルダ名を変更したい場合

--keepParentオプションを使うと、元のフォルダ名がZIP内に保持されます。

例えば、以下のようにZIP名だけ変更しても:

ditto -c -k --norsrc --keepParent ~/Desktop/move ~/Desktop/配布用ファイル.zip

解凍するとmoveフォルダが出てきます(元の名前のまま)。

解凍後のフォルダ名も変更したい場合は、元のフォルダ名を変更してからZIP化します:

# フォルダをコピーして名前変更
cp -r ~/Desktop/move ~/Desktop/配布用ファイル

# ZIP化
ditto -c -k --norsrc --keepParent ~/Desktop/配布用ファイル ~/Desktop/配布用ファイル.zip

# 不要ならコピーを削除
rm -rf ~/Desktop/配布用ファイル

もっと便利に使う:エイリアスの登録

よく使う場合は、エイリアスを登録すると便利です。

エイリアスの設定方法

  1. ターミナルでホームディレクトリの設定ファイルを開く:
nano ~/.zshrc

(古いmacOSの場合は~/.bash_profileを使用)

  1. 以下の行を追加:
alias winzip='ditto -c -k --norsrc --keepParent'
  1. ファイルを保存して終了(Ctrl+O → Enter → Ctrl+X)

  2. 設定を反映:

source ~/.zshrc

エイリアスの使い方

設定後は、簡単なコマンドでZIP化できます:

winzip ~/Desktop/Documents ~/Desktop/Documents.zip

既存のZIPファイルを作り直す場合

すでにmacOSの標準機能で作成したZIPファイルがあり、Windowsで開けないと言われた場合は、以下の手順で作り直せます:

# 1. デスクトップに移動
cd ~/Desktop

# 2. 既存のZIPを解凍
unzip 既存のファイル名.zip

# 3. dittoコマンドでWindows互換ZIPを作成
ditto -c -k --norsrc --keepParent フォルダ名 新しいファイル名.zip

# 4. 不要なファイルを削除(任意)
rm 既存のファイル名.zip
rm -rf フォルダ名

実例:

cd ~/Desktop
unzip 税理士用.zip
ditto -c -k --norsrc --keepParent 税理士用 税理士用_clean.zip
rm 税理士用.zip
rm -rf 税理士用

これで__MACOSXフォルダや._ファイルが完全に除外された、Windows互換のZIPファイルが作成されます。

まとめ

macOSからWindowsユーザーにZIPファイルを送る際は、必ずdittoコマンドを使いましょう:

ditto -c -k --norsrc --keepParent フォルダ名 出力名.zip

dittoコマンドを使うべき理由:

  • ✅ 日本語ファイル名が文字化けしない
  • __MACOSXフォルダや._ファイルが含まれない
  • ✅ Windowsで「ファイルが壊れている」エラーが出ない
  • ✅ Windows 10/11で確実に開ける
  • ✅ macOSに標準搭載されており、追加インストール不要

**macOSの標準的な方法(Finderの「圧縮」やzipコマンド)は、Windowsユーザーに送るZIPファイルには使わないでください。**トラブルの原因になります。

よく使う方は、エイリアスを登録してwinzipなどの短いコマンドで使えるようにすると便利です。

これで、Windowsユーザーとのファイルのやりとりでトラブルが起きることはなくなります!