Open9

Zstd,lz4といった高性能なアルゴリズムを利用した自己解凍ファイルを作る

VVIIVVII

ファイルを配布するときにZstdやLZ4を使いたいが、利用する側の人間が対応したアーカイバを使っているとも限らないので、
汎用的なツールを作りたい

VVIIVVII

とりあえずGo で
embed を使ってアーカイブを埋め込んだバイナリを作成するツールを書いた
(まだバグがあるけど)

VVIIVVII

実験は成功ということで、使用するライブラリや仕様を考えていこう

VVIIVVII

Tarとlz4,zstdに対応したライブラリがあったが、
不要なファイルができるな
メモリに圧縮できない
それぞれでライブラリを確保したほうがいいかも

VVIIVVII

あとバイナリサイズを小さくできないだろうか

VVIIVVII

ビルドフラグでもう少し縮むかと思ったが思ったより縮まらないようだ。
未圧縮のファイル+5MBくらいになる

まぁそれが問題になるようなサイズのファイルを圧縮するなら自己解凍zipでいいと思う

VVIIVVII

ただ、メモリで圧縮とかの修正を行うなら
Rustか何かで書き直したほうがいいだろう。
Rustも言語機能で実行ファイルへのデータ埋め込みができるはずだ

VVIIVVII

Rustで自己解凍ファイルを作ってみたがいい感じだ

バイナリサイズは+500KBですむ

あとはこれを生成するコードを書くだけだ

VVIIVVII

ビルドスクリプトとしてアーカイブ生成プログラムを書いたら
思った以上に簡単に作れた。
引数とかを整備してリリースしよう