アーカイバはどうやってファイルを小さくしたのか?データ圧縮の歴史

スーツケースに、すべてが収まるように、しわにならないように詰め込んだことがあるだろうか。アーカイバはファイルでも同じことをします。ファイルを共通の容器に入れ、可能な限り、品質を損なうことなくデータを圧縮します。

アーカイバといえば、多数のファイルを1つのコンテナに保存するプログラムとフォーマットの両方を意味する。これらはすべて、保存、転送、バックアップにとても便利です。しかし、アーカイブ(ファイルを1つのパッケージにまとめること)と圧縮(データの統計を使ってサイズを小さくすること)の2つのプロセスを区別する必要がある。ほとんどの一般的なツールはこの2つの処理を行いますが、歴史的には、これらのタスクは別々に処理されてきました。この記事では、TechnoVisorがその歴史とアーカイバの仕組みを探る旅にご案内します。

すべての始まりは…

パーソナル・コンピューターが登場した当初、そしてそれ以前の大型コンピューターの時代には、データは磁気テープに記録されていた。そのため、情報へのアクセスは順次的で、必要なファイルを見つけるにはテープ全体をスクロールしなければならなかった。そのため、多くのファイルをサービス表やタイトルのついた「ロール」と呼ばれる1つのファイルにまとめる必要があった。ほぼ同時に、可逆圧縮アルゴリズムが登場した。ハフマン符号化、LZファミリー(LZ77/LZ78)は、データ内の繰り返しを検索することができる。それ以来、考え方は単純だ。コンテナは構造を担当し、コーデックはサイズを小さくする。

80年代と90年代

その後、BBSとフロッピーディスクの急速な普及に伴い、ARCフォーマットが使われるようになったが、PKZIPとオープンZIPが市場に革命を起こした。ARJ(当時は優れた圧縮レベル)、RAR(マルチボリュームアーカイブと回復記録)、日本市場ではLZH/LHA、MacではStuffItが競合した。誰もが速度、利便性、圧縮率のバランスを求めていた。

しかし、Unixには少し違った伝統があった。その主な原則は、各プログラムは特定のことをひとつだけ、しかも非常にうまくやるべきだというものだった。

ちなみにUnixは、LinuxやmacOSを含む多くの現代システムの基礎となっているオペレーティングシステムである。

例えば、tarプログラムは単に多くのファイルを1つの大きなアーカイブ(tarボールと呼ばれる)に集めるだけである。また、圧縮には別のプログラムが使われる。当初はcompressがこれに使われていた。その後、よりよく圧縮するgzipに取って代わられた。その後、bzip2(さらに良く圧縮するが、より遅い)やxz(最も良く圧縮する)が登場した。.tar.gzや.tar.xzのような拡張子が見られるのはそのためです。これらは、ファイルが最初にtarを使って1つのアーカイブにコンパイルされ、その後別のプログラムで圧縮されたことを示しています。

新世紀 – 7-Zip、LZMA、ターボコーデック

90年代後半から2000年代にかけて、7zフォーマットとLZMA/LZMA2コーデックを備えた7-Zipが登場した。その後、Zstandard(zstd)、LZ4、Brotliが登場し、これらはすべてスピードとストリーミング、つまり最小限の待ち時間でオンザフライで圧縮するものだ。これらのコーデックは、サーバー部分やファイルシステムで使用されることが多いが、最新のアーカイバはこれらのコーデックを読み込み、作成することができる。

より明確にするために…

コンテナとは、多くのファイルとメタデータを1つのブロックにまとめる方法である(コンテナ・フォーマットとしてtarやzipがある)。

コーデック – バイトを減らす圧縮アルゴリズム(DEFLATE、LZMA、zstd)。

この2つを組み合わせると、見慣れたアーカイブができあがるが、システムによってその並べ方は異なる。

その人気のため、WinZipはZIPフォーマットをワンクリックで使えるシンプルなツールに変え、WinRARはRARと複数ボリュームのパスワードで保護されたアーカイブを一般的にし、7-Zipは無料の代替を提供した。今日、ほとんどのオペレーティングシステムは、すぐにZIPを開くことができ、Keka、PeaZip、またはThe Unarchiverのようなユーティリティは、あまり一般的でないフォーマットをサポートします。クラウドサービスでは、アーカイブはプロジェクトやバックアップのエクスポート/インポートに便利で、モバイルデバイスではトラフィックを節約できる。

タスクのフォーマットの選び方

すべてのケースに対応できる完璧な選択肢はない:

  • 異なるオペレーティング・システム間で素早く交換するには、ZIPを使おう。
  • もし1メガバイトでも重要なら、7zやtar.xzに注目しよう。
  • スピードとレイテンシーの最小化を優先するなら、tar.zstか古典的なtar.gzで十分だ。
  • 長期保存の場合は、希少なクローズド・フォーマットを避ける。

小さなチェックリスト

  • 友達に写真を送る?ZIP
  • コードやログを長期間アーカイブしていますか?
  • 頻繁にバックアップを取り、新しいファイルだけを追加するのであれば、zstフォーマットか、同一ファイルを検索して削除できる特別なバックアップソフトを使う方がよい。

フォルダに写真を詰め込んで、画質を落とさずに送りたいですか?以下は4つの簡単なステップです。

  1. ZIPアーカイブを作成する。Windows 11の場合は「作成」、「圧縮フォルダ」の順にクリックし、macOSの場合は「圧縮」をクリックする。
  2. 重要なものや秘密のものを送る場合は、パスワードを追加してください – しかし、ファイル名は通常のZIPでも見えることを覚えておいてください。
  3. 完全なプライバシーを求めるなら、7-Zipと “encrypt headers “オプションを使ってください。
  4. 受信者が選択したフォーマット(ZIPが最も驚きが少ない)を開くことができることを確認してください。

セキュリティ(パスワードだけではない)

アーカイブには落とし穴がある。古いZIP暗号化スキームは弱いので、AES-256プロテクションを選択する方がよい。ZIP爆弾(いわゆる死のアーカイブ)は、重さは数キロバイトかもしれないが、数百ギガバイト、あるいはテラバイト(想像してみてほしい)を解凍し、システムをクラッシュさせる可能性がある。

ファイルを自動的に圧縮する最新のファイルシステム(ZFS、Btrfs、APFS)や、データを自ら分類してパックするクラウドサービスがあっても、アーカイバは依然として重要な役割を担っている。だからこそ、スピードと高品質を兼ね備えたZstandardのようなフォーマットが不可欠なのだ。これがアーカイバの物語です。アーカイバは、時間とインターネットトラフィックを節約し、データを整理するのに役立ちます。

興味深い事実

  1. ZIPは1989年に登場し、現在でも最も普及しているフォーマットである。
  2. bzip2は良いテキスト圧縮を提供するが、解凍はgzipやzstdよりずっと遅い。
  3. 7zは圧縮率が非常に高いが、RAMを非常に消費する。
  4. RARは、ソリッド(連続)アーカイブと、破損したデータを回復するための内蔵リカバリレコードをサポートしています。
  5. JPEG写真、MP4ビデオ、MP3音楽はすでに圧縮されており、しかもうまく圧縮されていない。
  6. 多くのアーカイバは、データをボリューム(part1、part2…)に分割して、大きなデータの転送を簡単にすることができる。
  7. 最近のアーカイバはこれをブロックしている。
Натисніть, щоб оцінити цю публікацію!
[Всього: 0 Середнє: 0]

コメントを残す

メールアドレスが公開されることはありません。

+ 26 = 36