ToolActToolAct

ZIP解凍

ZIPアーカイブをアップロードしてファイルをプレビュー・抽出、個別ダウンロードまたは一括解凍

ZIPファイルをアップロード

ZIPファイルをここにドラッグ、またはクリックして選択

.zip形式のアーカイブファイルに対応

ZIP解凍とは?

ZIP 解凍は、アーカイブを開いて中に保存されたファイルを取り出す処理です。圧縮されたパッケージを受け取ったとき、中身を先に確認したい、必要なファイルだけ取り出したい、ファイル名やサイズを確認してから信頼したい、といった場面で役立ちます。通常のファイルでは ZIP 解凍は可逆であり、取り出した内容は圧縮前と同じであるべきです。ただし、解凍したからといって中身が安全になるわけではありません。アーカイブには紛らわしいファイル名、予期しないフォルダー、展開後に巨大になるデータ、開くべきでない実行ファイルが含まれることがあります。このブラウザツールはローカルで読み取り、選択したファイルを保存できますが、不審な ZIP の安全確認の代わりにはなりません。

使い方

使い方

  1. ZIPファイルをアップロードエリアにドラッグするか、「ZIPファイルを選択」ボタンをクリックしてください
  2. アーカイブ内のファイル一覧と各ファイルの情報を表示します
  3. 個別ファイルの「ダウンロード」をクリックして展開します
  4. 「すべて解凍」をクリックすると、すべてのファイルをZIPでダウンロードします

展開の安全性

  • ダウンロード前にファイル一覧を確認してください。特に、出所不明のアーカイブでは重要です
  • 実行可能ファイルや入れ子のアーカイブ、怪しいファイル名には注意してください

利用シーン

展開する前にZIPの中身を確認.zipファイルをドロップすると、ページがファイルタイプアイコン付きのソート済みフォルダーツリー、展開可能なフォルダー、各ファイルのサイズを構築します。個別ファイルをダウンロードする前に、アーカイブに期待通りのドキュメント・アセット・コードが含まれているかを素早く確認できます。リーダーはファイル末尾のEnd of Central Directoryレコードをたどってセントラルディレクトリを特定するため、誤って切り出されたり追記されたりした.zipでも、有効なEOCDマーカーで終わっていれば、一部のローカルヘッダーが破損していても宣言されたエントリを一覧表示します。
本当に必要なファイルだけダウンロード1ファイル、フォルダー単位、複数のネストされたアイテム、またはアーカイブ全体を選択し、ブラウザから選択したファイルをダウンロードします。選択ロジックはフォルダーを中のファイルに展開するため、大きなアーカイブから必要なアイテムだけを取り出せます。
ブラウザ側の展開で軽量なアーカイブレビューJSZipがアーカイブをローカルで読み取り、展開された各ファイルは個別のブラウザダウンロードとして保存されます。一括展開では元のフォルダーツリーをディスクに再現したり、新しいZIPを生成したりしないため、レビュー・仕分け・少量の取り出し作業に向いています。完全なバックアップ復元には向いていません。
展開する前に怪しいファイル名を見つけるreport.pdf.exeのような二重拡張子、隠しシステムファイル、..セグメントでディレクトリを脱出しようとするパスがないかファイルリストを確認します。出所が見覚えのあるものであっても、不明なアーカイブは信頼せず、実行可能ファイルは開く前にウイルススキャンをかけてください。汎用フラグビット11がセットされたファイル名はUTF-8で格納されるため、非ASCII名は正しくデコードされますが、フラグが欠落していると文字化けが発生し、それ自体が改ざんや再パッケージのアーカイブである兆候となります。
バックアップZIPから設定ファイルだけを取得し、残りはダウンロードしないフォルダーツリーを閲覧し、目的のconfig.jsonや証明書だけを選択して、そのエントリだけをダウンロードします。数十ギガバイトのバックアップから1ファイルだけ復元したい場合、不要な部分の帯域を消費せずに済む迅速な方法です。4GB超のアーカイブはZIP64拡張子に依存しますが、このツールはZIP64のextra fieldsを読み取って非圧縮サイズ・圧縮サイズ・ローカルヘッダーオフセットを処理するため、従来の32ビット制限を超えたバックアップでも単一ファイルの復元は動作します。

仕組み

