LHA圧縮についての注意点

ここで取り上げる事

 圧縮方式というとHUFFMAN法など有名なアルゴリズムが思い浮かびます。これは勉強すると大変面白いものですが、今回ここで取り上げるのは圧縮方式自体ではなく、LHA圧縮に関してのちょっとした覚え書です。

LHAとは

 本稿におけるLHAとは、北海道在住の内科医吉崎栄泰さんが開発されたフリーのファイル圧縮ソフトウェア(アーカイヴァ)LHA.EXEを指します。LHAによって圧縮されたファイルには「.lzh」という拡張子を付けることが慣例となっており、LHAが使用している圧縮方式をLZH方式と言ったりもします。圧縮アルゴリズムとしては静的HUFFMAN法を使用しているそうです。

LHA圧縮する際の注意点

 LHA圧縮する際には三つの大事な注意点があります。
 ファイル名圧縮方式書庫ヘッダ形式、です。

 まずファイル名について。現在解凍ツールは百花繚乱の状態。Windows用のものを挙げてみても、Lhasa、LHMelt、+Lhaca、Explzh、LHAユーティリティ32....etc.。これらのWindows用ツールでは当然のことながらロングファイルネイムに対応しています。しかし、LHA.EXE自体は8+3形式(注1)にしか対応していないようです。

例:C:\TEMPにtesttesttest.lzhを置きます。

C:\TEMP>lha e testtesttest

書庫ファイルがみつかりません:'testtesttest.LZH'

 この場合は「lha e testte~1」としてやれば解凍できます。しかし、今時LHAを使う場合というのはバッチ処理等で使う場合でしょう(例えば「圧縮→バックアップ」「解凍→リストア」など)。そのバッチ記述の中で「ロングファイル名の場合はMS-DOS形式のファイル名にしてから処理する」などと書くのは大変だと思われます。
 以上のことから、なるべくファイル名は8文字まで、と言えるでしょう。

 次に圧縮方式について。LHA圧縮にはlh5,lh6,lh7と三つの圧縮方式の選択肢があります。lh6,lh7、と圧縮効率、圧縮速度の良化が図られてきているのですが、現状lh6,lh7の公的な利用は禁止されています。実際にはlh6,lh7で圧縮したファイルの解凍は上記したようなツールを使えば可能な場合が多いのですが、やはり失敗することもあるようです。また、LHA.EXEは大きく分けて三つの普及ヴァージョンがあります。Ver2.13、Ver2.55、Ver2.67です。それぞれ「lh5のみ対応」「lh6に対応」「lh7に対応」となっています。注意が必要です。結局、lh5で圧縮するのが無難と言えます。

 最後に書庫ヘッダ形式について。LHAは、書庫ヘッダとして3つのヴァージョンがあります。h0,h1,h2です。これもやはり、h0→h1→h2と改良されているのですが、h2だとDOSソフトで解凍できない場合が多いようです。またh1ですと海外起源のソフトで解凍に支障がでることがあるとか。
 そう考えるとh0にしないといけないようになりますが…これは諸々の状況を考えて(面倒なので略)、h2でいいと思います。外国で利用することがある場合にはh1を利用、どうしてもh2,h1で解凍できないという人がいる場合にh0を使用、を結論とします。

注1:8+3形式=ファイル名が8文字まで、拡張子が3文字まで。

付記

 今回LHA.EXEの動作についての確認はVer2.55b、Ver2.67で行いました。

参考文献

* LHA.EXE添付文書
* LHMelt.exe添付文書
* UNLHA32.DLL添付文書

2000.3.23 仁衡琢磨 記
2001.10.9 改訂


NIHIRA Takuma

Back to the index.

home


Valid XHTML1.0! Valid CSS!