圧縮ファイル

先日のGoogle日本語入力の話の中で、辞書のエクスポート手順を説明しました。そのとき作成されたファイル名の最後が「.zip」になっていることから、そのファイルは圧縮ファイルです、と書きました。

今回は、そのとき書いた「圧縮ファイル」についての簡単な話です。

1.圧縮ファイルとは

圧縮ファイルというのは、任意のファイルから作成することができます。そのとき使うソフトウェアが、例えば zip というものです。

注意しておきたいのは、圧縮できるのはテキストファイルに限るのではなく、どんなファイルでも圧縮対象になりえます。更に言えば、ファイル一つではなく複数を纏めて一つのファイルに圧縮することもできますし、ディレクトリ(フォルダ)ごと圧縮して一つのファイルにすることも可能です。

先程から繰り返し「圧縮」という言葉を使っていますが、「圧縮」されているのはファイルサイズです。

例を示せば、約28MBのテキストファイルをzipで圧縮すると約3.5MBになります。この場合にはファイルサイズが元のファイルの約12.5%になりました。

この約12.5%という数値はファイル内のデータによって変化するので、あくまでも参考値です。これよりも小さくなる(もっと圧縮できる)かもしれませんし、大きくなる(あまり圧縮できない)かもしれません。

ファイルをこのように圧縮することのメリットは、保存するときに必要なスマホのメモリ (ROM) の容量が少なくて済むということです。パソコンであればハードディスクドライブの容量が少なくて済みます。

また、このファイルを共有するときにも、通信量が少なくて済みます。

なお、圧縮するときにはファイルの文字を取り扱うのではなく、ファイル内のデータを0と1のデジタルデータの並びとみなして処理をするので、圧縮された後のファイルはテキストファイルではありません。つまり、そのファイルの中身を例えばエディタで見ても意味不明な文字列が表示されるだけで、元のテキストとして何が書いてあったかは分かりません。

ちなみに、元のテキストファイルに戻すことは、しばしば「解凍する」とよばれています。圧縮されたテキストファイルを解凍すれば、元通りに内容を読むことができるようになります。

2.圧縮ファイルの種類

先程は zip での圧縮の例を記載しました。zipで圧縮すると、ファイル名の最後は「.zip」になります。

例えば、「readme.txt」というテキストファイルを zip で圧縮すると、圧縮されたファイルの名前は「readme.zip」になります。

この変化した部分を「拡張子」とよびます。拡張子を見ると、そのファイルがどんな形式で表現されているのか分かります。

拡張子が「.txt」であればテキストファイル、「.zip」であれば zip で圧縮されたファイル、という具合です。

ちなみに、圧縮するときに使えるのは zip だけではなく、その他にも沢山あります。

とはいえ、いきなり沢山紹介してもいけませんので、独断と偏見で代表例をいくつか挙げます。以下は圧縮ツールの名前でもあり、拡張子として使われる文字でもあります。

  1. zip
  2. 7z
  3. gz
  4. lhz

1は上で説明した zip です。Windowsのエクスプローラーでも対応しているので、見たことがあると思う方もいるのではないでしょうか。

2は一般的に圧縮率が高いと言われているものです。上で示した約28MBのファイルを約1.7MBまで圧縮することができました。これは7zソフトウェアをインストールすることで使えるようになります。

3はWindowsではなくUnixという別のOSでよく使われてきたものです(だと思っています…)。ただ、7zソフトウェアでも、gz形式の圧縮・解凍に対応していますので、ときどき目にするかもしれません。gzは一つのファイルの圧縮に特化しているので、他のソフトウェアのように複数ファイルやディレクトリの圧縮を直接実行することはできません。

4は随分昔からあるものだと思います。但し、セキュリティ上の懸念があり今は殆ど使われていないと思います。日本発の圧縮ソフトウェアだったのでもったいない気がしますが、日本以外には広まらなかったので仕方がないのかもしれません。

3.画像や動画ファイルについて

唐突なタイトルのように感じるかもしれませんが、もう少しだけ補足しておきます。

一般に目にする画像ファイルや動画ファイルは、それ自体が既に十分圧縮された形式になっていますので、上で紹介した圧縮ソフトウェアを使っても殆どサイズが変化しません。

それというのも、画像一つの情報量が非常に大きく、そのままファイルに記録していてはすぐにとんでもない大きさのファイルになってしまうからです。

例えば、最近では普通の解像度(若しくは少し低めの解像度)の12メガピクセルの画像を考えてみましょう。

各画素は255段階(8ビット=1バイト)の三原色(RGB)で構成されているので、画素一つで3バイト必要です。これが12メガ(=12,000,000)個あるのですから、画像ファイル1つにつき12メガ ✕ 3バイト=36メガバイトの容量が必要になります。

でも、みなさんのスマホやパソコンに保存されている画像サイズを見てもらえば分かるように、12メガピクセルの画像はせいぜい3~4MB程度ではないでしょうか?これだけでもだいぶ圧縮されているのが分かると思います。

動画であれば現状1コマ分で12メガピクセルもありませんが、フルHDなら 1920 x 1080 = 約2メガピクセルありますので、1コマだけで6メガバイトの分量です。1秒間に30コマあるとすると、1秒間のデータだけで 180メガバイト もの分量になってしまいます。

例えばスマホのメモリ (ROM) の容量が64GB(ギガバイト)あったとしても、1秒で180メガバイトも使ってしまっていたら、ものの6分間でスマホのメモリ (ROM) を使い切ってしまいます。

現実にはみなさんのスマホで動画を6分間撮影したとしてもそんなことにはなりません。

なおフルHDではなく、4Kの動画であればこれの4倍のデータ量になりますので、このままではとても実用的とは言えません。

ということで、画像や動画は2次元のデータである点や、時間的に連続である点などの特徴を活かして可能な限り圧縮した状態で保存されていますので、通常の圧縮ソフトウェアではサイズを小さくすることは非常に難しいと言えます。

では、圧縮ファイルについての話はこれでおしまいです。