Skip to main content

Compression

Overview

圧縮に関するセクション。

info

圧縮は必ずしもbinary(バイナリ)に限定されるものではない。
ただし、圧縮ファイルのほとんどがバイナリフォーマットになるため、分類としてbinary配下に置いている。

圧縮の種類

圧縮には「可逆圧縮」と「非可逆圧縮」の2種類があり、それによってデータの種類が変わる。

1. 可逆圧縮(Lossless Compression)

元のデータを完全に復元できる圧縮方式。

  • ZIP / TAR.GZ / BZIP2 / 7z(ファイルアーカイブ)
  • PNG / FLAC / GIF(画像・音声)
  • テキスト圧縮(LZ77, Huffman Encoding)

これらはテキストデータも含むが、圧縮後のファイルはバイナリデータになる。

2. 非可逆圧縮(Lossy Compression)

一部のデータを破棄してサイズを小さくする圧縮方式。

  • JPEG / MP3 / AAC / H.264(画像・音声・動画)
note

これはデータの種類によって扱いが変わるので、バイナリとは限らない。

圧縮ファイル種類

ZIP と tarball (TAR) の違い

ZIPとtarball(TAR)の主な違いは、ファイルの圧縮方式と構造にある。

info
  • ZIP → Windowsに親しみやすいフォーマット、個別に圧縮
  • tarball(TAR)→ Linux/Unixでよく使われるフォーマット、1つにまとめてから圧縮

この2つの圧縮方法は、OSの文化や歴史に影響を受けている。

  • ZIPはWindows文化が強く、Windowsの標準機能で展開可能。
  • TAR(tarball)はLinuxやmacOSの標準ツールで扱いやすい。

つまりOSごとに「デフォルトで使われるかどうか」の違いはあるけど、フォーマット自体はどのOSでも扱える。
例えばWindowsでもtarコマンドを使えばTARを展開できるし、Linuxでもunzipを使えばZIPを展開できる。

比較項目ZIPtarball (TAR)
圧縮方法ZIP自体が圧縮機能を持つTAR は単なるアーカイブ形式で、圧縮は gzip などと組み合わせる
ファイル構造各ファイルを個別に圧縮するまず TAR で1つのアーカイブを作り、そこに圧縮をかける
展開方法unzip コマンドや GUI で簡単に展開可能tar -xvf(tar)や tar -xzvf(tar.gz)などのコマンドが必要
対応 OSWindows, macOS, Linux すべてで広く使われる主に Unix/Linux 系で使われる
メタデータ保持ファイルごとに圧縮するため、一部のメタデータが失われるUNIX のパーミッションやシンボリックリンクを保持できる
tip

GitHubのリポジトリアーカイブでは「Source code (zip)」と「Source code (tar.gz)」の2種類が提供されており、Windowsユーザー向けにZIP、Linux/Macユーザー向けにtarball(tar.gz)が用意されている。