こんにちわ。
創作意欲が湧いた勢いで、JavaScriptからzip形式のアーカイブを操作できる "JSZip" というライブラリを使用して、ブラウザ上でzipを圧縮展開できる簡単なWebアプリを作ってみました。
作ったもの
めちゃくちゃシンプルです。
Babelは通してないので、動作確認済のChrome以外は新生EdgeやFirefoxでなら多分動くと思います。
仕組み
凝ったことはしていないので、とても簡単です。
- Input要素でファイルを読込
- ファイルをワーカースレッドへ転送
- ワーカースレッドでJSZipをロードし圧縮展開
- 処理結果をメインスレッドへ転送
- a要素に処理結果のBlobURLを充ててダウンロード
全ての処理がローカルで完結しています。
ヘビータスクの圧縮展開はWebWorkerで処理しており、かつファイルはTypedArray化して参照渡し(Transferable Object)しているので、処理中の描画レスポンスへの影響はほとんどありません。