分析と広告のためのCookie
分析と広告のためにCookieを使っており、どちらもGoogleに送られます。拒否しても、目に見える動作は何も変わりません。プライバシーポリシーを読む
ZIP
どの OS にも最初から入っている書庫形式です。
ZIP
ZIP はコンテナです。誰か別のものが符号化した流れを、中に収めておく外殻です。 プログラム間のデータ受け渡しと完成したファイルの受け渡しのために使われます。
拡張子は .zip、正式名称は ZIP Archive です。ただしどちらも、そのファイルが中に何を持てるかほどには多くを語りません。このページの残りは、その中身についての話です。
PKWARE が 1989 年に公開しました。 仕様は APPNOTE.TXT です。
これだけ長く読まれ続けてきた形式なら、10 年後に取り出したいものを預けても大丈夫です。
仕様書がそのまま公開されているので、中身を推し量るのではなく文書を読んで実装できます。この形式が数多くのプログラムに載っているのはそのためであり、20 年前に書かれたファイルが今も開けるのもそのためです。ただし「仕様が公開されている」ことと「使用料が要らない」ことは別の話です。中でコーデックを包んでいる形式では、特許のライセンスは仕様書が答えていない別の問題として残ります。
ZIP ファイルは中身をそのまま保存します。保存し直しても何も変わらないので、開いて、直して、また保存する——それを何度繰り返しても劣化は積み上がりません。これが、渡すための形式ではなく作業のための形式である理由です。
ZIP ファイルはディレクトリをまるごと保存します。名前も、フォルダーも、そのあいだの構造も。メールの添付でフォルダーの代わりが務まるのはそのためです。
一度に扱う範囲は 32 KB です。繰り返しがこの幅の中に収まっていて初めて、それを圧縮で畳めます。
この数ひとつで、書庫形式どうしの違いのほとんどが説明できます。範囲が広ければ多くの繰り返しを見つけられ、そのぶん時間とメモリーを使います。取引はそれだけです。
ZIP ファイルは壊れたファイルが黙って誤読されるのではなく、壊れていると分かるようにするチェックサムと必要なら暗号化を備えています。
暗号化されたファイルは、変換の前に解除する必要があります。ここでも、ほかのどこでも同じです。パスワードはコンバーターが通り抜けられる類のものではありませんし、通り抜けられると称するものには、そもそもファイルを渡すべきではありません。
Windows Explorer、Finder、7-Zipが読めますし、同じ種類のプログラムならたいてい読めます。
ファイルが開かないとき、形式が悪いことはめったにありません。たいていはプログラムのほうが形式より古いのです。もっと古い形式に変換してしまうのが確実な逃げ道で、このサイトの残りの部分はそのためにあります。
これを読めるブラウザーはありません。
これを変換するいちばんよくある理由がこれです。形式が悪いのではありません。ファイルを見せたい場所が、それを読めないというだけのことです。
ZIP は、開いて手を入れるために作られています。作業が続いているあいだはこの形式でファイルを持ち、完成したものが必要になるたびに、ここから書き出してください。
ZIP は、何もインストールせずにどのオペレーティングシステムでも開けるただ一つのアーカイブ形式です。Windows は 1998 年から扱っていて、macOS は最初のリリースから、あらゆるスマートフォンやメールクライアント、ブラウザーもこれを扱えます。それがこの形式を選ぶ理由のすべてで、とても良い理由です。
ほかのアーカイブ形式はみな、何かと引き換えにそれを手放しています。RAR はより良く圧縮しますが、たいていの受け手は開けません。7z はさらに良く圧縮しますがソフトウェアが要ります。TAR は Unix の権限を保ちますが Windows では何の意味も持ちません。ZIP がいちばんよく問われる場面で勝ちます。相手のコンピュータについて何も知らない人にファイルを渡す場面です。
これが ZIP の強みと弱みの両方を説明する設計上の決断です。中のすべてのファイルは別々に圧縮され、アーカイブ末尾のディレクトリに索引されているので、どの一項目もほかに触れずにすぐ取り出せます。
これが ZIP をつまみ食いするアーカイブには優れたものにし、圧縮率では平凡なものにします。千個のほぼ同一なテキストファイルは一つずつ絞られ、それらがほぼ同じであることに気づく機会がありません。まさにそこで 7z や `.tar.gz` が、ときには何倍もの差で先んじます。
ZIP のもともとの暗号化は 1993 年の 2.0 仕様で加わったもので、破られています。パスワードなしで中身を取り出せる既知の攻撃手法があり、それを行うツールは自由に手に入ります。この方式で保護されたファイルは、詮索好きな同僚に対しては守られていて、それ以外の何に対しても守られていません。
現代の ZIP は AES-256 にも対応していて、これは本物に強力です。ただしこれがすべてのツールで既定というわけではなく、AES-256 で暗号化されたアーカイブは、いまも古い方式しか理解しない Windows エクスプローラーでは開けません。だから選択肢は、受け手が開けないかもしれない本物のセキュリティか、セキュリティではない利便性か、のどちらかです。本当に重要なものについては、アーカイブする前にファイルを暗号化してください。
DOCX、XLSX、PPTX、ODT、EPUB、APK、JAR、Android のアプリバンドルはどれも、別の拡張子を持ち、決められた内部構造を要求される ZIP アーカイブです。どれでも `.zip` に名前を変えて開けば、中の XML と画像が見えます。
これが、DOCX ファイルのフォルダーを ZIP にしてもほとんど何も節約にならない理由です。中身はすでに圧縮されていて、圧縮を二回かけても有用にはなりません。同じことが JPEG や MP3、MP4、PDF にも当てはまります。アーカイブが中身とほぼ同じサイズで出てきても、それは失敗ではありません。ファイルがすでにその仕事を済ませていたということです。
Unix のファイル権限、所有者、シンボリックリンクは ZIP の中に確かな居場所を持ちません。一部のツールはそれを拡張フィールドに保存しますが、多くは無視するので、Mac でアーカイブされサーバーで展開されたスクリプトのフォルダーは、実行可能ビットが立っていない状態でしばしば届きます。
これが Unix システム向けのソフトウェアが ZIP ではなく `.tar.gz` として配布される理由で、プロジェクトを機械間で移すのに ZIP を使う前に知っておく価値があります。文書や写真、人が手で開くものにとっては、どちらでも構いません。
もともとの仕様は 32 ビットのフィールドを使っていて、アーカイブ全体と中の各ファイルを四ギガバイトに、項目数を 65,535 に制限していました。2001 年の ZIP64 がこの三つの上限をすべて取り払い、いまのどのツールも必要なときにはこの拡張で書き出します。
古いソフトウェアはこれを理解しません。症状は特徴的です。あるプログラムでは正しく展開できるアーカイブが、別のプログラム、たいていは古いユーティリティか何かの機器に組み込まれたものでは、破損や切り詰めと報告されます。アーカイブは無事で、読み手の側がこの拡張より前のものというだけです。
macOS で圧縮すると `__MACOSX` というフォルダーと `._` で始まるファイルが加わります。macOS が別々に保存し一緒に詰め込むリソースフォークと拡張属性です。Mac の上ではこれらは見えません。Windows で展開すると、すべての本物のファイルの隣にごちゃごちゃしたものとして現れます。
消しても安全で、誰にも必要ないものです。これを書いておく価値があるのは、整ったアーカイブを不注意に見せてしまう確実な原因であり、受け取った側は何かがうまくいかなかったと思い込みがちだからです。
ZIP は番号付きのボリューム ── `.z01`、`.z02`、そして最後の `.zip` ── に分割して、メールやストレージのサイズ上限を越えられます。展開を始める前にすべてのパートが同じフォルダーに揃っている必要があり、展開は最初の番号付きパートからではなく `.zip` から始めます。
それらは独立したアーカイブではないので、パートが一つ欠けているとたいていそれ以降のすべてが回復不能になります。分割アーカイブが理由もなく途中で失敗するなら、まず確かめるべきはボリュームが欠けているか名前が変わっていないかです。
アーカイブが大きく、似たようなファイルばかりで、相手がそのソフトウェアを持っていると分かっているなら 7z を選んでください。圧縮率の差は本物で、かなりの差になることがあります。行き先が Unix システムで権限を保つ必要があるなら `.tar.gz` を選んでください。
それ以外のほとんどには ZIP を選んでください。それがほとんどのケースです。いちばん良いアーカイブ形式は、受け取った側が開けるものです。相手の環境が分からない誰かにそれ以外を送るのは、自分で避けられたはずの問題を静かに押し付けることになります。
| 拡張子 | .zip |
|---|---|
| メディアタイプ | application/zip |
| 公開元 | PKWARE |
| 初版 | 1989 |
| 仕様 | APPNOTE.TXT |
このページに書かれていることは検証できます。根拠となる資料は次のとおりです。