ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
概要
ZIP は 1989 年に米 PKWARE 社の Phil Katz が公開した、ファイル名・属性・複数ファイルのまとめ(アーカイブ)と、データの圧縮を 1 つの形式の中で同時に行う ファイルフォーマットです。Unix 系で広く使われる「tar でまとめてから gzip で圧縮する」二段構えとは対照的に、ZIP は各エントリを個別に圧縮してから 1 ファイルに格納するため、特定のファイルだけを取り出す(ランダムアクセス)のが高速という利点があります。
仕様は APPNOTE.TXT として PKWARE が公開しており、互換実装が容易だったことから世界中に普及しました。Windows は XP 以降「圧縮フォルダー」として、macOS は「アーカイブユーティリティ」として OS 標準で読み書きをサポートしており、ユーザーが追加ソフトを入れずに扱える「事実上の世界標準アーカイブ形式」となっています。
Microsoft Office の .docx / .xlsx / .pptx や、Java の .jar、Android の .apk、EPUB 電子書籍など、多くのコンテナ形式が中身は ZIP です。拡張子だけ変えれば unzip で中身を覗けることが多いのは、ZIP がそれだけ広く採用されている証拠です。
内部構造とマジックナンバー
ZIP ファイルは大きく分けて以下の 3 領域から構成されます。
- ローカルファイルヘッダ + データ — 各ファイルごとに繰り返し格納。マジックは
50 4B 03 04(PK\x03\x04) - セントラルディレクトリ — ファイル一覧の索引。末尾近くに置かれる。マジック
50 4B 01 02 - EOCD(End of Central Directory Record) — 末尾の固定位置にある終端マーカー。マジック
50 4B 05 06
展開ツールは「ファイルの末尾を読んで EOCD を見つける → セントラルディレクトリを読む → 各エントリにシークする」という順で動きます。末尾基準で動く ため、ZIP の前にゴミが付いていても、自己解凍 EXE のようにヘッダにバイナリが付いていても動作するのが特徴です(self-extracting archive の仕組みもこれを利用)。
圧縮方式(compression method)は仕様上は複数選べますが、実運用では method=8(Deflate)がほとんどです。ZIP64 拡張では method=12 (BZIP2)、method=14 (LZMA)、method=93 (Zstandard) なども定義されていますが、対応していない解凍ソフトに渡すと開けないため、互換性重視なら Deflate に留めるのが安全です。
主な用途
- メール添付やクラウドストレージ経由でのフォルダ受け渡し(Windows/Mac/Linux のどこでも開ける)
- ソフトウェア配布アーカイブ(バイナリ + 設定 + README をひとまとめに)
- Office Open XML(.docx/.xlsx/.pptx)、Java JAR、Android APK、EPUB のコンテナ
- Web からのダウンロード(複数ファイルを 1 リクエストで取得させたい場面)
- パスワード付き機密データの簡易配布(AES-256 を使うこと、ZipCrypto は避けること)
関連形式との比較
| 形式 | 圧縮率 | 速度 | 暗号化 | OS 互換性 | 備考 |
|---|---|---|---|---|---|
| ZIP (Deflate) | 中 | 速い | AES-256 / ZipCrypto | Windows/macOS 標準 | 事実上の世界標準 |
| 7z | 非常に高い | 遅い | AES-256 | 要 7-Zip | LZMA2 + 固体圧縮 |
| tar.gz | 中 | 速い | なし(GPG 併用) | Unix 標準 | パーミッション保持 |
| RAR | 高い | 中 | AES-256 | 要 WinRAR | 独占仕様 |
| Zstandard | 中〜高 | 非常に速い | なし | 新興 | 解凍が極めて速い |
コマンド・ツール
# フォルダを ZIP に圧縮(Linux/macOS)
zip -r archive.zip mydir/
# ZIP を展開
unzip archive.zip
# 中身一覧(展開せず確認)
unzip -l archive.zip
# パスワード付き ZIP を作成(AES-256)
# ※標準の zip コマンドは ZipCrypto のみ。AES-256 が要るなら 7z を使う
7z a -tzip -p'mypassword' -mem=AES256 secret.zip mydir/
# 文字化け対策で Shift_JIS のファイル名を UTF-8 に変換しつつ展開
unzip -O cp932 archive.zip # Info-ZIP 6.0 以降
# Windows PowerShell 5.1+
Compress-Archive -Path .\mydir\* -DestinationPath archive.zip
Expand-Archive -Path archive.zip -DestinationPath .\out\
注意点・落とし穴
- ZipSlip 脆弱性 — エントリ名に
<../../etc/passwd>のようなパストラバーサルが含まれる ZIP を、検証なしで展開するライブラリは任意のパスへ書き込まれてしまう。展開先のディレクトリ配下に正規化後のパスが収まるかを必ずチェックする。 - ZipCrypto は破られる — 既知平文攻撃で短時間で復号される。パスワード保護を使うなら必ず AES-256 を指定する。
- ファイル名の文字コード — 古い ZIP は Shift_JIS、新しい ZIP は UTF-8(汎用フラグ bit 11 で示す)と混在しがちで、Windows/macOS/Linux 間で文字化けが起きる。
unzip -O cp932や 7-Zip の文字コード指定で対処する。 - 4GB / 65,535 ファイル制限 — 従来仕様の限界。これを超える場合は ZIP64 拡張が必要だが、古い解凍ソフトでは開けない可能性がある。
- Symlink/特殊ファイル — Unix のシンボリックリンクや特殊属性は ZIP では完全には表現できない。これらを保ちたいなら tar を使う。
関連リンク
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?