10.

LZH(.lzh)完全ガイド — 吉崎栄泰氏作・90年代日本標準・現代非推奨の理由

編集
この記事の要点
  • LZH は 吉崎栄泰 氏が 1988 年に発表した日本発の圧縮形式で、1990 年代の日本国内ではデファクト標準だった
  • 内部は LZSS(Lempel-Ziv-Storer-Szymanski)+静的/動的 Huffman 符号。後継仕様で ADPCM 拡張も
  • マジックは固定ヘッダ無しで、ヘッダ先頭の特定オフセットに 2D 6C 68("-lh")+ 圧縮方式記号が現れる(例: -lh5-
  • Vector(窓の杜の前身)等を通じて大量のフリーウェアが LZH で配布され、Lhaplus / LhaForge / 7-Zip 等で展開された
  • Windows XP 以降に標準で ZIP がサポートされたこと、ZIP が国際標準として浸透したことで急速に衰退
  • 🚨 2010 年に開発者 Micco 氏が UNLHA32.DLL の開発・サポート終了を表明し、新規利用を非推奨化。複数の脆弱性が放置されており現代では使用すべきでない
  • 受け取り側に LZH ファイルが届く場合は隔離した環境で展開、可能なら送信元に ZIP/7z での再送を依頼するのが安全

概要

LZH(拡張子 .lzh または .lha)は、日本の医師でありプログラマでもある 吉崎栄泰(よしざき・はるやす)氏が 1988 年に発表した圧縮アーカイブ形式です。当初は MS-DOS 向けの LHarc、後継の LHA(Larc Hyper Archive または LHa for DOS)として広く配布され、シェアウェア・フリーウェア時代の日本において圧倒的なシェアを誇りました。

1990 年代の日本では Vector(現 Vector ソフトウェアライブラリ、旧称「BECKY!」や「窓の杜の前身」と並ぶ大型ダウンロードサイト)や パソコン通信(NIFTY-Serve、PC-VAN 等)を通じて、おびただしい数のフリーソフト・シェアウェアが LZH 形式で配布されました。同人ゲーム、エディタプラグイン、IME 辞書、フォントなど、当時の日本のホビーコンピューティング文化の多くが LZH の上に成立していたといっても過言ではありません。

しかし、Windows XP(2001 年)が標準で ZIP の読み書きをサポートしたこと、世界市場では ZIP が圧倒的な標準であり国際的なソフトウェア配布で LZH が通用しないこと、そして 2010 年に開発者 Micco 氏(UNLHA32.DLL 開発者)が「LZH 形式の利用を控えるべき」という使用中止勧告を発表したことなどが重なり、現代の日本でも LZH は完全にレガシ扱いとなっています。

内部構造とマジックナンバー

LZH は ZIP のように先頭固定マジックを持たず、各ファイルエントリのヘッダ先頭付近に圧縮方式を示すシグネチャが現れる構造です。代表的なものを示します。

オフセット 2-6方式名アルゴリズム
-lh0-無圧縮Store のみ
-lh1-LH1LZSS + 動的 Huffman(4KB 辞書)
-lh4- / -lh5-LH4 / LH5LZSS + 静的 Huffman(4KB / 8KB 辞書)
-lh6- / -lh7-LH6 / LH7LZSS + 静的 Huffman(32KB / 64KB 辞書)
-lhd-ディレクトリデータなし、ディレクトリエントリ
-lz4- / -lz5-LArc 互換レガシ(LArc 形式の取り込み)

ヘッダ形式には Level-0 / Level-1 / Level-2 / Level-3 のバリアントがあり、Level によってファイル名長制限、タイムスタンプ精度、拡張ヘッダ対応が異なります。Level-2 以降ではディレクトリ階層、シンボリックリンク、長いファイル名、UTF-8 ファイル名などをサポートします。

圧縮の中核は LZSS(LZ77 派生、繰り返し参照のインデックス/長さペアと文字を 1 ビットフラグで区別する方式)と、それを Huffman 符号 で更にビット詰めする 2 段構成です。当時としては優秀な圧縮率と高速性を両立しており、これが日本での普及を後押ししました。

主な用途

  • レガシ資産の解凍: 1990 年代〜2000 年代前半の日本産フリーウェア、同人作品の展開
  • 古い Vector / 雑誌付録 CD-ROM の中身取り出し
  • X68000 / PC-9801 系 のソフト配布アーカイブ展開(レトロ PC コミュニティ)
  • 古い同人ゲームの再頒布 元データ展開(再頒布時には ZIP/7z へ変換するのが現代の慣習)

現代における新規作成の用途はほぼ無く、純粋に「過去のアーカイブを開く」目的でのみ存在意義がある形式と言えます。

関連形式との比較

形式開発時代地域現代の評価
LZH吉崎栄泰1988-2000s日本中心非推奨(脆弱性・メンテ停止)
ZIPPKWARE1989-現在世界標準標準
ARJRobert Jung1991-2000s欧米レガシ
RAREugene Roshal1993-現在世界商用、ニッチ
7zIgor Pavlov1999-現在世界主流(高圧縮)

コマンド・ツール

現代の Windows では 7-Zip(公式版)、Lhaplus(更新停止、注意して使用)、LhaForge(後継として推奨)などで展開できます。Linux では lha(Jonathan Clark の lhasa など)が利用できます。

# ===== Linux (lhasa 推奨、メンテ継続中) =====
sudo apt install lhasa

# 中身一覧
lha l archive.lzh

# 展開
lha xw=./out archive.lzh

# ===== 7-Zip CLI (Linux/Mac/Windows) =====
7z l archive.lzh
7z x archive.lzh -oout/

# ===== Windows GUI =====
# LhaForge (推奨、OSS、Unicode 対応)
#   https://claybird.sakura.ne.jp/lhaforge/
# 7-Zip
#   https://7-zip.org/

新規作成は推奨されないため、圧縮側のサンプルは敢えて掲載しません。現代において新規 LZH を生成する正当な理由はほぼありません。

注意点・落とし穴

  • 🚨 開発者による使用中止勧告: 2010 年 6 月、長年 UNLHA32.DLL を開発・メンテしてきた Micco 氏が、「複数の脆弱性が修正されないまま放置されている」「LZH 形式自体に構造的なセキュリティ課題がある」として、LZH 形式の使用中止を強く呼びかけました。これは Windows 7 標準で LZH サポートが入った直後の出来事で、業界全体に大きな衝撃を与えました。
  • 脆弱性事例: ヘッダパーサのバッファオーバーフロー、ディレクトリトラバーサル(../../ を含むファイル名展開)など、複数の CVE が報告されている。アンチウイルスのスキャンエンジン経由で脆弱性が露出した事例もあり、「LZH を開くだけで感染」リスクは過去に複数存在した。
  • 長期メンテされていないツール: Lhaplus は更新が長く止まっており、近年のセキュリティ修正は適用されていない。代替として LhaForge(claybird 氏開発、OSS、現在もメンテ継続)の利用が推奨される。
  • 文字コード問題: 古い LZH は Shift_JIS でファイル名が記録されており、現代の UTF-8 環境で展開するとファイル名が文字化けする。lha や 7-Zip の -mcp=932 相当オプションで明示指定が必要。
  • 未知ソースの LZH は隔離環境で: メール添付・ダウンロードで届く未知 LZH は、隔離された VM やサンドボックス内で展開すること。送信元に対しては ZIP/7z での再送を依頼するのが最も安全。
  • 商用業務での新規利用は避ける: 上記理由から、業務システムが新規に LZH を生成・配布する設計を 2026 年現在で採用する正当な理由はない。レガシシステムからの移行時は ZIP/7z へ変換すること。

関連リンク

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. ZIP(.zip)
  2. TAR(.tar)
  3. GZ / GZIP(.gz / .tgz)
  4. 7z(.7z)
  5. RAR(.rar)
  6. BZ2 / BZIP2(.bz2 / .tbz2)
  7. XZ / LZMA2(.xz / .txz)
  8. Zstandard(.zst / .zstd)
  9. CAB(.cab)
  10. LZH(.lzh / .lha)

最近更新/作成されたページ