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 Format は Windows Vista のインストール/ディスクイメージ用ファイル形式であり、圧縮に LZX を使っている。

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

外部リンク 
 The LZX page Amiga 版 LZX アーカイバをダウンロード可能
 aminet unlzx のソースコードをダウンロード可能
 Convert LIT ソースコードもある。

データ圧縮