コンテンツにスキップ

英文维基 | 中文维基 | 日文维基 | 草榴社区

「LHA」の版間の差分

出典: フリー百科事典『ウィキペディア(Wikipedia)』
削除された内容 追加された内容
エピソード: "archive" が「書庫」であるのは、日英対訳として全く一般的
Cewbot (会話 | 投稿記録)
m Bot作業依頼:インターネットアーカイブ - log
102行目: 102行目:
LHAとLZH形式は、1988年の登場以来、[[パソコン通信]]や[[フロッピーディスク]]での[[データ]]やり取りが主流の時代に重宝されて、MS-DOSのみならず各種のOSに移植されて発展を続けた。[[ZIP (ファイルフォーマット)|ZIP]]形式アーカイブを作成するためのPKZIPが有料の[[シェアウェア]](展開用のPKUNZIPは[[フリーソフトウェア]]であった)だったこともあり、[[日本]]国内はもとより海外でも広く使われるようになった。[[1990年代]]に[[ハードディスク]]や[[インターネット]]が広く普及する時代となっても、[[日本]]国内では事実上のデータ圧縮の標準的な形式として浸透していた。
LHAとLZH形式は、1988年の登場以来、[[パソコン通信]]や[[フロッピーディスク]]での[[データ]]やり取りが主流の時代に重宝されて、MS-DOSのみならず各種のOSに移植されて発展を続けた。[[ZIP (ファイルフォーマット)|ZIP]]形式アーカイブを作成するためのPKZIPが有料の[[シェアウェア]](展開用のPKUNZIPは[[フリーソフトウェア]]であった)だったこともあり、[[日本]]国内はもとより海外でも広く使われるようになった。[[1990年代]]に[[ハードディスク]]や[[インターネット]]が広く普及する時代となっても、[[日本]]国内では事実上のデータ圧縮の標準的な形式として浸透していた。


