フォルダー圧縮とは?その仕組みと利点について詳しく解説!

投稿日:2023/06/04 最終更新日:2023/06/04

フォルダー圧縮とは?その仕組みと利点について詳しく解説!

フォルダー圧縮とは、複数のファイルやフォルダーを1つのファイルにまとめ、サイズを小さくする作業のことです。

普段何気なく使用している圧縮技術もどんなことをしているのか皆さんはある程度説明することが出来ますか?

この記事では、フォルダー圧縮の仕組みや流れ、利点について順を追って解説していきます。

フォルダー圧縮の仕組み

フォルダーの圧縮ではOSにデフォルトで搭載されている圧縮ソフトウェアや7zipなどの便利な無料ソフトウェアを使用する場合と多岐に渡ります。

しかし、基本的な動作は選択したファイルやフォルダーの中身を解析し圧縮/復元するという点で同じであり、ここで言う解析の目的はデータのパターンや特徴を把握することになります。

つまりは効率的にデータを圧縮して保存するための仕組みが前提に備わっているということです。

この点が圧縮技術の根底にあります。

よく用いられるフォルダー圧縮の手法は以下の2つがあります。

ハフマン符号化

ハフマン符号化は、データ中の頻度の高い文字やパターンに短い符号を割り当て、頻度の低い文字やパターンには長い符号を割り当てることで、データの圧縮を行います。

例えば、以下のような文字列を考えます

「AABBBCCCCDDDD」

ここでは、まず文字列内の各文字の頻度を数えます。

  • A: 2回
  • B: 3回
  • C: 4回
  • D: 4回

次に頻度の高い文字ほど短い符号を割り当てます。

  • A: 0
  • B: 10
  • C: 110
  • D: 111

そして、元の文字列を符号化すると、次のようになります。
「AABBBCCCCDDDD」 → 「010101101101101111111111111」

符号化された文字列は、元の文字列よりも短くなることでデータの圧縮を行っています。

辞書圧縮

辞書圧縮は、データ中の連続するパターンを特定の辞書エントリに置き換えることで、データを圧縮します。

置き換えられたデータは、辞書エントリの参照に置き換えられるため、データサイズが削減されます。

ここでも例を挙げて、以下のような文字列を考えます。

「ABABABABABCABCABCABC」

最初に、重複するパターンを辞書に登録します。

  • AB: 1
  • ABC: 2

次に元の文字列を辞書に基づいて置き換えていきます。

    「ABABABABABCABCABCABC」 → 「112112112」

    このように辞書に登録されたパターンに対応する数値に置き換えることで、圧縮された文字列が作成されます。

    これら2つに共通していることは解析されたデータから、同じデータの連続や特定の文字列の出現などのパターンや特徴が見つかると、それらを特定します。

    特定されたパターンは、圧縮ソフトウェア内に辞書として作成され、パターンとそれに対応する置換値が登録されるという流れです。

    実際に圧縮する際にはこの解析をまず行うことで効率的にデータをまとめる作業をPCがやってくれているということですね。

    実際の挙動

    では、実際に先ほど解説した解析を踏まえた上で実際にどのようにして圧縮や復元が行われているのか順を追って説明していきます。

    データの圧縮

    圧縮の際に、データは辞書を利用して圧縮されます。

    以下の手順で圧縮が行われます。

    1. データを先頭から読み込みます。

    2. 辞書と照合して、パターンに対応する置換値を見つけます。もし照合できない場合は、次の文字に進みます。

    3. 照合できた場合は、パターンを置換値に置き換え、圧縮データに追加します。

    4. 置換値が追加されたら、次の文字に進み、同じ手順を繰り返します。

    5. 全てのデータを圧縮し終えると、圧縮データが作成されます。

    この流れで作成されるのが「.zip」「.lzh」「.cab」などといったフォルダーになります。

    データの復元(展開)

    圧縮されたデータを元の状態に戻すためには、展開(解凍)が必要です。展開は圧縮の逆の手順を実行します。

    1. 圧縮データを先頭から読み込みます。

    2. 辞書と照合して、置換値に対応するパターンを見つけます。

    3. 照合できた場合は、パターンを元のデータに置き換え、展開データに追加します。

    4. 置換値が追加されたら、次の文字に進み、同じ手順を繰り返します。

    5. 全ての圧縮データを展開し終えると、元のデータが復元されます。

    フォルダー圧縮の利点

    ここまで解説してきたフォルダー圧縮は多くの人が使っているものですので、メリットはざっくり理解されていると思いますが、知らない方向けに説明をしていきます。

    ストレージの節約

    フォルダー圧縮により、ファイルやフォルダーのサイズを小さくすることができます。これにより、ハードディスクやクラウドストレージの容量を節約することができます。

    ファイル転送の効率化

    圧縮されたフォルダーは、1つのファイルとして扱われます。このため、ファイル転送やバックアップの際に、圧縮されたファイルを一括で送ることができ、効率的に処理することができます。

    ファイルの整理と保護

    フォルダー圧縮は、関連するファイルやフォルダーをまとめることができます。これにより、ファイルの整理がしやすくなり、保護やセキュリティの向上にもつながります。

    まとめ

    以上が、フォルダー圧縮の仕組みや詳細な流れになります。

    結論、圧縮はデータの特徴を活用してサイズを縮小して展開によって元のデータを再構築する技術です。

    この仕組みにより、ストレージの節約やデータの効率的な転送が可能となり、データの保護/セキュリティ向上が可能となります。

    普段何気なく使用している技術もよく知らない場合があったりしますので、ぜひ知っておくといいかなと思います!

    参考資料

    Data Compression Explained

    Introduction to Data Compression