ZIPアーカイブの読み取りは、書き込みの逆順で行われます。ブラウザはFile API(`file.arrayBuffer()`)を通じてファイルを`ArrayBuffer`として受け取り、リーダーはファイル末尾から逆方向にスキャンしてEnd of Central Directory署名`0x06054b50`(PK\x05\x06)を探します。EOCDは最大22バイト+最大65,535バイトのオプションコメントで構成されるため、スキャン範囲は限定的です。EOCDはセントラルディレクトリのオフセットとサイズを指し示し、セントラルディレクトリにはエントリごとに1つのFile Header(`0x02014b50`)が格納されます。各File Headerには圧縮サイズ・非圧縮サイズ・CRC-32・圧縮方式・ファイル名、そして対応するLocal File Header(`0x04034b50`)のオフセットが含まれます。リーダーは前のエントリを解析せずに任意のエントリに直接シークできるため、数ギガバイトのバックアップから単一ファイルを抽出する処理が高速です。 解凍は方式バイトに依存します:`0x00`はstored(非圧縮、memcpyのみ)、`0x08`はRFC 1951準拠のDEFLATE(実世界のアーカイブの約99%)、`0x0C`はBZIP2、`0x0E`はLZMA、`0x5D`は旧式のPPMdです。本ツールではJSZip(またはより高速なfflateを使用 — fflateの`unzipSync`は典型的な10MBのDEFLATEアーカイブを数十ミリ秒でデコードし、JSZipの数倍の速度)を採用しています。解凍後、生バイトのCRC-32を再計算し、セントラルディレクトリの値と照合します。不一致は破損または改ざんを示します。 抽出コードパスにおいて2つのセキュリティ上の問題が重要です。1つ目はZip Slip脆弱性(Snyk、2018年)です。悪意あるアーカイブに`../../etc/passwd`のようなパストラバーサルシーケンスを含むエントリが含まれており、エントリ名をターゲットディレクトリに結合するだけの単純な抽出処理では、意図したサンドボックス外にファイルが書き出されてしまいます。修正方法は、結合されたパスを`path.resolve()`で正規化し、書き込み前にターゲットディレクトリで始まることを検証することです。本ツールでは各エントリを`URL.createObjectURL(new Blob([bytes]))`による個別のブラウザダウンロードとして提供し、ブラウザが保存先をサンドボックス化するため、ディレクトリトラバーサルはユーザーのダウンロードフォルダー外に脱出できませんが、サーバーサイドの抽出処理では同じアーカイブが悪用される可能性があります。2つ目は暗号化アーカイブの未対応です。従来のZipCryptoは3バイトの既知平文攻撃で簡単に破れる32ビットストリーム暗号であり、近代的なWinZip AES-256(PKWARE APPNOTE 7.0)はHMAC-SHA1認証付きAE-2拡張フィールドを必要としますが、いずれもここでは実装されていません。4GiB超のアーカイブはZIP64拡張のextra fieldsによる64ビットサイズとオフセットに依存し、パーサーは32ビットのセントラルディレクトリフィールドの代わりにこれらを読み取る必要があります。

  • 解析順序:ファイル末尾からEOCD署名`0x06054b50`を逆方向にスキャン(末尾から最大22+65535バイト)→ セントラルディレクトリにシーク → 各Local File Headerにシーク。
  • 圧縮方式:`0x00` stored、`0x08` DEFLATE(RFC 1951、アーカイブの約99%)、`0x0C` BZIP2、`0x0E` LZMA、`0x5D` PPMd。
  • 整合性検証:多項式`0xEDB88320`(反転IEEE 802.3)によるCRC-32を展開バイトに再計算し、セントラルディレクトリの値と照合。
  • Zip Slip(Snyk 2018):`../`パストラバーサルを含むエントリが展開ディレクトリ外に書き出し可能な脆弱性。解決策はパスを正規化して検証後に書き込み。
  • ブラウザ実装:`File.arrayBuffer()` → JSZip / fflate `unzipSync()` → エントリごとの`URL.createObjectURL(new Blob([bytes]))`によるダウンロード。サーバー通信なし。
  • 暗号化未対応:ZipCryptoは3バイトの既知平文攻撃で解読可能。WinZip AES-256(APPNOTE 7.0、HMAC-SHA1付きAE-2拡張フィールド)は未実装。
  • ZIP64(APPNOTE 4.5+):32ビットのサイズ・オフセットフィールドをextra fieldsで64ビットに拡張。4GiB超(2³²−1バイト)のアーカイブまたは単一エントリに必須。

