調べたきっかけ
圧縮するファイルによって、大きく圧縮される場合とあまり変化しない場合があった。また、日常的にファイルやフォルダをZip形式に圧縮することがあるが圧縮の仕組みについてよく知らなかったため。
圧縮ファイルについて
あるファイルの内容をなるべく変えずに短いデータに置き換えたファイル。
圧縮ファイルの性質:
・圧縮前よりもデータサイズが小さい
・送受信にかかる時間が短縮される
・閲覧、編集、実行する場合は復元する必要がある
・既に圧縮されているファイルを圧縮してもデータサイズの変化は小さい(画像や音声ファイルなど)
・(複数のファイルを1つのファイルとして扱うことができる)←アーカイブファイル
圧縮方式の種類
・zip形式:
WindowsやMacOSなどのOSでは標準機能として利用可能。
ファイル作成時にパスワードをかけ暗号化が可能。
・7z形式:
圧縮時の計算量や必要メモリ容量が大きいが、圧縮率が高い。
巨大なファイルの圧縮や、複数のファイルをより厳密にまとめる処理(ソリッド圧縮)にも対応。ソフト「7-zip」で作成することが多い。
・gzip形式:
高速かつ圧縮率が高い。複数のファイルをまとめられないため、別のアーカイブ形式と併用される。LinuxなどのUNIX系OSで利用されることが多い。
圧縮アルゴリズム
多くの圧縮方式で「LZ77圧縮アルゴリズム」、その派生の「LZSS圧縮アルゴリズム」が使われている。
LZ77圧縮アルゴリズム
データを先頭から順に読み込み、繰り返し出現するパターンを探し、最初に出現した場所を参照するように書き換える。
例:文字列「すもももももももものうち」を圧縮する場合
すもももももももものうち
↓
3文字目「も」を読み込んだ時点で、1文字前から始まる「も」を7文字分繰り返す形式に書き換える。
↓
すも(1,7)のうち
繰り返される回数や、一致する箇所が長いほど圧縮の効果がより高くなる。
最後に
圧縮ファイルの仕組みを調べることで、圧縮前の情報を保持したままデータ削減できる理由が知れて勉強になった。また、圧縮方法の性質によりファイルの種類によって圧縮の向き不向きがあるため、必要に応じて圧縮するかどうかを考えながら利用していこうと思った。
参考:
Zip(.zipファイル / ジップ形式)とは – IT用語辞典 e-Words
https://e-words.jp/w/Zip.html
ファイルやフォルダの圧縮とは?その仕組みを解説します! – ブログ

LZ77とは – IT用語辞典 e-Words
https://e-words.jp/w/LZ77.html
Bandizip – ソリッド圧縮
https://jp.bandisoft.com/bandizip/help/what-is-solid-compression/
LZSSとは – コグニカル
https://cognicull.com/ja/udjx8co5
LZ圧縮:LZ77とLZ78、そしてLZD #アルゴリズム – Qiita
https://qiita.com/kgoto/items/53696f5d95919d158ad8
図解DEFLATEアルゴリズム 1/2 ー ハフマン符号とLZ77アルゴリズム
https://zenn.dev/gorogoroumaru/articles/495cc9a97513b0

コメント