LHA
読み:エルエイチエイ
外語:LHA: LZ(LempelZiv)SS Huffman Archiver

 ファイルの圧縮アーカイブを行なうソフトウェアの一つ。
目次

基本情報

概要
 初版は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-から-lh7-までが公式に使われている。但し、-lh2--lh3--lh4-はテスト段階で没になったため現存せず、-lh6--lh7-はテスト版のため、配布用には使用してはいけない。
 -lh6-形式はLHA v2.50以上で解凍可能、LHA v2.60以上で作成可能。
 -lh7-形式はLHA v2.63以上で解凍可能であるが、作成可能な純正ソフトウェアはなく、WindowsのUNLHA32.DLL v0.62以上で作成できる。
 この他、Joe Jaredによる非公式の独自拡張で大型のスライド辞書を使ったものがあるとされる。詳細な仕様は不明。

LZHUF
 LHarcと呼ばれていた頃の圧縮は-lh1-と呼ばれるタイプである。LHAは、この後段に使われるハフマン符号を動的ハフマン符号から静的ハフマン符号に変更した。これはLZHUF法と命名されている。
 処理方法としては、メモリー内にバッファーを用意し、LZSSの出力を一時的に貯め、バッファーが満タンになるかファイル終了時点で静的ハフマン符号で圧縮を行なう。ここで圧縮効率を上げるために、頻度テーブルの更新に0圧縮や連長圧縮などを組み合わせている。
 現在、LHAで最も一般的な圧縮方式は-lh5-であり、ハッシュと二分木を用いた13ビットLZSSが使われている。その後開発された-lh6-でハッシュと線形リストを使った15ビットLZSSを初段に用い、後段は共通で静的ハフマン符号を組み合わせた。

フォーマット
 LHAはLArcから引き継がれたフォーマットが使われており、これを俗に「LHAフォーマット」という。
 完全に同じものではなく、現在使われているものは改良が施されており互換性がなく、古い実装では正常に扱えない。

再検索