GCA(G Compression Archiver)

最新情報

ダウンロード

Windows95/98/Me/NT/2000/XP Win32アプリケーション+コンソールアプリケーションセット

 

あるゲーム用のライブラリを作っている最中、大量のファイルを管理するためにオリジナルのアーカイバが必要になり、どうせ作るのなら、すでに普及しているLZHやZIPにとってかわるようなものをということで、少々まじめに作ってみました。

GCA(G Compression Archiver)フリーソフトです。誰でもご自由にお使いいただけます。

 

性能

LZHと比べて、さらに2割ぐらい縮むようです。無圧縮画像、音声、テキスト等、なんでもOKです。現在非常に優秀なSZIPやZZIPやPPM系と比較しても、遜色ないばかりか、画像、音声、テキスト混在のアーカイブではそれらよりも高圧縮をたたき出すことが多いです。展開速度に至ってはこのレベルの中では最速に近いものだと思います。

圧縮率比較一覧表

 

操作方法

なお、あらかじめ、「オプション」「設定」等で、出力先の指定や、関連付け、圧縮モードなどの設定を行ってください。また、コンソールアプリの方は起動時のメッセージを参考にしてください。

設定項目、用語の説明

圧縮モード

無圧縮 ファイルを圧縮しないで、アーカイブだけ行います。非常に高速です。JPGやMP3のデータは既に圧縮がかかっているため、それらをまとめるときは、無圧縮を選択するとよいでしょう。
ファイル単位圧縮 デフォルトの圧縮モード。ファイルを個々に圧縮した後、アーカイブします。
ファイル連結圧縮(SOLIDモード) 一度ファイルを無圧縮でアーカイブした後、圧縮を行います。メールやログ、ソースコードなどのように、同じ種類の小さなファイルが多くある場合に選択するとよいでしょう。逆にそうでない場合はあまり圧縮がかからないので注意が必要です。

出力ファイル形式

GCAファイル形式 普通の圧縮ファイルです。展開(解凍)するときには、GCAを使います。
自己展開ファイル形式 ファイルを実行するだけで圧縮ファイルを展開できる形式です。100Kbyteほど増加してしまいますが、GCAを持っていない方に渡すときには便利です。

暗号について

gca.exe の version 0.7 から暗号がかけられるようになりました。しかし、かなり弱い暗号だと思ってください。誰かに解読されても責任は取れません。セキュリティを重視する場合は、もっと強い暗号ソフトを使ってください。しかし、それでもパスワードを忘れた場合の復元は不可能です。きちんと展開できるかチェックしたほうがよいでしょう。キーファイルを紛失したり破壊した場合も暗号の解除は不可能となりますので気をつけてください。

パスワード指定 指定した文字列をパスワードにして、暗号化を行います。パスワードには日本語文字も使えますので、「ほかほかごはんにょ〜」というパスワードもOKです。
キーファイル指定 私はパスワードには問題点を感じていました。覚えやすい意味のあるパスワードは、パスワードとしての機能を果たさないし、かといって無意味な文字列では忘れてしまったり、パスワードを書いたメモをなくしたりして困るものです。いやそもそもメモを見つかったらパスワードの役目は終わりです。

単なる文字列では忘れてしまうパスワードですが、これがあるイメージや音声、特定のファイルだったら覚えていられるのではないかと思い、特定のファイルで暗号化を行う機能をつけました。

「この圧縮ファイルは、どこそこのサイトのマ○チの画像で暗号をかけてあるよ。」とか、解凍すると出てくる付属の説明書が実はキーファイルになっていて、一緒に解凍される画像か何かにインプラントしてあるGCAファイルを取り出し、暗号解除するとか、いろんなことができます。

なお、キーファイルから生成される暗号はファイルの内容で決まり、ファイル名には依存しないため、名前を変えることができます。しかし、内容がわずかでも変わるとそのキーファイルは無効になりますので、うっかりキーファイルを書き換えてしまわないよう注意が必要です。

 

アルゴリズム

非常にシンプルです。基本的なアルゴリズムとして、BlockSorting、RangeEncoderを使用しています。与えられたデータをまず、BlockSortingで圧縮しやすいように並べます。そしてそれをエントロピー圧縮であるRangeEncoderで圧縮します。エントロピー圧縮では算術圧縮が有名ですが、特許問題があるため、RangeEncoderを使用しています。

BlockSortingは一般的に遅いと言われており、複雑な限定BlockSortingで速度を上げる方法もありますが、当プログラムでは、高速完全BlockSortingを行っています。また、RangeEncoderに独自の改良を加え高速化、さらに適応型RangeEncoderを開発し、組み込みました。

 

SDKについて

こちらからどうぞ。

 

GCAのMIME TYPEについて

「application/x-gca-compressed」を指定させていただきます。

 

免責