LHA
読み:エルエイチエイ
外語:LHA: LZ(LempelZiv)SS Huffman Archiver
ファイルの
圧縮
と
アーカイブ
を行なうソフトウェアの一つ。
目次
基本情報
概要
特徴
名前
バージョン
アルゴリズム
一覧
LZHUF
フォーマット
基本情報
種類: データ圧縮
拡張子:
.LZH
MIMEタイプ名
: (IANA未登録)
ファイルタイプ: "LHA "
UTI
: public.archive.lha
マジックナンバー
: -lh?- (?は、アルゴリズムの識別番号)
開発者:
吉崎栄泰
概要
初版はLHarcとして1988(昭和63)年末に公開され、反響を呼んだ。その後も改良を続けられ、後にLHAとなった。
元々はMS-DOS用だったLHAも、ボランティアによりUNIXやMac OS、Windowsなどに移植され、またマニュアルの英訳版なども作られ英語版LHAも登場し、世界中に普及した。
対抗に
ZIP
があったが、LHAはフリーソフトでありかつオープンソースだった点が高く評価され、1991(平成3)年に吉崎栄泰はアメリカのPC Magazine編集長賞受賞、翌1992(平成4)年には第一回フリーソフトウエア大賞の大賞を受賞した。
特徴
名前
LHAの読み方については定義されていない。故に様々な読み方がある。
一般的には「エルエイチエー」ないし「エルエッチエー」だが、他には「えるは」「ら〜」といった読み方が確認されている。
当初はLHという名前にするつもりだったが、その頃にMS-DOS 5が登場しLOADHIGH(省略形LH)が追加されたため、衝突を避けるために
LHarc
になり、その後更にLHAに改名されたという経緯がある。
バージョン
吉崎栄泰による純正版での最新バージョンは
ニフティサーブ
でテスト版として公開されたLHA v2.67(DOS版/NT Console版)である。
Microsoft Windows用は第三者によりDLLとして提供される例が多く、Micco作のUNLHA32.DLLが広く使われている。
アルゴリズム
一覧
-lh0-
‐ 無圧縮格納
-lh1-
‐ 4Kiバイト辞書・最大一致長60バイトLZSS+
動的ハフマン符号
+固定符号位置
-lh2-
‐ 8Kiバイト辞書・最大一致長256バイトLZSS+動的ハフマン符号
-lh3-
‐ 8Kiバイト辞書・最大一致長256バイトLZSS+
静的ハフマン符号
-lh4-
‐ 4Kiバイト辞書・最大一致長256バイトLZSS+静的ハフマン符号+ツリー符号化改善
-lh5-
‐ 8Kiバイト辞書・最大一致長256バイトLZSS+静的ハフマン符号+ツリー符号化改善
-lh6-
‐ 32Kiバイト辞書・最大一致長256バイトLZSS+静的ハフマン符号+ツリー符号化改善
-lh7-
‐ 64Kiバイト辞書・最大一致長256バイトLZSS+静的ハフマン符号
無圧縮の
-lh0-
と、
-lh1-
から
-lh7-
までが公式に使われている。但し、
-lh2-
、
-lh3-
、
-lh4-
はテスト段階で没になったため現存せず、
-lh6-
、
-lh7-
はテスト版のため、配布用には使用してはいけない。
-lh6-
形式はLHA v2.50以上で解凍可能、LHA v2.60以上で作成可能。
-lh7-
形式はLHA v2.63以上で解凍可能であるが、作成可能な純正ソフトウェアはなく、WindowsのUNLHA32.DLL v0.62以上で作成できる。
この他、Joe Jaredによる非公式の独自拡張で大型のスライド辞書を使ったものがあるとされる。詳細な仕様は不明。
-lh8- ‐ 64Kiバイト辞書
-lh9- ‐ 128Kiバイト辞書
-lha- ‐ 256Kiバイト辞書
-lhb- ‐ 12Kiバイト辞書
-lhc- ‐ 1024Kiバイト辞書
-lhe- ‐ 2048Kiバイト辞書
LZHUF
LHarcと呼ばれていた頃の圧縮は
-lh1-
と呼ばれるタイプである。LHAは、この後段に使われる
ハフマン符号
を動的ハフマン符号から静的ハフマン符号に変更した。これは
LZHUF
法と命名されている。
処理方法としては、メモリー内に
バッファー
を用意し、LZSSの出力を一時的に貯め、バッファーが満タンになるかファイル終了時点で静的ハフマン符号で圧縮を行なう。ここで圧縮効率を上げるために、頻度テーブルの更新に0圧縮や連長圧縮などを組み合わせている。
現在、LHAで最も一般的な圧縮方式は
-lh5-
であり、ハッシュと
二分木
を用いた13ビット
LZSS
が使われている。その後開発された
-lh6-
でハッシュと線形リストを使った15ビットLZSSを初段に用い、後段は共通で
静的ハフマン符号
を組み合わせた。
フォーマット
LHAは
LArc
から引き継がれたフォーマットが使われており、これを俗に「
LHAフォーマット
」という。
完全に同じものではなく、現在使われているものは改良が施されており互換性がなく、古い実装では正常に扱えない。
再検索