今日はフィル・カッツの誕生日(1962~2000)。
レフ・テルミンの命日(1993)のほうも面白そうだけど、今日はフィルの方で。
PKZIP 、という名前に覚えのあるオールド・プログラマはどれくらいいるでしょう?
この PK とは、 Phil Katz … 本名 Phillip Walter Katz のイニシャルです。
PKZIP を知らない人でも、ZIP という拡張子が付いたファイルを見たことはあるでしょう。
Windows では標準的な圧縮形式になっていて、OS から直接操作することができます。
この形式を考案した人が、フィル・カッツ。
だから、多分多くの人がお世話になっています。
圧縮ソフトウェアの技術と言うのはそれほど古くありません。
一番簡単な圧縮方法とて知られる「ラン・レングス」はいつ考案されたのか、調べてみたけど…ちょっとわかりませんでした。
ちなみに、Wikipedia などではラン・レングスは「白と黒以外にほとんど情報がないモノクロファクシミリでよく使われている」となっているのですが、ファクシミリはもうちょっと頭の良い方法で圧縮をおこないます。
まぁ、ラン・レングスの応用であることに異論はありませんが。
ラン・レングスの延長上にある考え方で、もっと応用が利くようにしたスライド辞書圧縮は、LZ77 という名前で呼ばれるように、1977 年に考案されています。
これをさらに改良した LZW は 1983年に特許が成立します。
この後 LZW アルゴリズムは公開され、「特許がある」とは注意されなかったため、1984年には GIF に、1985 年には UNIX の compress に使用されます。
後に特許問題で騒ぎとなりましたが、特許を持っていたユニシスが請求権を放棄することで解決しました。
(特許の有効期間は20年で、有効期限内に放棄しました。2003年には法的にも失効しています)
この LZW 圧縮を取り入れ、1985年に ARC というプログラムが誕生します。
パソコン用としては最初期の圧縮プログラムで、ソースコードも公開されたことから多くのコンピューターに移植されました。
このソースをもとにフィル・カッツが作ったプログラムが、PKXARC でした。
展開部分のみをアセンブラで書きなおしたもので、本家 ARC よりも高速に動作しました。
シェアウェアとして公開したところ寄付が集まったので、これを開発資金として、圧縮機能も付けた PKARC が発表されます。
しかし、PKARC は「ARC」というプログラムの名称(商標)をそのまま使用している、と訴訟になります。
フィルは、PKARC の名前を変えて PKPAK として公開します。
しかし、訴訟により調査された結果、ARC という名称だけでなく、プログラムがほとんど ARC の流用だったことが明らかになります。
結局フィルは ARC の開発元と和解しますが、多額の支払いを行うことになり、さらに今後もソフトが売れるたびに売り上げの 6.5% を支払わなくてはならない、と言う内容でした。
そこで、フィルは ARC 互換ではないソフトを開発することにします。
圧縮方法を研究し、よりよい圧縮ソフトとして作り出したのが 1989年に発表された、PKZIP でした。
#ちなみに、前年の 1988 年には、国産で一時代を築いた圧縮ソフトである LHarc が発表されています。
ZIP が今でも古びない理由の一つは、これが「圧縮ソフト」ではなく、「アーカイバ」だからでしょう。
圧縮はおまけ機能に過ぎない…といっても、本体よりも重要かもしれない、食玩のおまけのような存在ですが(笑)
アーカイバとは、複数のファイルをまとめて管理しやすくするソフトのこと。
アーカイバであると言うことは、1つのファイルの中で複数のファイルが扱える…いうなれば「ファイルシステム」としてのフォーマットを整えていることになります。
おそらく、圧縮だけでなくアーカイブを行う、というのは ARC から受け継いだもの。
ARC は名前からしてアーカイバです。
UNIX では、アーカイバは tar 、圧縮は compress 、と役割がわかれていました。
現在では compress はほとんど使われず、gzip (PKZIP と名前が似ているが全く別物) が使われますが、役割が分担されていることは変わりません。
UNIX のようにプログラムごとに機能を分割しているメリットは、よりよいソフトができた場合、機能単位で変更できることです。
しかし、tar で1つのファイルにまとめてから、gzip 、と言う方法は、「一つだけファイルを取り出したい」時には、一度全部を解凍しなくては tar で取り出すことができない、と言う意味にもなります。
ここは UNIX 方式の不利な点です。
PKZIP では、アーカイブと圧縮の両方を一つのソフトで扱っているため、アーカイブ内のファイルを一つだけ指定して解凍、というような操作が簡単に行えます。(そのように設計されています)
そして、アーカイブ内の各ファイルは、ファイルごとに違う圧縮方法を使用することができました。
これは、後でよりよい圧縮方法が出現した際には、柔軟に圧縮方法を変更できることを意味します。
つまり、「アーカイバ」としての機能と「圧縮ソフト」としての機能は、ファイル形式としては分離されているのです。
もちろん、後のプログラムでもこのような特徴を持ち、より高機能なソフトは現れています。
しかし、「最初に普及し」柔軟な扱いが可能な ZIP 形式は、標準となって今でも使われているのです。
長い間には、ZIP も新しい形式に移行していくでしょう。
しかし、当面は使われ続けることになりそうです。
他にもいろんな圧縮ソフトがあるのですが、今日はフィル・カッツの話をしたかっただけなので取り上げません。
知りたい人は、こちらのページが面白いかと思います。
といいつつ、一つだけ書きたい話を…
本文中で LHarc (1988) のことに触れましたが、後に大幅に作り変え、LHa (1990) になっています。LZW の特許に気づき、特許回避したのと同時に、圧縮率をさらに上げたものです。
PKZIP も、 ver 2.0 (1993) で、後に「Deflate」と呼ばれるアルゴリズムを導入し、LZW 特許を回避しています。
この Deflate アルゴリズム自体は、1990年8月には特許申請されています。
LHa のアルゴリズムを参考にして考案されたものだそうで、少し変更されていますがほぼ同じアルゴリズムだそうです。(僕は詳細を知らないので伝聞になってしまいますが)
この微妙な違いにより、PKZIP の形式よりも LHa の形式の方が圧縮率は高かったようです。
さらに後に開発される gzip (1992) では、PKZIP と同じ方法を使っています。
で、以下は過去に読んだ記事のうろ覚え再現。
(圧縮ソフトの話を書いていたら、これを書きたくなった)
gzip の作成に当たっては、手に入る多くの圧縮ソフトを評価し、特許などに触れない中で最良の圧縮率の物を参考にしたらしいです。
後に、gzip 開発者に日本人があった際に、「圧縮率で選んだのに、なんで LHa の方法使わなかったの?」と聞いてみます。
「評価方法になんか手違いがあって、LHa の圧縮率はそれほど高くない、とういう結果だったんだよ。gzip をリリースした後で間違いに気づいたけど、使われ始めたらもう互換性のない方法は取れない。だから申し訳ないけどこのまま行くよ」
というような答えだったとか。
日本人としては、日本の良い技術が使われなかったのはちょっと残念です。
同じテーマの日記(最近の一覧)
関連ページ
Burn ALL GIFs day【日記 13/11/05】
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |