7Z

7Zファイルとは

ZIP よりよく縮みますが、たいていの環境では別のソフトを入れる必要があります。

7Z とは何か

7Z はコンテナです。誰か別のものが符号化した流れを、中に収めておく外殻です。 長期保存のために使われます。

拡張子は .7z、正式名称は 7-Zip Archive です。ただしどちらも、そのファイルが中に何を持てるかほどには多くを語りません。このページの残りは、その中身についての話です。

7Z はどこから来たのか

1999 年までさかのぼります。

これだけ長く読まれ続けてきた形式なら、10 年後に取り出したいものを預けても大丈夫です。

仕様は公開されています

仕様書がそのまま公開されているので、中身を推し量るのではなく文書を読んで実装できます。この形式が数多くのプログラムに載っているのはそのためであり、20 年前に書かれたファイルが今も開けるのもそのためです。ただし「仕様が公開されている」ことと「使用料が要らない」ことは別の話です。中でコーデックを包んでいる形式では、特許のライセンスは仕様書が答えていない別の問題として残ります。

捨てられるものはありません

7Z ファイルは中身をそのまま保存します。保存し直しても何も変わらないので、開いて、直して、また保存する——それを何度繰り返しても劣化は積み上がりません。これが、渡すための形式ではなく作業のための形式である理由です。

フォルダーをまるごと持てます

7Z ファイルはディレクトリをまるごと保存します。名前も、フォルダーも、そのあいだの構造も。メールの添付でフォルダーの代わりが務まるのはそのためです。

この圧縮率がどこから来ているか

一度に扱う範囲は 16 MB です。繰り返しがこの幅の中に収まっていて初めて、それを圧縮で畳めます。

この数ひとつで、書庫形式どうしの違いのほとんどが説明できます。範囲が広ければ多くの繰り返しを見つけられ、そのぶん時間とメモリーを使います。取引はそれだけです。

自分を守るために何を備えているか

7Z ファイルは壊れたファイルが黙って誤読されるのではなく、壊れていると分かるようにするチェックサムと必要なら暗号化を備えています。

暗号化されたファイルは、変換の前に解除する必要があります。ここでも、ほかのどこでも同じです。パスワードはコンバーターが通り抜けられる類のものではありませんし、通り抜けられると称するものには、そもそもファイルを渡すべきではありません。

7Z を開けるのは何か

7-Zip、Keka、PeaZipが読めますし、同じ種類のプログラムならたいてい読めます。

ファイルが開かないとき、形式が悪いことはめったにありません。たいていはプログラムのほうが形式より古いのです。もっと古い形式に変換してしまうのが確実な逃げ道で、このサイトの残りの部分はそのためにあります。

ブラウザーで開く

これを読めるブラウザーはありません。

これを変換するいちばんよくある理由がこれです。形式が悪いのではありません。ファイルを見せたい場所が、それを読めないというだけのことです。

作業のための形式です

7Z は、開いて手を入れるために作られています。作業が続いているあいだはこの形式でファイルを持ち、完成したものが必要になるたびに、ここから書き出してください。

この形式でよく起きること

繰り返し挙がる不満はこれです。本来の分野の外では対応がまばら。

どれも、この形式を避ける理由にはなりません。どれかに不意を突かれる前に知っておくべきことがら、というだけです。これは別の主張であり、そして役に立つほうの主張です。

選ばれる理由は圧縮率で、実際にその通りになる

7z を偶然使う人はいません。ZIP では容量が大きすぎると感じた誰かが、あえて選んだ結果です。文書やソースコード、テキストであれば、同じ内容で ZIP より三割から五割ほど小さくなることが珍しくありません。

1999 年に Igor Pavlov が 7-Zip というソフトのために作った形式で、ソフトも仕様も無料で公開されています。展開ソフトだけが公開され圧縮ソフトはライセンスが必要な RAR とは逆で、誰でもどちら向きにも実装できます。

ソリッドアーカイブという仕組みが圧縮率の源

ZIP はファイルごとに個別に圧縮しますが、7z は既定で全ファイルを一つの連続したストリームにまとめてから圧縮します。これがソリッドアーカイブです。圧縮器は 400 番目のファイルが 12 番目のファイルとほぼ同じだと気付けば、丸ごとではなく差分だけを記録できます。

似たファイルが並ぶフォルダーでは効果が劇的です。同じ文書の二百バージョン、ソースツリー、ログファイルの束などは、二つ目以降のコピーがほとんどただになります。写真のフォルダーでは何も変わりません。JPEG はすでに圧縮済みで、見つけられる共通構造がないためです。

ソリッド圧縮が払う代償

真ん中の一つのファイルだけを取り出したいときも、その前にある全部を展開する必要があります。ストリームには独立した開始点がないためです。大きなソリッドアーカイブから一つの文書を取り出すのに、全体を展開するのと同じくらい時間がかかることがあり、ZIP ならその場ですぐに渡してくれるところです。

破損したときの影響も大きくなります。ZIP なら壊れた部分のファイルだけを失い、残りは読めますが、ソリッドアーカイブではストリームの早い段階の破損が、それ以降すべてを読めなくしてしまうことがあります。長期保存を予定しているなら、7-Zip でソリッドブロックのサイズに上限を設けると、圧縮率を少し犠牲にして耐障害性の大半を取り戻せます。

LZMA2 が遅い理由

既定の圧縮方式は LZMA2 で、最大 64 MB かそれ以上という非常に大きな範囲を探索して繰り返しを探します。この探索こそが ZIP の見逃す冗長性を見つける仕組みであり、同時に、同じフォルダーを ZIP より何倍も長い時間をかけて圧縮する理由でもあります。

展開のほうは速く、圧縮にどれだけ時間をかけたかにほとんど関係なく一定です。アーカイブは一度書かれて何度も読まれるものなので、これは理にかなった性質です。圧縮時間のほうが重要なら、7-Zip はより速いモードも用意していて、最速の設定は ZIP に近い時間と圧縮率になります。

本物の暗号化

7z は AES-256 を正しく実装しています。既定のパスワード方式が 1989 年設計で破られている ZIP とは違い、パスワード保護された 7z は本当の意味で保護されていて、パスワードなしでは中身を取り出せません。

ファイル名まで暗号化することもできます。これは既定ではオフで、有効にしない限り、中身が見えなくてもファイル名の一覧は読めてしまいます。ファイル名そのものが機密情報である場合は、この違いが重要になります。

受け取る側にソフトが必要になる、という落とし穴

Windows 11 は 23H2 以降で 7z の展開に対応し、24H2 以降は作成にも対応しました。それ以外はほとんど対応していません。macOS も Windows 10 も、多くのスマートフォンも対応していないため、現行 Windows 以外の相手は 7-Zip などのソフトを入れる必要があります。

相手の環境が分からない相手に送るなら、この点が最大の弱点になります。最も優れたアーカイブ形式とは、相手が開けるものです。四割の容量削減も、開けない添付ファイルの前では意味を持ちません。

ほとんど何でも開ける側面もある

7-Zip というソフトは ZIP、RAR、TAR、GZ、BZ2、XZ、ISO、CAB、DMG、WIM など、非常に多くの形式を読み込めます。多くの人が 7-Zip を入れているのは、7z を作るためではなく、届いたものを何でも開けるからです。

この二つは分けて考える価値があります。形式とソフトは同じ名前を共有していますが別のものです。「7-Zip を使っている」という言葉は、たいてい何を作るかではなく、何をどう開いているかの話です。

持ち越されないもの

Unix のパーミッションや所有者、シンボリックリンクは扱いが一貫しておらず、しばしば失われます。Unix 系マシン間でプロジェクトを移すなら、.tar.gz が今も正解で、.tar.xz なら TAR が保持するものを全部持ちながら、7z に近い圧縮率も得られます。xz の内部も同じ LZMA 系だからです。

RAR の際立った特徴であるリカバリーレコードもありません。ソリッド圧縮と組み合わさると、不安定なメディアの上で長年保存するアーカイブとしては、RAR より弱い選択になります。

使うべき場面

自分で管理する場所や、相手の環境が分かっている場合に、大きなアーカイブを送るなら向いています。自分のディスクへのバックアップ、7-Zip を持っている同僚への転送、インストール手順をリンクの隣に書けるサイトからの配布などです。似たファイルの集まりでは、その節約は本物で相当な量になります。

それ以外の場面では ZIP を使ってください。これは 7z への批判ではなく、この形式自体が求めている判断そのものです。選ぶこと自体が相手の環境についての判断を含んでいるからで、その判断に自信が持てないなら、普遍的な形式のほうが正しい選択です。

基本情報

7Zフォーマットの識別子と出自。
拡張子.7z
メディアタイプapplication/x-7z-compressed
初版1999