MS-DOSの後継OSであるWindowsへの対応としては、1995年に[[NIFTY-Serve]]上でバージョン3.0に向けたテスト版の位置づけでバージョン2.67が公開されたが、作者である[[吉崎栄泰]]の本業(医師)が忙しくなった<ref name="LHAWORLD">[http://web.archive.org/web/19990506162851/www.clione.ne.jp/lha/lha4.html 吉崎栄泰のLHAワールド - LHAの今とこれから] - [[インターネットアーカイブ]]の1999年5月8日付のキャッシュ</ref>ためなのか、その後のバージョンアップ版は公開されておらず、LHAならびにLZH形式の開発は事実上停止状態にある。このためWindowsでは、すでに公開されているソースコードや仕様を元に他の人物が開発したアプリケーション(unlha32.dll、[[Lhaplus]]、[[Lhasa]]、[[+Lhaca]]など)によってLZH形式の圧縮・展開が行われた。バージョン2.67は[[EXEフォーマット|EXE形式]]として提供されたが、正式バージョンである3.0ではエンジン部分のみを[[DLL]]として提供する構想<ref name="LHAWORLD"></ref><ref>バージョン2.67付属ドキュメント</ref>だった。結果的にその役割はMicco作のUnlha32.dllが担うことになる。
MS-DOSの後継OSであるWindowsへの対応としては、1995年に[[NIFTY-Serve]]上でバージョン3.0に向けたテスト版の位置づけでバージョン2.67が公開されたが、作者である[[吉崎栄泰]]の本業(医師)が忙しくなった<ref name="LHAWORLD">[http://web.archive.org/web/19990506162851/www.clione.ne.jp/lha/lha4.html 吉崎栄泰のLHAワールド - LHAの今とこれから] - [[インターネットアーカイブ]]の1999年5月8日付のキャッシュ</ref>ためなのか、その後のバージョンアップ版は公開されておらず、LHAならびにLZH形式の開発は事実上停止状態にある。このためWindowsでは、すでに公開されているソースコードや仕様を元に他の人物が開発したアプリケーション(unlha32.dll、[[Lhaplus]]、[[Lhasa]]、[[+Lhaca]]など)によってLZH形式の圧縮・展開が行われた。バージョン2.67は[[EXEフォーマット|EXE形式]]として提供されたが、正式バージョンである3.0ではエンジン部分のみを[[DLL]]として提供する構想<ref name="LHAWORLD"></ref><ref>バージョン2.67付属ドキュメント</ref>だった。結果的にその役割はMicco作のUnlha32.dllが担うことになる。


[[21世紀]]に入った頃からは、他の形式の方が圧縮率で上回ることが多くなった他、[[ファイル名]]に[[Unicode]]が含まれたデータを扱えないこと、[[暗号化]]機能がないなど不便さが目立ちつつある。またZIP形式の圧縮復元機能が[[macOS|Mac OS X]]や[[Microsoft Windows Millennium Edition|Windows Me]]および[[Microsoft Windows XP|Windows XP]]以降に内蔵されたことにより、特に理由がない限り圧縮形式としてはZIPが使われることが多くなっている<ref>両者ではファイル名のエンコードが異なり、macOSの機能([[UTF-8]]でエンコード)で作成したアーカイブをWindowsの機能([[Microsoftコードページ932]]でエンコード)で復元すると、ファイル名によっては文字化けする。内容には影響しない。Windows → macOSでは問題ない。</ref>。
[[21世紀]]に入った頃からは、他の形式の方が圧縮率で上回ることが多くなった他、[[ファイル名]]に[[Unicode]]が含まれたデータを扱えないこと、[[暗号化]]機能がないなど不便さが目立ちつつある。またZIP形式の圧縮復元機能が[[macOS|Mac OS X]]や[[Microsoft Windows Millennium Edition|Windows Me]]および[[Microsoft Windows XP|Windows XP]]以降に内蔵されたことにより、特に理由がない限り圧縮形式としてはZIPが使われることが多くなっている<ref>両者ではファイル名のエンコードが異なり、macOSの機能([[UTF-8]]でエンコード)で作成したアーカイブをWindowsの機能([[Microsoftコードページ932]]でエンコード)で復元すると、ファイル名によっては文字化けする。内容には影響しない。Windows → macOSでは問題ない。</ref>。

2017年9月4日 (月) 17:07時点における版

LHA
作者 吉崎栄泰
最新版
2.13 / 1991年7月20日
(33年前)
 (1991-07-20)
最新評価版
2.55B / 1992年11月24日
(31年前)
 (1992-11-24)
プログラミング
言語
アセンブラ(x86)、C言語
対応OS MS-DOS
対応言語 日本語、英語
種別 アーカイバ
ライセンス フリーウェア
テンプレートを表示
LHA32
作者 吉崎栄泰
最新版
正式バージョンは未公開
最新評価版
2.67 / 1995年10月8日
(29年前)
 (1995-10-08)
プログラミング
言語
アセンブラ(x86)、C言語
対応OS Microsoft Windows
種別 アーカイバ
ライセンス フリーウェア
テンプレートを表示
LZH
拡張子.lzh / .lha
MIMEタイプapplication/x-lzh-compressed[要出典] IANA非登録
タイプコード"LHA "
UTIpublic.archive.lha
マジック
ナンバー
-lh?- (?はバージョン)
開発者吉崎栄泰
種別データ圧縮

LHA(ラー)とは、ファイルの圧縮とアーカイブを行うソフトウェアのひとつ。また、圧縮ファイルの形式はその拡張子からLZH(エルゼットエイチ)と呼ばれる。ここではLZH形式についても述べる。

LHAプログラム

LHAは、奥村晴彦が考案したアルゴリズムをもとに、吉崎栄泰が実装したもので、1988年にパソコン通信で公開した。

登場当時はLHarcエルエイチアークという名前で、1990年頃に全面的に作り直したのに併せLHAに改称した。当初はLHに改称の予定で、実際にバージョン2.00はLHとして公開したが、MS-DOSバージョン5.0の内部コマンドLOADHIGHの略称LHと被ったためLHAとした。ごく初期には「LHx/LHa」という名称・表記だった。

発音は、初期バージョンではLHAを「ラー」とすると作者による説明があったが、後期バージョンではその説明はない。また、RARとの混同を避けるためにも、「エルエイチエー」「ルハー」「エルハ」等といった発音が大勢である。

LZH形式

LZH形式の圧縮アルゴリズムは、LZSS法で圧縮したデータをさらにハフマン法を用いて圧縮するLZHUFアルゴリズムを用いる。LZHUFは奥村晴彦のLZARI(LZSS + 算術符号)の効率を向上するために吉崎栄泰が考案したものである。

LZSS法ではスライド窓や最大一致長を大きく取るほどに圧縮率の向上が見込めるが、一方でむやみに大きくすると最長一致列の探索に時間がかかり、また多くのメモリも必要になる。このため初期の版ではスライド窓や最大一致長の大きさは小さくとられていたが、探索アルゴリズムの改良やコンピュータの性能向上などにより、次第に大きな値が採用されるようになった。

LZH圧縮形式は大きくlh0、lh1、lh4/5/6/7に分けられる。 圧縮率を高めたlh6/7方式が公開されているが、開発途中ということで同形式を使ったファイルの配布は推奨されていない。

lh0形式

lh0形式は一切の圧縮を行わない。可逆圧縮では圧縮前よりも圧縮後のデータの方がサイズが大きくなる場合があり、lh0形式はそれを避けるために使用される。ユーザーが意図してこの形式を使う場合は、ファイルの破損のチェックに使ったり[1]、複数のファイルをまとめるだけのアーカイバとして利用される。

lh1形式

lh1形式のスライド窓の大きさは4Kバイト、最大一致長は60バイト。文字と一致長は動的ハフマン法で符号化されるが、一致位置はハフマン法を用いずに符号化される。LHarc 1.xではこの形式。

lh4/5/6/7形式

各形式はスライド窓の大きさのみが異なり、それぞれ4K/8K/32K/64Kバイトである。最大一致長は256バイト。

圧縮データの展開速度の向上を目的として、符号化がlh1形式の動的ハフマン法から静的ハフマン法に変更されている。また、一致位置も、文字、一致長とは別にハフマン法で符号化される。

MacLHA形式

MacLHA」(旧MacLHarc)はMacintosh(Mac OS)のファイルシステム上のファイルを、LHA形式で圧縮するフリーソフトとして、石崎一明によって開発され配布されたフリーウェア。当時一般的であった他のアーカイバ(StuffItおよびCompact Pro)はシェアウェアであったり、クロスプラットフォームでなかったりしたため、国内では広く使われた。基本圧縮アルゴリズムはMS-DOS用のLHAと同じだが、Mac OSのファイルシステムで使用されるリソースフォークを含んだ状態で圧縮する為にMacBinary形式にエンコードするという機能が加えられている。このため、MacLHAの圧縮ファイルはMS-DOSやWindows上のLHA及び互換ソフトでは正常に展開する事ができない。また、ソフトウェア次第ではMacで解凍してもMacBinary形式のファイルが出てくるという事態も起こる。実際、StuffIt Expanderで解凍を行った場合はMacBinaryをデコードしないため混乱したユーザは多い。この場合、出てきたファイルを再度StuffIt Expanderに通せばMacBinaryがデコードされる。

この回避策としてMacBinaryに変換せずに圧縮するオプションが付随しているが、この方法で圧縮した場合、逆に解凍時にMac OS (Classic Mac OS) ではファイル識別が出来ない状態になる。それが実行ファイルであった場合、正常に起動できなくなる場合もある。これを防ぐため、バージョンによっては、このオプションを有効にしてリソースフォークを含むファイルを追加しようとすると、MacBinaryで保存するか、データフォークのみ保存するか(リソースフォークとFinder情報は失われる)、処理を中止するかの選択を促すダイアログが表示される。

経緯

LHAとLZH形式は、1988年の登場以来、パソコン通信フロッピーディスクでのデータやり取りが主流の時代に重宝されて、MS-DOSのみならず各種のOSに移植されて発展を続けた。ZIP形式アーカイブを作成するためのPKZIPが有料のシェアウェア(展開用のPKUNZIPはフリーソフトウェアであった)だったこともあり、日本国内はもとより海外でも広く使われるようになった。1990年代ハードディスクインターネットが広く普及する時代となっても、日本国内では事実上のデータ圧縮の標準的な形式として浸透していた。

MS-DOSの後継OSであるWindowsへの対応としては、1995年にNIFTY-Serve上でバージョン3.0に向けたテスト版の位置づけでバージョン2.67が公開されたが、作者である吉崎栄泰の本業(医師)が忙しくなった[2]ためなのか、その後のバージョンアップ版は公開されておらず、LHAならびにLZH形式の開発は事実上停止状態にある。このためWindowsでは、すでに公開されているソースコードや仕様を元に他の人物が開発したアプリケーション(unlha32.dll、LhaplusLhasa+Lhacaなど)によってLZH形式の圧縮・展開が行われた。バージョン2.67はEXE形式として提供されたが、正式バージョンである3.0ではエンジン部分のみをDLLとして提供する構想[2][3]だった。結果的にその役割はMicco作のUnlha32.dllが担うことになる。

21世紀に入った頃からは、他の形式の方が圧縮率で上回ることが多くなった他、ファイル名Unicodeが含まれたデータを扱えないこと、暗号化機能がないなど不便さが目立ちつつある。またZIP形式の圧縮復元機能がMac OS XWindows MeおよびWindows XP以降に内蔵されたことにより、特に理由がない限り圧縮形式としてはZIPが使われることが多くなっている[4]

ただし、LZHアーカイブを展開する需要は、既存のアーカイブ(特に日本産オンラインソフトウェア)の展開など依然存在している。このためWindows XPの「Webサービスを使用して適切なプログラムを探す」機能では、LZHによるものが常に最多だったという[5]。それを受けてマイクロソフト社はLZH展開アドオン「Microsoft 圧縮 (LZH 形式) フォルダ」(Windows XPおよびWindows Server 2003用)を正式に配布し[6]、日本語版のWindows 7ではZIP形式と同様に「圧縮フォルダ」として利用できるようになった。ただし、いずれもLZH形式での圧縮機能は搭載されておらず、圧縮には別途ソフトが必要となる。また、WinRARPeaZip7-Zipなどの海外製のアーカイブツールでもLZHに対しては解凍のみ対応している場合が多い。

エピソード

日本では、アーカイブから中のファイルを取り出したり、圧縮データを展開(伸張)すること(たいていの人が識別できず、混同している)を「解凍」と呼ぶことが多いが、これはLHAのマニュアルを通して広まった、という面がある(当時のパソコン通信に参加した人数はそれほど多くなかったが、LHAはフリーソフト等を使うために必須のツールとなったため、雑誌の付録ディスクなどを通して、多くの人が入手したツールとなったことから。アーカイブへの格納(同時に圧縮するかもしれない[7])は「凍結」と呼んでいる。なお、英語メッセージも同様に、meltとfreezeとなっている)。LHAの開発にも関わっている奥村晴彦によれば[8]この意味の「解凍」という表現自体は、LHAより古くからパソコン通信で広く使われていた。

LZH形式の使用中止の呼びかけ

対応ツールの1つであるUnlha32.dllの作者は、アンチウイルスソフトの多くが一部のLZHアーカイブ(新しい圧縮形式、巨大な拡張ヘッダー、多数の拡張ヘッダーのいくつか)を正しく検疫できないことを2006年に発見し[9]情報処理推進機構や各セキュリティベンダーに報告した。しかしZIPやCABといった他の形式では同様のケースに対応しているのにLZHについては4年後の2010年になっても対応が進まない[10]ことから、6月5日にLZH形式の利用を控えるよう呼びかけを行っている[11]

これを受けて、ベクターがLZH形式での新規受付を中止している[12]

この問題はLHAおよびLZH形式そのものの脆弱性ではない(問題点はアンチウイルスソフトが対応しない点である)ものの、LZH形式に含まれるマルウェアをアンチウイルスソフトが検出できないケースが存在する[要出典]

脚注

  1. ^ CRC値のみでハッシュ値でのチェックは無いため、意図的な改竄は検出できず、破損の検出以上のチェックには使えない。
  2. ^ a b 吉崎栄泰のLHAワールド - LHAの今とこれから - インターネットアーカイブの1999年5月8日付のキャッシュ
  3. ^ バージョン2.67付属ドキュメント
  4. ^ 両者ではファイル名のエンコードが異なり、macOSの機能(UTF-8でエンコード)で作成したアーカイブをWindowsの機能(Microsoftコードページ932でエンコード)で復元すると、ファイル名によっては文字化けする。内容には影響しない。Windows → macOSでは問題ない。
  5. ^ 三柳英樹 (2005年4月7日). “マイクロソフト、Windows XPの正規ユーザー特典としてLZH形式対応を提供”. INTERNET Watch. Impress Watch. 2009年4月7日閲覧。
  6. ^ 「圧縮(LZH 形式)フォルダ」をWindows(R) XPの追加機能として4月28日(木)より提供開始”. マイクロソフト (2005年4月7日). 2009年4月7日閲覧。
  7. ^ 全く圧縮できない場合など、lh0形式で格納する場合は圧縮しない。
  8. ^ Haruhiko, Okumura. (@h_okumura). "「解凍」はLHAより古くからパソコン通信で広く使われていました https://t.co/Ln2jA65uvf " 2017年1月9日, 20:42 (JST). Tweet.
  9. ^ MHVI#20061019:LZH 書庫のヘッダー処理における脆弱性について
  10. ^ MHVI#20100425:LZH 書庫のヘッダー処理における脆弱性について (2010 年版)
  11. ^ LZH 書庫利用における危険性について - Micco's HomePage(Unlha32.dll作者のサイト) 2010年6月5日
  12. ^ LZH形式でファイルをご登録いただいている作者のみなさまへ - ベクター 2010年6月9日

関連項目

参考文献

  • 奥村晴彦・吉崎栄泰「圧縮アルゴリズム入門」『C MAGAZINE』1991年1月号、ソフトバンク、44-68頁、1991年。

外部リンク

以下は吉崎栄泰作のLHAダウンロードページ