LZX

LZX は、LZ77から派生したデータ圧縮アルゴリズムの一種。また、そのアルゴリズムを使ったファイル・アーカイバを指す。Jonathan Forbes と Tomi Poutanen が考案した。

LZXアルゴリズム応用の具体例

[編集]

Amiga LZX

[編集]

LZX は1995年、Amiga用ファイル・アーカイバとしてリリースされた。当時、作者ら(Forbes と Poutanen)はカナダウォータールー大学の学生だった。当時の圧縮ソフトとしては一般的なシェアウェアとしてのリリースだった。登録版には試用版にはないバグ修正と改良が含まれていた。1997年、作者らはキーファイルを無料で公開して以降の開発と登録作業を止めることにし、それによって誰でも登録版を使えるようになった。

Microsoft Cabinet ファイル

[編集]

1997年、Forbes はマイクロソフトに入社し、マイクロソフトのCABアーカイバにLZXアルゴリズムが採用された。Amiga 版 LZX では探索ウィンドウサイズが64KiBで固定だったが、マイクロソフト版では32KiBから2048KiBまで2のべき乗でウィンドウサイズを指定可能であった。また特別なプリプロセッサが追加され、x86 の "CALL" 命令を検出してそのオペランドを相対アドレッシングから絶対アドレッシングに書き換える処理を行った。それにより、同じルーチンのCALL命令は同じパターンとなり、圧縮効率が高まった。

Microsoft Compressed HTML Help (CHM) ファイル

[編集]

このオンラインヘルプの形式では、HTMLデータをLZXアルゴリズムで圧縮するようになった。しかし、ランダムアクセスの速度を向上させるため、圧縮ルーチンは64KiB毎にリセットされ、32KiB毎に16ビット境界に再整列するよう変更された。そのため、全体を一度に伸張する必要はなく、直近の64KiBまで高速にシークでき、そこから再度伸張可能となっている。

Microsoft EBook Reader (LIT) ファイル

[編集]

LITファイルはCHMのファイル形式を単純に拡張したもので、やはりLZX圧縮を行っている。

Windows Imaging Format (WIM) ファイル

[編集]

Windows Imaging FormatWindows Vista のインストール/ディスクイメージ用ファイル形式であり、圧縮に LZX を使っている。

LZXファイルの伸張

[編集]

Amiga 版 LZX では、unlzx プログラムで伸張を行う。CABファイル形式では、LZXで圧縮されているものは cabextract プログラムで伸張できる。CHM形式のファイルを伸張してHTMLファイルを取り出すプログラムは各種存在する(CHMの記事参照)。LITファイルは Convert LIT というソフトウェアを使って伸張可能。

外部リンク

[編集]
  • The LZX page Amiga 版 LZX アーカイバをダウンロード可能
  • aminet unlzx のソースコードをダウンロード可能
  • Convert LIT ソースコードもある。