LHA/LZH:日本のファイル圧縮の歴史を彩るアーカイバ
LHAは、ファイルの圧縮とアーカイブを行う
ソフトウェアであり、その圧縮ファイル形式はLZHとして知られています。1988年に
パソコン通信を通じて公開され、特に日本で高い普及率を誇ったLHA/LZHですが、その歴史、技術的な詳細、そして現在における状況について解説します。
開発と歴史
LHAの基となった
アルゴリズムは奥村晴彦氏によって考案され、吉崎栄泰氏が実装しました。当初は『LHarc』という名称でしたが、1991年頃に全面的に改修され、現在の『LHA』へと改名されました。
MS-DOSのコマンドLOADHIGH(LH)と名称が重複したため、LHAという名称になったという経緯があります。初期には『LHx/LHa』とも表記されていました。
LHAは、
フロッピーディスクが主流だった時代、
パソコン通信においてデータ交換の重要な役割を担いました。特に、同時期の主要な圧縮ユーティリティであるPKZIPが
シェアウェアであったのに対し、LHAはフリー
ソフトウェアとして提供されたことが、その普及に大きく貢献しました。id Softwareの
DOOMや
Quakeといった初期のゲームでもインストーラに採用されるなど、海外でも一定のシェアを獲得しました。
LZH形式は、LZSS法で圧縮したデータをさらにハフマン法で圧縮する『LZHUF』
アルゴリズムを用いています。LZHUFは、奥村晴彦氏のLZARI
アルゴリズムを改良したものです。LZSS法では、スライド窓や最大一致長を大きくすることで
圧縮率の向上が期待できますが、処理時間やメモリ消費量が増大するトレードオフが存在します。
LZH圧縮形式には、lh0、lh1、lh4/5/6/7といった複数の種類があり、スライド窓のサイズや符号化方法が異なります。lh6/7は高
圧縮率を達成しますが、開発途上のため配布は推奨されていません。lh0は圧縮を行わず、データの整合性チェックや単なるアーカイブ用途に使用されます。lh1はLHarc 1.xで使用された形式で、lh4/5/6/7は圧縮速度の向上を目的として符号化方法が変更されています。
Macintosh版:MacLHA
Macintosh環境向けには、『MacLHA』(旧MacLHarc) が石崎一明氏によって開発されました。Mac OSのファイルシステム固有の機能であるリソースフォークを扱うため、
MS-DOS版とは互換性がありません。リソースフォークを含む圧縮と、データフォークのみを圧縮するオプションが用意されていますが、オプション設定によってはMac OS上でもファイル識別ができない場合があります。
Windows時代と衰退
Windowsへの対応は、バージョン2.67がテスト版として公開されましたが、その後開発は事実上中断しました。そのため、Windows上でのLZHの処理は、公開されたソースコードや仕様をもとに開発されたサードパーティ製のアプリケーションに依存することになります。
21世紀に入ると、ZIP形式など他の圧縮形式の高
圧縮率化、
Unicode対応の欠如、暗号化機能の不足といった問題点が顕在化し、ZIPが
デファクトスタンダードとなりました。しかし、既存のアーカイブの展開需要は依然として存在し、Windows XPではLZH展開用のアドオンが提供されるなど、
マイクロソフト社も対応を続けてきました。Windows 7以降は標準でLZHの展開に対応していましたが、Windows 10 Creators Update以降は標準機能から削除されました。
セキュリティ上の問題と利用中止の呼びかけ
2006年、Unlha32.dllの作者であるMicco氏は、一部のLZHアーカイブをアンチウイルスソフトが正しく検疫できないことを発見し、警告を発しました。この問題はLHA/LZH形式自体の脆弱性ではなく、アンチウイルスソフト側の対応不足が原因です。しかし、対応が遅れたため、LZH形式の利用を控えるよう呼びかけが行われ、ベクターなどでは新規受付が中止されました。
まとめ
LHA/LZHは、日本の
パソコン通信時代において重要な役割を果たしたファイル圧縮形式です。その歴史的背景、技術的な詳細、そして現代における課題を理解することで、日本のコンピューティングの歴史の一端を垣間見ることができます。現在ではセキュリティ上の懸念や他の形式の普及により、利用は推奨されませんが、その歴史的意義は依然として大きいと言えるでしょう。