ZIPパッケージ圧縮
複数ファイルをZIPアーカイブにパッケージ、ドラッグ&ドロップアップロード、ブラウザローカル処理
ファイルをここにドラッグ、またはクリックしてファイルを選択
すべてのファイルタイプに対応、複数ファイル可能
ZIP圧縮とは?
ZIP パックは、選択した複数のファイルを 1 つのダウンロード可能なアーカイブにまとめる処理です。ファイルをまとめて送る、納品パッケージを作る、スクリーンショットを整理する、メールに複数の書類を添付する、小さなバックアップを作るといった場面で役立ちます。ZIP は可逆のアーカイブ形式であり、解凍後は元のファイルを完全に復元できるはずです。ただし、JPG、PNG、MP4、PDF のようにすでに圧縮されている形式は、あまり小さくならないことがあります。このブラウザツールはローカルで ZIP を生成するため、ファイルをサーバーにアップロードする必要はありません。大きすぎるファイルはメモリを多く使うため注意してください。ZIP は暗号化ではないので、機密ファイルには別途保護が必要です。
使い方
使い方
- ファイルをアップロードエリアにドラッグするか、「ファイルを選択」ボタンで追加します
- ファイルリストを確認し、不要なファイルは削除します
- ZIPファイル名を入力します(任意)
- 「ZIPアーカイブを作成」ボタンをクリックして圧縮ファイルをダウンロードします
アーカイブの注意点
- アーカイブを作成する前に、ファイル名とフォルダ構成を見直してください。ZIPはパスを保持するため、意図しないファイル名が公開されることがあります
- 長期保存や他のシステムと共有する場合は、ファイル名に非対応文字を含めないでください
利用シーン
仕組み
ZIPコンテナーはPKWAREのAPPNOTE仕様(現在のリビジョン6.3.10)で定義されています。`.zip`ファイルは3種類のレコードのシーケンスです。各保存ファイルには4バイトシグネチャ`0x04034b50`(PK\x03\x04)のLocal File Headerが先行し、その後に圧縮データが続きます。最後のファイルの後にCentral Directory(シグネチャ`0x02014b50`)があり、各エントリの名前、サイズ、CRC-32、ローカルヘッダーへのオフセットを列挙するFile Headerのテーブルです。最後にEnd of Central Directoryレコード(シグネチャ`0x06054b50`)がファイルの末尾に位置し、Central Directoryの開始位置を指します。リーダーは`.zip`を後方からパースします。ファイル末尾からEOCDシグネチャを逆方向にスキャンし、Central Directoryにジャンプしてから各ローカルヘッダーにシークします。これがZIPがストリーミング追記やアーカイブ全体を読まずに単一エントリへの高速ランダムアクセスをサポートする理由です。 このツールはブラウザ内でアーカイブを組み立てるためにJSZipライブラリ(より高速な代替としてfflate)を使用しています。ユーザーが選択した各`File`オブジェクトは`ArrayBuffer`として読み込まれ、`zip.file(name, buffer)`で追加され、`zip.generateAsync({ type: 'blob', compression: 'DEFLATE', compressionOptions: { level: 6 } })`で`Blob`が生成され、`URL.createObjectURL()`を通じてダウンロードとしてユーザーに提供されます。DEFLATEはRFC 1951で定義されたZIP標準圧縮方式であり、LZ77スライディングウィンドウ辞書マッチングとHuffmanコーディングを組み合わせたものです。圧縮レベル6(デフォルト)はバランスポイントです。レベル1は約4倍高速ですが5〜15%大きく、レベル9は6の2〜3倍遅いものの追加1〜2%の縮小が見られます。 整合性はIEEE 802.3多項式`0xEDB88320`(反転)によるCRC-32で保証され、ローカルファイルヘッダーとCentral Directoryエントリの両方に格納されます。ファイル名は汎用フラグビット11が設定されている場合にUTF-8で書き込まれます(APPNOTE 6.3.0、2006年以降必須)。このフラグがない場合、古いツールはローカルOEMコードページ(DOSではCP437、中国語WindowsではCP936/GBK)を想定し、非ASCII名は文字化けします。クラシックZIP形式はサイズとオフセットに32ビットフィールドを使用し、単一エントリとアーカイブ全体を約4 GiB(2³² − 1 = 4,294,967,295バイト)に制限します。ZIP64(APPNOTE 4.5+で定義)はextra fieldsを通じてこれらを64ビットに拡張しますが、JSZipのインメモリビルドでは数百MBが実用的なアーカイブサイズの制限となります。
- ZIPファイル構造(PKWARE APPNOTE 6.3.10):Local File Header(`0x04034b50`)+ ファイルデータ、その後Central Directory(`0x02014b50`)、末尾にEOCD(`0x06054b50`)。
- リーダーは末尾からパースします。EOCDシグネチャを逆方向にスキャンしてCentral Directoryにジャンプし、アーカイブ全体をストリーミングせずに高速な単一ファイル抽出を実現します。
- DEFLATE圧縮(RFC 1951)= LZ77スライディングウィンドウ辞書 + Huffmanコーディング。レベル6はデフォルトのバランス、レベル9は2〜3倍遅いものの約1〜2%の追加縮小。
- 整合性:多項式`0xEDB88320`(反転IEEE 802.3)によるCRC-32。ローカルヘッダーとCentral Directoryの両方に格納され、展開時に検証されます。
- UTF-8ファイル名には汎用フラグビット11が必要です(APPNOTE 6.3.0、2006年)。これがない場合、古いツールはCP437/ローカルOEMページにフォールバックし、非ASCII名が文字化けします。
- クラシックZIPは単一ファイルおよびアーカイブのサイズを2³² − 1 = 4,294,967,295バイトに制限。ZIP64 extra fields(APPNOTE 4.5+)は64ビットに拡張し、より大きなペイロードに対応します。
- ブラウザ実装:JSZip / fflateは各`File`を`arrayBuffer()`で読み取り、メモリ上でアーカイブを構築し、`Blob`ダウンロードとしてストリーム出力します。サーバーアップロードは不要です。
使用例
プロジェクトファイルのパッケージ化
入力: src/, package.json, README.md (数十ファイル)
出力: project-2026-06-11.zip (単一アーカイブ、deflate 圧縮)
用途: チームメイトへのスナップショット共有やリリース添付複数ファイルの転送 (オーバーヘッド削減)
入力: 小さな画像 100 枚、各 5-50 KB (合計 ≈ 3 MB)
出力: photos.zip (1 ファイル、HTTP リクエスト 1 回、ファイル単位のオーバーヘッドなし)
用途: ファイル単位で課金されるメールやストレージサービスに大量の小ファイルをアップロードする場合書類の整理
入力: invoice.pdf, contract.docx, signed-acknowledgement.png
出力: documents-2026Q2.zip
用途: 税務・法務・人事関連の書類を日付付きの単一アーカイブにまとめて保管よくある質問
ZIP を作成するためにデータがアップロードされますか?
いいえ。ZIP ファイルは JSZip を使ってブラウザ内で作成されます。元のファイルは FileReader API で読み取られ、ローカルで圧縮されてダウンロードとして提供されます。ネットワーク経由で送信されることはありません。
どの圧縮レベルが使われますか?
デフォルトで DEFLATE レベル6です。ほとんどの ZIP ツールが採用する、速度とサイズのバランスです。テキストコンテンツ(ログ、JSON、ソースコード)はよく圧縮されますが、すでに圧縮されたコンテンツ(JPEG、MP4、ZIP)はほとんど縮みません。
パスワードを設定できますか?
JSZip は暗号化された ZIP エントリをサポートしていません。ビルドがパスワード保護を提供している場合、通常は ZipCrypto を使用しますが、これは安全でないと広く認識されており、何十年も前から破られています。本格的なパスワード保護にはデスクトップの 7-Zip と AES-256 を使ってください。
ファイル数とサイズの上限は何ですか?
実際の上限はブラウザのメモリです。ほとんどのデスクトップでは合計数百MB まで動作します。モバイルブラウザはより厳しいです。非常に大規模なパッケージング作業にはデスクトップツール(7-Zip、WinRAR、コマンドラインの zip)を使ってください。これらはディスクからストリームし、すべてを RAM に保持しないためです。
フォルダ構造は保持されますか?
はい。ファイルシステムからフォルダをドラッグすると、相対パスが ZIP 内に保持されます。生成前に構造を確認できるよう、ページがツリービューを表示することがあります。
Windows、macOS、Linux で ZIP を正しく開けますか?
はい。JSZip は標準的な ZIP ファイルを生成します。UTF-8 のファイル名は最近の環境ならどこでも動作しますが、非常に古い Windows バージョンでは UTF-8 以外のコードページが強制されると、中国語や日本語のファイル名が文字化けすることがあります。最新の macOS と Linux は常に UTF-8 を正しく処理します。
ZIP と 7Z の違いは何ですか?
ZIP は DEFLATE 圧縮を使用し、あらゆる OS で普遍的に読み取れます。7Z は LZMA/LZMA2 を使い、テキストでははるかに高い圧縮率が得られますが、解凍には 7-Zip または互換ソフトウェアが必要です。本ページでは ZIP のみを出力します。