
授業のレポートをメールで送りたいのに、ファイルが大きくて添付できない。そんなとき「ZIPにすれば小さくなる」と教わることがあります。確かに容量が大幅に減るファイルもありますが、まったく減らない場合もあります。ZIPが魔法のように何でも小さくできるわけではありません。何が違うのでしょうか。
同じ文字が続くと、短い表現に置き換えられる
「あ」を千回書いた文章と、一文字ずつ違う千文字の文章を想像してください。前者は「『あ』を千回繰り返す」と書けば内容をかなり短く表せます。後者にはそのような簡単な説明がありません。圧縮は、データの中にある繰り返しや偏りを利用して、より短い符号に置き換える仕組みです。
ZIPで一般的に使われる圧縮方法の一つはDEFLATEです。既に登場した文字列を参照する方法と、よく使われる記号に短い符号を割り当てる方法を組み合わせます。これは文字だけに限りません。ファイルを構成するバイト列に繰り返しや規則があると、同じ考え方を利用できます。
ここで大切なのは、展開すると元のデータに戻せる「可逆圧縮」であることです。レポートの一文字が勝手に変わったら困るので、ZIPは基本的にそのような変化を許しません。圧縮後に情報を捨てないことが、動画や画像の画質を落とす操作との大きな違いです。
容量が100MBから30MBになるとは限らない
例えば、文字の多い資料100MBが圧縮によって30MBになったとします。このとき減った量は70MB、圧縮前に対する削減率は70%です。別の100MBの動画では、同じZIP操作をしても99MBにしかならない、あるいは管理情報が加わってわずかに大きくなることもあります。ファイル形式が違うだけで結果が変わるのです。
JPEG写真や多くの動画、音楽ファイルには、保存するときにすでに圧縮が施されています。そこへ別の圧縮を加えても、新しい繰り返しを見つけられる余地が小さいことがあります。MicrosoftのZIP操作の説明でも、JPEG画像をまとめても合計容量がほとんど変わらない場合があると案内されています。
「ZIPにしたのにサイズが変わらない」という結果は、必ずしも操作ミスではありません。元データの性質から予想できる場合があります。ZIPファイルには複数のファイルを一つにまとめる利点もあるので、容量削減とまとめやすさは別々に評価する必要があります。
手元のファイルで比べる小さな実験
文字だけのメモを二種類用意します。一つは「こんにちは」を何度も繰り返したもの、もう一つは異なる文章を多く含むものです。さらに普段使っているJPEG写真を一枚加え、それぞれ別のZIPファイルにしてみましょう。圧縮前・圧縮後のサイズを並べて比べます。
実験では三つの条件をそろえると分かりやすくなります。同じZIP作成方法を使うこと、ファイル数をそろえること、圧縮前の合計サイズも記録することです。圧縮前のサイズが違うと、単なる容量の差と圧縮の効きやすさの差を取り違えます。
圧縮率を「圧縮後÷圧縮前」で表すなら、100MBが40MBのときは0.4、つまり40%です。一方「何%減ったか」は60%です。同じ実験結果でも、二つの数字を混同しないようにしましょう。比較には元のサイズと圧縮後のサイズを両方残すのが確実です。
もっと強く圧縮すれば、必ず小さくなるのか
圧縮設定を強くすると、繰り返しを探すために多くの計算時間を使うことがあります。しかし、どんなファイルでも必ず追加で減るわけではありません。すでに規則を十分に利用していれば、時間だけが増えることもあります。小さいファイルではZIP内のファイル名や管理情報が相対的に目立ちます。
さらに、適当な文字を長く並べたような、規則をほとんど見いだせないデータもあります。どんな内容でも必ず短い形に変えられるとしたら、無数にある長いデータすべてに、より少ない種類の短いデータを一対一で割り当てる必要があります。これは数の上で不可能です。
そこで、必要なのは圧縮率だけではなく、作業時間、受け取る人が展開できるか、元データを完全に戻せるかという判断です。文章や表ならZIPが便利ですが、写真を小さくして掲載したい場合は画像の形式や解像度を調べる方が目的に合います。
相手へ送る前に確認したいこと
ZIPファイルのサイズが送信上限より小さいか、送信先の環境で展開できるか、展開後のファイル名や文字が保たれているかを確認します。必要なら自分で一度展開して、元の内容を読めるか試すと安心です。メールサービスによってはZIP自体を制限する場合もあるので、容量を減らしただけでは送れないこともあります。
「複数のファイルを一つにする」「総容量を小さくする」「見せたい相手が開きやすくする」は、似ているようで異なる目的です。例えば容量が減らなくても、一つのZIPにすれば資料が散らばりにくくなる利点があります。目的を最初に言葉にすると、必要な操作を選びやすくなります。
まずは同じ資料でZIP化の前後を一度比べてみてください。小さくなったという結果よりも、どんな種類のデータが小さくなったかに注目することで、圧縮という道具の得意・不得意が見えてきます。
「圧縮できた」を数字で確認する練習
例えば、同じ文章を何度も繰り返したテキストが120KB、文章の一部をランダムな記号にしたテキストが120KBあったとします。二つをそれぞれZIPにして、圧縮後の容量を比較しましょう。仮に繰り返し側が8KB、もう一方が90KBなら、削減率は前者が約93.3%、後者が25%です。サイズだけを見るのではなく、元の120KBを基準にした割合を計算します。
もちろん、これは説明用に仮定した値であり、実際の圧縮結果を保証する数字ではありません。使った文字の種類、文字コード、圧縮ソフトの設定、ZIPに入れたファイル数によって結果は変わります。実験ノートには「使った形式」「元の容量」「圧縮後の容量」「設定」の四つを書き残しましょう。
さらに、圧縮後のZIPを展開し、元のテキストと一文字ずつ同じであることも確認します。圧縮率ばかり気にすると、本来守りたい資料の内容を見落としがちです。ZIPという道具の価値は、縮小できる場合に容量を抑えつつ、元データを取り戻せるところにあります。

