| 圧縮ってナニ?解凍ってナニ? |
このページでは、「 ファイル 」の「 圧縮 」と「 解凍( 伸張 ) 」に付いて紹介しています。
最初に言うと、圧縮とは「 ファイルサイズ 」を小さくすることを言い、解凍( 伸張 )とは圧縮したものを元に戻すことを言います。
圧縮と解凍は、誰でも無意識に行っています。 実際に行うのは、コンピュータなどですが・・・。
たとえば、デジカメで写真を撮ると、JPEG形式で保存される場合が多いですよね。 そうです、JPEG形式で保存すること自体が圧縮です。 そして、JPEG形式の画像ファイルを開いて画像を表示させようとすると、解凍(
伸張 )が行われます。
圧縮は圧縮という言葉が最適だと思いますが、解凍は「 復元 」という言葉が最適だと思います。 圧縮によって小さくしたものを解凍によって大きくするので「 伸張 」という言葉も使われますが、本来の目的は元に戻すことです。
なので、「 解凍 」=「 復元 」だと思って良いです。 ただし、完全に元の状態に戻る「 可逆圧縮 」と、完全には元に戻らない「 非可逆圧縮( 不可逆圧縮 ) 」があります。
そもそも、ファイルサイズってナニ?という疑問があると思います。 日常生活ではコンピュータのファイルというものを扱わないし、そもそも手にしたり見えるものではありません。 メモリカードなど、ファイルを保存した媒体を手にすることはありますが、手にしたからと言ってサイズが解るわでもありません。
重さが無いし見ることもできないので、頭の中で理解するしかないですが、基本的で大まかなことが解れば、それで充分です。
では、コンピュータ内にあるファイルのサイズを確認してみましょう。
|
|
![]() |
「 全般 」タブを開くと、「 サイズ 」という欄があるはずですが、ここにファイルサイズが表示されます。 複数のファイルを選択した場合は、その合計を表示してくれます。 フォルダの場合は、その中にあるファイルの合計を表示してくれます。 左記画像では、「 10.0 KB ( 10,240 バイト ) 」と表示されていますが、「 KB 」とか「 バイト 」など何やら聞きなれない「 単位 」が付いています。 この単位を理解しないと、ファイルサイズは理解できません。 なので、次はファイルサイズの単位を紹介します。 |
|
余談ですが、「 ディスク上のサイズ 」というのは、ハードディスクなどに記録( 保存 )したとき、実際に消費する容量です。 ハードディスクなどでは記録方式の特性によって、実際のファイルサイズよりも大きい容量を消費する場合があります。 |
|
|
プロパティでのファイルサイズの表示は、「 大きい単位でのサイズ ( バイト数 ) 」となっていますが、大きい単位では小数点1桁以下を切り捨てしているみたいです。 たとえば、「 12345 バイト 」は「 12.055…KB 」ですが、「 12.0 KB 」と表示されます。 単位に付いては、次の「
■ ファイルサイズの単位 」セクションを参考にしてください。 |
|
まず最初に、コンピュータでは「 2進法 」で数を処理することを認識してください。 実生活では「 0 」〜「 9 」の数を使って「 10進法 」で計算しますが、コンピュータ( 内部
)では「 0 」と「 1 」だけを使うので、2進法で計算するのが合理的らしいです。
ただし、10進法で慣れている人間にとって、2進法は扱いにくいし桁数が異常に多くなるので、感覚的に扱いやすく桁数が少なくて済む「 16進法 」が良く用いられます。 16進法では、「 0 」〜「 9 」とアルファベットの「 A( 10 ) 」〜「 F( 15 ) 」を使います。
| bit( ビット ) |
本当の最小単位です。 正確に言うと、「 情報 」の最小単位です。 なぜ「 情報 」なのか?を説明すると難しくなるので割愛します。 コンピュータでは「 0 」と「 1 」だけを使いますが、たとえば「 1bit 」だと「 0 」または「 1 」のいずれかを表すことができます。 なお、「 bit 」という単位を省略形にするときは、「 b 」( 小文字 )とします。 |
|
| Byte( バイト ) | 「 8 」bit = 「 1 」Byte |
実質的な最小単位です。 「 00000000 」〜「 11111111 」まで表すことができます なお、「 Byte 」という単位を省略形にするときは、「 B 」( 大文字 )とします。 |
|
2進法の「 11111111 」( 10進法の「 255 」 )は、16進法では「 FF 」になります。 つまり、16進法2桁で表せる最大数です。 8bit=1Byteをひとまとめにすると、16進法との親和性が高いからだろうと、筆者は推測しています。 |
||
| KB( キロバイト ) | 「 1,024 」Byte = 「 1 」KB |
なぜ「 1,024 」倍かと言うと、2進法の「 10,000,000,000( 2の10乗 ) 」が10進法では「 1,024 」になるからだと思います。 また、キリの良い1,000に近いので、単位上がりに採用したのだと思います。 |
| MB( メガバイト ) | 「 1,024 」KB = 「 1 」MB | |
| TB( テラバイト ) | 「 1,024 」MB = 「 1 」TB | |
|
これ以上の単位があるらしいですが、筆者は知りません。 |
||
|
|
||||
ファイルサイズを小さくするためには、ファイルの中身であるデータを改変するしか方法はありません。 データの多さによって、ファイルサイズが決まるからです。 正確に言うと、「 0 」または「 1 」の数によって決まりますが・・・。
つまり、データを改変することによって、「 0 」と「 1 」の数が減って、ファイルサイズが小さくなるわけです。
しかし、改変によってデータの内容そのものが変わるのは困りますよね。 「 あいうえお 」という文字を記録したのに、圧縮して戻すと「 USOUSO
」という文字になったり、「 10000 」という数値が「 USO800 」に変わってしまったり・・・。
なので、解凍( 復元 )すると完全に元に戻るように圧縮する必要があるわけですが、これを「 可逆圧縮 」と言います。 ただし、「 可逆圧縮 」ではファイルサイズを小さくできる割合が低いです。 完全に元に戻す、というのが制約になるわけです。
筆者の経験では、平均して75%( 25%減 )程度ですかね。 最大でも、50%程度だと思います。 ただし、たとえばテキスト( 文字 )だけのファイルだと、25%(
75%減 )になったりします。 テキストファイルは、同じデータが続く部分が多いので、圧縮率が高くなります。
では、可逆圧縮の例を紹介します。
|
まずは、下記リンクページにて、「 haca_usohelp_chm.lzh 」をダウンロードします。 もっとも、解凍ソフトが必要なので、インストールされていない場合は「
+Lhaca 」もダウンロードすることになると思いますが・・・。 「 haca_usohelp_chm.lzh 」を解凍すると、「 haca_usohelp.chm. 」が作成されます。 「 haca_usohelp_chm.lzh
」および「 haca_usohelp.chm 」を右クリックして「 プロパティ 」で、ファイルサイズを見比べます。 |
|
![]() |
![]() |
|
CHMファイルは、その記録方式( ファイル形式 )の特性によって、CHMファイル自体が圧縮されているようなものです。 それでも、LZH形式で圧縮するとファイルサイズは小さくなりました。 |
|
|
ちなみに、ヘルプファイルの元になるページのサイズは「 156KB 」です。 これをLZH形式で圧縮すると、「 117KB 」になりました。 割合で言うと、「
25% 」の減少です。 ページに配置した画像はすでに圧縮されているので、圧縮に貢献しているのはHTMLファイルとCSSファイルです。 HTMLファイルやCSSファイルはテキストファイルなので、可逆圧縮でも圧縮率が高いです。 ちなみに、HTMLファイルとCSSファイルで「 46.7KB 」ですが、LZH形式で圧縮すると「 12.5KB 」になりました。 割合で言うと、なんと「
73% 」の減少です。 |
|
文字データや数値データなどは元に戻らないと困りますが、画像や動画やサウンドはどうでしょうか?
たとえば、直接に会話しているときに比べると、電話では音質が悪いです。 でも、何を話しているのかは解りますよね。 たとえば、ピンボケ写真は画質が悪いですが、ボケ方が少ないと何の画像であるかは解ります。
つまり、元の状態がどうだったか判別できる範囲でデータそのものを少なくする、というのが「 非可逆圧縮( 不可逆圧縮 ) 」の考え方です。 また、改変の自由度が高くなるので、圧縮に都合が良いように改変できます。
たとえば、「 今日は雲が1つも無い良いお天気ですね 」と「 今日は快晴だ 」は、文字数は大きく違いますが、意味としては同じです。 ただし、多少は雲があっても「
快晴だ 」と言います。 非可逆圧縮すると、その辺りのニュアンスが崩れるわけです。
大抵の圧縮形式は圧縮率を指定できるので平均値は出せませんが、画像などの内容や圧縮率の指定によっては、10%以下( 90%以上減 )になります。
では、非可逆圧縮の例を紹介します。
|
下記の2つの画像の中で右クリックして、「 プロパティ 」でサイズを見比べてください。 なお、それぞれ等倍と2倍 |
|
| 原画 : 11.88 KB ( 12,173 バイト ) | JPEG( 最高圧縮 ) : 1.34 KB ( 1,377 バイト ) |
![]() ![]() |
![]() ![]() |
|
画像データでは、ある色と別の色の境い目付近でデータの変化が大きくなります。 JPEG形式では、データの変化が小さくなると圧縮しやすいようなプログラムを組んでいるみたいです。 なので、特に大阪城と空の境い目で、大きく画質が変化しているのが解るでしょうか。 また、全体的にボケていると言うかニジミが出ているというか・・・。 つまり、元のデータを改変した部分が別の色となって現れます。 データの変化が小さい=グラデーションのような感じになります。 また、コントラストが弱くなります。 |
|
可逆圧縮にしても、圧縮ファイル自体のデータ量は少なくする必要があります。 正確に言うと、「 0 」と「 1 」の数を減らします。 そうしないと、ファイルサイズを小さくすることはできません。
たとえば、「 010001000100 」と並んでいる部分があれば、「 0100x3 」というような形に変えます。 もちろん、圧縮ファイルも使えるのは「
0 」と「 1 」だけなので、「 x 」や「 3 」を「 0 」と「 1 」の組み合わせで表現します。 どのように表現するのか筆者は知りませんが・・・。 この例で言えば、「
010001000100 」=12文字が、「 0100x3 」=6文字に減りますよね。 このように、結果的に「 0 」または「 1 」の数が少なくなるようにするわけです。
可逆圧縮の場合は、上記の例のように法則を見つけて、別の形に改変します。 解凍は、圧縮時の法則を基にして行います。 なので、完全に元に戻ります。
非可逆圧縮の場合は、たとえば「 001011101000 」=「 法則が見当たらないし数が多い 」を「 001001001 」=「 001x3
」にしてしまう、というような感じです。 どのように改変したかを記録しないので、ファイルサイズを非常に小さくできる代わりに、完全には元の形に戻りません。
圧縮と解凍は、布団と布団圧縮袋の関係に良く似ています。 布団を圧縮袋に入れて空気を抜くと、容積が小さくなります。 圧縮袋から出すと、完全ではないけど布団は元の形に戻ります。 この場合は、自然に復元するのを利用しているわけですが、空気の部分がどうだったかを記録するのが可逆圧縮だと思えば良いです。
非可逆圧縮の場合は、布団の綿を少なくします。 なので、可逆圧縮に比べて圧縮率が高くなります。 また、可逆圧縮と同じようなことをしています。 つまり、綿を少なくしたときの空気の状態を記録します。 これによって、綿が少なくなった状態だけど元の状態を再現できるわけです。 綿が少なくなった分だけ、画質や音質などの低下となって現れます。
|
| 形式 | 拡張子 | 可逆/非可逆 | 概要 |
|---|---|---|---|
| LZH | 同じ | 可逆 |
日本国内で主流となっている圧縮形式です。 日本国内や日本人に圧縮ファイルを他人に渡すとき、一般的には「 LZH形式 」を選択することが多いみたいです。 |
| ZIP | 同じ | 可逆 |
海外で主流の圧縮形式らしいです。 一般的には、「 LZH形式 」と「 ZIP形式 」を圧縮解凍できるソフトを持っていれば充分です。 |
| 自己解凍 | exe | 通常は可逆 |
拡張子が「 exe 」であるファイルは、「 実行可能なファイル 」です。 たとえば、ソフトを起動するファイルは一般的に拡張子が「 exe 」です。 EXE形式そのものは、圧縮形式ではありません。 |
|
自己解凍形式のファイルとは、解凍プログラムを組み込んだ圧縮ファイルのことです。 自己解凍のファイルをWクリックなどで開くと、解凍プログラムが実行されて自動的に解凍されるので、解凍ソフトが不要であるというメリットがあります。 ただし、解凍プログラムを組み込むので、トータルでは圧縮前よりもファイルサイズが増える場合があります。 |
|||
|
上記形式は、既存のファイルを圧縮するという形で使います。 たとえば、文書作成ソフトで文書を作成したとします。 これをファイル保存するときは、その文書作成ソフト独自の形式で保存したりしますが、圧縮されるわけではありません。(
圧縮する場合もあるらしい ) なので、文書ファイルなどを作成してから、そのファイルを圧縮ソフトに読み込ませて圧縮することになります。 |
|||
|
「 +Lhaca 」の「 0.7x系 」は、「 LZH形式 」と「 ZIP形式 」のファイルを圧縮解凍できます。 ソフトのサイズが小さくて、動作が軽いです。 一般的には、LHZとZIPを圧縮解凍できれば充分です。 |
|
「 +Lhaca 」以外にも、非常に多くのソフトがあります。 「 +Lhaca 」では、解凍したファイルが作成されるまで圧縮ファイルの中身を確認することはできませんが、事前に表示してくれるソフトもあります。 また、エクスプローラ(
フォルダウインドウ )と同じような使い勝手のソフトもあります。
シェアウエアの有料ですが、非常に高機能です。 多数の圧縮形式に対応しているし、事前に表示してくれるし、エクスプローラと同じような使い勝手です。 LZH形式のファイルなどは、一部のファイルだけを解凍することができるし、自己解凍の圧縮ファイルを作成および解凍もできます。 また、ファイルを分割/分割ファイルの結合もできます。 |
最初に言うと、画像形式の一種である「 BMP形式 」は非圧縮形式( 圧縮しない形式 )です。 正確に言うと、圧縮しない形式と圧縮する形式があるわけですが、一般的に主流なのは圧縮しない形式です。 なお、デジタル画像の基本的なことに付いては、下記リンクを参考にしてください。
デジタル画像のアレコレ
そして、ウインドウズというシステムが取り扱いできるのは「 BMP形式 」だけです。 他の形式の画像を表示などするときは、その表示ソフトなどがBMP形式に変換しています。 このとき、その画像形式が圧縮形式であれば、BMP形式に変換=解凍を意味するわけです。 なお、画像専用の圧縮形式は一般的に圧縮形式とは言わず、たとえば画像形式とか動画形式とかサウンド形式などと言います。 これがために、圧縮形式であることを知らない人が多いのですが・・・。
つまり、画像形式には非圧縮形式( BMP形式など )と圧縮形式がある、ということです。 さらに、圧縮形式は可逆圧縮と非可逆圧縮に分かれます。
| 形式 | 拡張子 | 可逆/非可逆 | 概要 |
|---|---|---|---|
| JPEG | jpg jpeg jpe |
非可逆 |
写真画像など、自然画を圧縮するのに適した形式です。 正確に言うと、1つの色の範囲が狭くて、色数が多い画像に適しています。 グラフィック画像など人工画でも、このような画像はJPEG形式のほうがサイズを小さくできます。 また、階調の変化が弱いほど有利になるので、コントラストを弱くするほどファイルサイズが小さくなる傾向にあります。。 JPEG形式では、圧縮率( 品質 )を指定することができます。 指定した率によって、圧縮の程度が変わります。 ただし、圧縮率を最低値で指定しても、圧縮が行われます。 |
|
JPEG形式は非可逆圧縮なので、元の色が改変されます。 特に、元は一色であったのが、ある部分では多数の色に改変されたりします。 鮮明度が低下したり、特にグラフィック画像では画像編集で支障が出る場合があります。 画像編集を行うプロが良く言いますが、JPEG形式の画像は編集が難しいのだそうです。 補正や加工を前提とするなら、圧縮率をできるだけ低く( 品質を高く )指定するか、他の形式で保存することをお勧めします。 |
|||
| GIF | gif | 可逆 ( 制約あり ) |
グラフィック画像など、いわゆる人工画の圧縮に適しています。 正確には、色数が少なくて、1つの色の範囲が広い画像に適しています。 GIF形式で記録できるのは、「 256色 」までです。 色数を制限することで、ファイルサイズを小さくします。 他の手法も使って圧縮していますが、説明は割愛します。 |
| PNG 8bit |
png | 可逆 ( 制約あり ) |
基本的には、GIF形式と同じです。 記録できる色数も、GIF形式と同じで「 256色 」までです。 GIF形式を開発した米国ユニシス社が特許権を行使して有料にしたため、その対抗馬としてW3Cという組織が開発したらしいです。 ちなみに、現在では特許期限が過ぎて延長されていません。 |
|
GIF形式とPNG8bit形式は、色数が制限されるという意味では非可逆圧縮です。 たとえば、BMP( 24bit )形式は約1,677万色を記録できますが、この画像ファイルをGIF形式やPNG8bit形式に変換すると、強制的に256色以内に減色されます。 どのように減色したか記録しないので、完全には元に戻りません。 それ以外では、可逆圧縮になります。 つまり、256色以内の画像なら、原則として完全に元に戻ります。 |
|||
|
圧縮とは関係ないですが、GIF形式とPNG8it形式では、特定の色を透過に設定することができます。 つまり、その色の部分は背景の色が表示されます。 GIF形式では、複数の画像を記録して、アニメーション再生することができます。 |
|||
| PNG 24bit |
png | 可逆 |
PNG24bit形式は、いわばBMP形式を可逆圧縮する形式です。 BMP24bit形式と同じ色数を記録できるので、完全に元に戻ります。 ただし、GIF形式やPNG8bit形式に比べると、ファイルサイズが大きくなる傾向にあります。 |
|
圧縮とは関係ありませんが、PNG24bit形式では各ピクセルの不透明度( 透過率 )を記録することができます。 ちなみに、「 アルファチャンネル
」と言うらしいです。 つまり、GIF形式やPNG8bit形式では完全な不透明または完全な透明しか記録できませんが、PNg24bit形式では不完全な不透明にできるわけです。 ただし、「 IE'( Internet Explorer ) 」では「 PNG24bit形式 」の透過を正しく処理できないのと、ファイルサイズが大きくなる傾向にあることから、ホームページなどWEB上では使えないと言って良いです。 2006年に公開予定の「
IE( バージョン7 ) 」では正しく表示できる予定らしいですが、多くの人がバージョンアップするまでには相当な期間が必要でしょう。 |
|||
|
これら「JPEG」「GIF」「PNG」形式に付いては、下記リンクも参考になると思います。 |
|||
一般的に普及している以外にも、多くの形式があります。 大抵は拡張子で判断できるので、下記リンクの検索結果ページを参考にしてください。
「 圧縮形式 拡張子 」で検索
「 画像 圧縮形式 」で検索
サウンド形式と動画形式に付いては、筆者は良く知りません。 これらに付いては、下記リンクの検索結果ページを参考にしてください。
「 サウンド形式 拡張子 」で検索
「 動画形式 拡張子 」で検索
と言いながら、サウンド形式に付いては解説ページがあります。 圧縮云々ではなくソフトの使い方ですが、「 ビットレート 」や「 サンプリング周波数
」など、圧縮に大きく関係します。
『MIDIをCDで聴くには?』
サウンド形式変換ソフト:Rip!AudiCO
サウンド録音ソフトの仕組みと使い方
そもそも、なぜ圧縮するのか?という疑問がありますよね。 圧縮するには手間が掛かるし、解凍するにも手間が掛かるし、画像などは品質が悪くなるとなれば、目的や意義が必要です。 もっとも、圧縮=ファイルサイズを小さくすることだから、それ自体が意義ですが・・・。
ここでは、どういうときに?どの程度まで?といったことを紹介します。 ただし、筆者の個人的意見が含まれるので了解してください。
なお、それならファイルが作成されるときに圧縮して欲しい、という意見があると思いますが、ファイルを作成/変更するたびに圧縮して、開くたびに解凍すると、パソコンの動作が重く(
遅く )なります。
|
||||||
|
||||||
|
||||||