使用例

アーカイブ内容の確認

解凍ソフトをインストールせずに、ブラウザ上で ZIP アーカイブ内のファイル一覧を直接確認

単一ファイルの取り出し

全体を解凍せず、必要なファイルだけをアーカイブからダウンロード

一括解凍

アーカイブ内の全ファイルをワンクリックで解凍してダウンロード

よくある質問

解凍のために ZIP がアップロードされますか?

いいえ。本ページは FileReader API を使って ZIP をローカルで読み取り、JSZip でブラウザ内でエントリを展開します。ファイルはデバイスを離れません。解凍中にネットワークタブで確認できます。

どの ZIP バリアントに対応していますか?

DEFLATE 圧縮を使った標準的な ZIP ファイル(最も一般的なバリアント)です。Stored(無圧縮)エントリも動作します。ZIP64(4 GB を超えるアーカイブ用)はほとんどのビルドでサポートされています。暗号化エントリ(パスワード保護)と 7Z、RAR、TAR には対応していません。それらには専用ツールを使ってください。

パスワード保護された ZIP を解凍できますか?

基本的にできません。JSZip は ZipCrypto 暗号化や AES 暗号化エントリを扱えません。先にデスクトップの 7-Zip や WinRAR で復号し、構造を確認したい場合はそれを再パックしてここにアップロードしてください。

ZIP に中国語や日本語のファイル名がある場合はどうなりますか?

本ページはデフォルトでファイル名を UTF-8 として読み取ります。古い Windows で作成された ZIP は、UTF-8 フラグを設定せずに GBK(中国語)や Shift_JIS(日本語)でファイル名を保存していることがあり、その場合は文字化けして表示されます。UTF-8 対応のツールで ZIP を作り直すか、デスクトップの 7-Zip で正しいコードページ設定を使ってください。

ファイルサイズの上限は何ですか?

ブラウザのメモリです。最近のデスクトップなら 1 GB を超える ZIP も扱えますが、モバイルブラウザは数百MB あたりでメモリ不足になります。非常に大規模なアーカイブにはディスクからストリームするデスクトップツールを使ってください。

解凍せずにファイルの内容をプレビューできますか?

テキストファイルなら可能です。任意のエントリをペーストまたはクリックすると、本ページがその内容を表示します。画像はサムネイルとしてプレビューされます。バイナリエントリ(実行ファイル、ネストされた ZIP など)はメタデータのみが表示されるので、確認するにはダウンロードしてください。

ドットファイルや隠しファイルも展開されますか?

はい。ZIP には「隠し」属性の概念がなく、すべてのエントリが可視です。ドットで始まるファイル名(.gitignore、.env)も通常通り展開され、普通のファイルとして扱われます。

関連ツール

ZIPパッケージ圧縮

オンラインZIPパッケージ圧縮ツール。複数ファイルアップロード、ドラッグ&ドロップ追加、ワンクリックZIPダウンロード。ブラウザローカル処理、プライバシー保護。

ファイルハッシュ検証ツール

オンラインファイルハッシュ計算ツール。MD5、SHA-1、SHA-256、SHA-512など複数アルゴリズム対応。ワンクリックでファイルハッシュを計算し、ファイル整合性を検証。

ファイル MD5 検証ツール

オンラインファイルMD5検証ツール。ファイルのMD5ハッシュ値を計算。ファイルの整合性を検証し、改ざんの有無を確認し、ダウンロードファイルの安全性を確保。

画像圧縮ツール

オンライン画像圧縮ツール。JPEG、PNG、WebP対応、品質とサイズ調整可能。ブラウザローカル処理、プライバシー保護。

Base64 エンコードデコードツール

オンラインBase64エンコード・デコードツール。UTF-8テキスト、日本語、画像変換をサポート。リアルタイムエンコード・デコード、ソフトウェアインストール不要、データはローカル処理でプライバシー保護。

Word → PDF 変換ツール

オンラインWord→PDF変換ツール。.docxと.doc形式に対応。ワンクリック変換、元のレイアウト保持、PDFサイズ自動最適化。変換後にファイルは自動削除されます。