ファイル圧縮
ファイル圧縮と言えば元の世界ではZIP形式がほぼデフォルトとなってしまった。
他にもLZHやZOO、LZW、RAR、7zなどなど。
世の中には様々な圧縮形式&アーカイブ形式が存在する。
僕も自作アプリ組み込み用に圧縮展開プログラムを作ったことが有る。
なにせ世に出回っている圧縮展開ソフトを勝手に組み込めば著作権違反になるし、許可があっても組み込みに適したインターフェイスが有るとも限らない。
また、僕の場合は圧縮率よりも展開速度を重視したので、一般の圧縮解凍ソフトは使えなかったのだ。
こういうのは基本的に圧縮率を高める方向に進化していったため、その分速度が犠牲にされたからね。
僕の場合ゲームデータの展開とかに使いたかったから、展開が遅くなると致命的であった。
ゲーム中に一〇秒とか待たされるなんてありえない。
モン○ンのマップ移動だっていらっとするのに。
さて、色々な方式が有る中で僕が選んだのはlzss方式。
ファイル形式ではなく圧縮アルゴリズムだけどね。
有名どころだと、ハフマンやランレングス、LZ法またはそれらの派生なんかも有るけど、lzssはLZ法の一種だ。
これのいいところはアルゴリズムが非常に単純なところだね。
データ形式はなんとふたつだけ。
データを自分を起点として前方をスキャンしていって、同じ文字や文字列がなかったら不一致ビット0とその文字を出力。
同じ文字や文字列を見つけたら一致を示す一致ビット1と一致した文字列の開始位置そして一致した長さを出力。
これだけだ。
要は前方を検索して同じ文字を探し、その位置と長さを記録するだけ。
全く圧縮されないと不一致ビットの分データ量が増えるが、その単純さ故圧縮展開速度は爆速だった。
圧縮率の高いファイルなど、無圧縮で読み込むより早く展開されるケースさえあった。
HDDの読み込みは結構時間がかかるからね。
圧縮率五〇パーセントなら読み込み時間は半分になる。
展開速度が十分に速ければ、残り半分の時間未満で展開が終了するというわけだ。
精霊パソコンはまだHDDのアクセス速度が激遅なので、容量が小さくなり高速展開できれば、処理速度の向上が見込めるということになる。
僕は粛々と圧縮展開ツールを作り上げていく。
その後はアーカイブ、つまり複数ファイルをひとつの圧縮ファイルにまとめる機能を作り込んでいく。
これも問題ない。
先頭にファイル名や相対フォルダ名、圧縮ファイルの長さなどといったヘッダを書き加えて後ろにくっ着けて行くだけ。
アップデートサーバ側は圧縮アーカイブ済みのデータを乗っけるから圧縮プログラムは組み込む必要がない。
各端末のアップデーターに展開プログラムを組み込んで、展開できるようにしておけば終わりだ。
アップデートは今のところ僕以外しないから圧縮ツールは僕のパソコンの中だけに入れておけばいい。
まあ、自由にデータやアプリを皆が開発できるようになったら、開発ツールの一環として公開すればいいだろう。
今の所HDDエリアは十分あるし、画像とか動画とか保存できるわけでもないから、圧縮するまでもないしね。
画像や動画はまた別の圧縮形式を使う必要があるし。
いわゆるjpegとかwmvなんかだね。
画像の可逆圧縮だとPNGとかPICとかか。
そういやPICはなかなか面白い圧縮方式だったね。
稲妻が走る展開は見ていて気持ちよかった。
アルゴリズムも単純な割に圧縮率が高いし高速だ。
僕も同じような方式でより高速に展開できるツールを作ったけど、あれって基本的に五一二×五一二ドットで、三二七六八色のデータが標準だったから事実上X68000というパソコン専用フォーマットになってたんだよなぁ。
その当時のアニメ絵とかはものすごく効率よく圧縮できたものだ。
グラフィック表示ができるようになったらペイントツールを作りたいな。
そしてアニメ絵を流行らすのもいいかもしれない。
ペイントツールで自然画を書こうと思うとペンツールの進化が欠かせない。
水彩風とか油絵風とかね。
単純なペイントソフトだと、線書いて塗りつぶしてだから、アニメ絵のほうが書きやすいだろうし。
まあ、それは先々の話だ。
その頃には僕の手を離れてそれぞれが勝手に開発しているかもしれないしね。
さあ、アップデートサーバとアップデータをブラッシュアップしていこう。
陪臣たちの使っているパソコンに入っているOSやアプリも古くなっているものも有るから、まずはそっちでうまくいくか試して見る必要があるな。
圧縮方式やアーカイブ形式は数あれど、最近の圧縮展開ツールは大抵の形式に対応しているので、DOSの頃のように形式ごとにツールを選ぶ必要がなくなりました。
昔はパソコン通信のホスト局に圧縮ファイルは有ってもツールがアップロードされていないとかよく有ったものですw
とはいえ最近は大抵がzip形式で、たまにRARやWINDOWSアップデートでcabが見られるくらいで、後はほぼ見かけなくなったので、多機能なツールはほぼ必要なく、自分は展開速度の速さでツールを選んでいます。
Vectorとかで古いファイルでも漁らないと、上記以外は見る機会はないでしょうし。
動画も色々なファイル形式圧縮形式があり、昔は必死になって良さげなプレイヤーを探したり、プラグインを探したりしたものです。
最近はストリーミング配信になっていて、そのような手間もほぼなくなりました。
動画プレイヤーを起動することも少なくなりましたね。
前はプログラムや小説のデータなどは圧縮して別フォルダに保存とかしてたのですが、今はsvnを使いサーバで世代管理なんかしています。まあ、ほとんど過去に戻ることはないのですが。
そのため圧縮展開のみするツールの出番は殆どなくなってしまいました。
まあ、間接的に使ってはいるのですが、ほとんど意識することはなくなりましたね。
意識するのは静止画かフリーソフトなどをダウンロードするときくらいでしょうか。
時代とともにツールの使用状況はどんどん変わっていくものですね。