Compression
Overview
圧縮に関するセクション。
備考
圧縮は必ずしも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(画像・音声・動画)
注記
これはデータの種類によって扱いが変わるので、バイナリとは限らない。
圧縮ファイル種類
ZIP と tarball (TAR) の違い
ZIPとtarball(TAR)の主な違いは、ファイルの圧縮方式と構造にある。
備考
- ZIP → Windowsに親しみやすいフォーマット、個別に圧縮
- tarball(TAR)→ Linux/Unixでよく使われるフォーマット、1つにまとめてから圧縮
この2つの圧縮方法は、OSの文化や歴史に影響を受けている。
- ZIPはWindows文化が強く、Windowsの標準機能で展開可能。
- TAR(tarball)はLinuxやmacOSの標準ツールで扱いやすい。
つまりOSごとに「デフォルトで使われるかどうか」の違いはあるけど、フォーマット自体はどのOSでも扱える。
例えばWindowsでもtarコマンドを使えばTARを展開できるし、Linuxでもunzipを使えばZIPを展開できる。
| 比較項目 | ZIP | tarball (TAR) |
|---|---|---|
| 圧縮方法 | ZIP自体が圧縮機能を持つ | TAR は単なるアーカイブ形式で、圧縮は gzip などと組み合わせる |
| ファイル構造 | 各ファイルを個別に圧縮する | まず TAR で1つのアーカイブを作り、そこに圧縮をかける |
| 展開方法 | unzip コマンドや GUI で簡単に展開可能 | tar -xvf(tar)や tar -xzvf(tar.gz)などのコマンドが必要 |
| 対応 OS | Windows, macOS, Linux すべてで広く使われる | 主に Unix/Linux 系で使われる |
| メタデータ保持 | ファイルごとに圧縮するため、一部のメタデータが失われる | UNIX のパーミッションやシンボリックリンクを保持できる |
ヒント
GitHubのリポジトリアーカイブでは「Source code (zip)」と「Source code (tar.gz)」の2種類が提供されており、Windowsユーザー向けにZIP、Linux/Macユーザー向けにtarball(tar.gz)が用意されている。