複数の大きなファイルやプログラムを電子メール、アップロード、ダウンロードする必要がある場合、ほとんどの場合、ZIP ファイルに遭遇したことがあると思います。 圧縮ファイルまたはアーカイブ ファイルとしても知られている ZIP ファイルは、複数のファイルを .zip または .ZIP という拡張子を持つ 1 つの場所に凝縮し、全体のサイズを小さくして、送信を容易にします。
Phillip Katz は 1986 年に ZIP ファイルを発明し、それは Katz の会社 PKWare, Inc の PKZip プログラムで最初に実装されました。 最終的に、Katz の圧縮方法は、一般的なオペレーティング システムでよく使われるようになりました。 Microsoft Windows と Apple の Mac OS には、ファイルを圧縮および解凍するユーティリティが組み込まれており、WinRAR、WinZip、StuffIt などのプログラムはそれらを展開することができます。 GIF の歴史
しかし、どのように動作しているのでしょうか。 その「魔法」とは、実際には、ファイルの冗長な側面を取り除いて、より小さなパーツに分割する、非常に単純なアルゴリズムなのです。
わかりやすい例として、「Mashable は読者を賢くするのに役立ち、読者は Mashable を賢くするのに役立つ」という文章を取り上げ、それがファイルであると仮定してみましょう。 この文の各文字とスペースが1単位のメモリを構成しているとすると、全体のファイルサイズは78単位となる。 この文章に番号付けしたコード、つまり「辞書」を作成すると、次のようになる。 Mashable
2. can
3. help
4. make
5. readers
6. smarter
この新しい文には24単位しかない。 したがって、圧縮されたファイルには、私たちの番号付けされたコードを列挙した別のファイルに加えて、24個のユニットしかメモリがないことになり、圧縮プログラムは各ユニットの情報をどのように適用すればよいかを知ることができる。 これは「可逆圧縮」と呼ばれ、元の情報はすべて保持されます。
実際の圧縮プログラムの動作は、前の例より少し複雑で、パターンを認識することになります。 たとえば、「Mashable」と「make」の後に「e」とスペースがある場合です。 しかし、このパターンが出現するケースは多くないので、プログラムはより明白なパターンで上書きしてしまう可能性が高い。 実際のプログラムは、私たちが行うよりもはるかに効率的な辞書と圧縮ファイルを見つけることができます。
教育および指導のウェブサイト HowStuffWorks によると、言語には冗長なパターンがあるのが普通で、そのためテキスト ファイルは簡単に圧縮できるのだそうです。 しかし、ファイルの縮小率は、ファイルの種類やサイズ、プログラムが選択する圧縮方法など、いくつかの要因に依存します。
これに対して、画像や MP3 ファイルには、多くのパターンがなく、より固有の情報が含まれています。 そこで「非可逆圧縮」が登場します。圧縮プログラムは、不要と思われる情報を削除します。 例えば、青空をスキャンした画像があったとして、圧縮プログラムはすべてのピクセルに使われている青色を1色ずつ選ぶことができます。 しかし、非可逆圧縮の問題は、圧縮されたファイルから元のファイルを取得できないことで、データベースや特定のアプリケーションをダウンロードするときなど、元の情報をすべて保持する必要がある場合には、非可逆圧縮よりも理想的ではありません。