カテゴリ: VB.NET 更新日: 2026/03/22

VB.NETで圧縮ファイルを扱う方法を完全ガイド!初心者でもわかるZipFileの使い方

VB.NETで圧縮ファイルを扱う方法(System.IO.Compression)
VB.NETで圧縮ファイルを扱う方法(System.IO.Compression)

先生と生徒の会話形式で理解しよう

生徒

「たくさんのファイルを一つにまとめたり、サイズを小さくしたりする『ジップ』って、プログラムでも作れますか?」

先生

「はい、もちろんです。VB.NETではSystem.IO.Compressionという道具を使えば、簡単にZipファイルを作ったり解凍したりできますよ。」

生徒

「難しそうに聞こえますが、初心者でも大丈夫でしょうか?」

先生

「大丈夫です!たった一文字の命令でフォルダーごと圧縮することもできるんです。基本的な使い方をマスターしましょう!」

1. 圧縮ファイル(Zip)とは?データを布団圧縮袋に入れるイメージ

1. 圧縮ファイル(Zip)とは?データを布団圧縮袋に入れるイメージ
1. 圧縮ファイル(Zip)とは?データを布団圧縮袋に入れるイメージ

パソコンを使い始めたばかりの方にとって、「圧縮(あっしゅく)」という言葉は少し難しく感じるかもしれません。一番わかりやすい例えは、季節外れの布団を「布団圧縮袋」に入れる様子です。かさばる布団を袋に入れて空気を抜くと、薄くなって持ち運びやすくなりますよね。パソコンの世界でのZip(ジップ)ファイルもこれと同じです。

たくさんの書類(ファイル)を一つの袋(Zip形式)にまとめ、さらにデータの隙間を詰めて全体のサイズを小さくします。これにより、メールで送るのが楽になったり、パソコンの保存容量を節約できたりします。VB.NETでは、この圧縮作業をプログラムで自動的に行うことができます。例えば、毎日決まった時間に特定のフォルダーをバックアップして圧縮する、といった便利な仕組みが作れるようになります。

2. フォルダーごと一気に圧縮するCreateFromDirectory

2. フォルダーごと一気に圧縮するCreateFromDirectory
2. フォルダーごと一気に圧縮するCreateFromDirectory

まずは、あるフォルダーの中身を丸ごと一つのZipファイルにまとめる方法を学びましょう。VB.NETでは ZipFile.CreateFromDirectory という非常に便利な命令を使います。これを使うには、プログラムの冒頭に Imports System.IO.Compression というおまじないが必要です。これは「圧縮に関する機能を使います」という宣言です。

以下のプログラムは、「作業用フォルダー」を「バックアップ.zip」という名前に圧縮する例です。住所(パス)を二つ教えるだけで、あとはパソコンが全部やってくれます。


Imports System.IO.Compression

Module Module1
    Sub Main()
        ' 圧縮したいフォルダーの場所
        Dim startPath As String = "C:\Work\Documents"
        ' 出来上がるZipファイルの保存先と名前
        Dim zipPath As String = "C:\Work\Backup.zip"

        ' 指定したフォルダーをZipファイルに圧縮します
        ZipFile.CreateFromDirectory(startPath, zipPath)

        Console.WriteLine("フォルダーの圧縮が完了しました!")
    End Sub
End Module

3. 専門用語のやさしい解説:ディレクトリ、解凍、拡張子

3. 専門用語のやさしい解説:ディレクトリ、解凍、拡張子
3. 専門用語のやさしい解説:ディレクトリ、解凍、拡張子

ここで、今回の学習でよく出てくる用語を整理しておきましょう。意味を知っておくと、プログラミングの理解がぐっと深まります。

  • ディレクトリ (Directory):パソコン用語で「フォルダー」のことです。書類をまとめて入れる箱のことですね。
  • 解凍(展開):圧縮されて小さくなったファイルを、元のバラバラの状態に戻すことです。「展開」と呼ぶこともあります。
  • 拡張子 (Extension):ファイル名の最後についている「.zip」や「.txt」などの部分です。これによってパソコンはそのファイルが何の種類かを判断します。
  • 名前空間 (Namespace):今回の System.IO.Compression のような、命令のグループ名のことです。

プログラミングでは、これらを組み合わせて「どの住所のフォルダーを、どの名前のZipにするか」を指示していきます。基本的な考え方は、普段マウスで操作していることと同じです。

4. Zipファイルを元の状態に戻すExtractToDirectory

4. Zipファイルを元の状態に戻すExtractToDirectory
4. Zipファイルを元の状態に戻すExtractToDirectory

次は、圧縮されたZipファイルを元のフォルダー形式に戻す「解凍」の操作です。これを英語ではExtract(エクストラクト)と呼びます。VB.NETでは ZipFile.ExtractToDirectory という命令を使います。これは、圧縮袋から布団を取り出して、元の部屋に広げるような作業です。

この命令も非常にシンプルです。「どのZipファイルを」「どこのフォルダーに」解凍するかを指定するだけです。指定した場所にフォルダーがない場合は、自動的に作成して中身を広げてくれます。


Imports System.IO.Compression

Module Module2
    Sub Main()
        ' 解凍したいZipファイルの場所
        Dim zipPath As String = "C:\Work\Archive.zip"
        ' 中身を取り出す場所
        Dim extractPath As String = "C:\Work\ExtractedData"

        ' Zipファイルを指定した場所に解凍します
        ZipFile.ExtractToDirectory(zipPath, extractPath)

        Console.WriteLine("解凍(展開)が完了しました!")
    End Sub
End Module

5. Zipファイルの中身に新しいファイルを追加する

5. Zipファイルの中身に新しいファイルを追加する
5. Zipファイルの中身に新しいファイルを追加する

一度作ったZipファイルに対して、後から「この書類も入れておいて!」と追加したいことがあります。その場合は、ZipFile.Open という命令で一旦Zipファイルを開き、そこに新しいファイルを追加する処理を行います。これは、すでに閉じた圧縮袋のジッパーを少しだけ開けて、隙間から新しい書類を差し込むようなイメージです。

この方法では、Using(ユージング)という仕組みを使うのがコツです。これを使うと、追加が終わった瞬間に自動的にジッパーを閉めてくれるので、ファイルが壊れる心配がありません。


Imports System.IO.Compression

Module Module3
    Sub Main()
        Dim zipPath As String = "C:\Work\MyArchive.zip"
        Dim newFile As String = "C:\Work\Extra.txt"

        ' Zipファイルを「更新モード」で開きます
        Using archive As ZipArchive = ZipFile.Open(zipPath, ZipArchiveMode.Update)
            ' Zipの中に新しいファイルを作成し、中身をコピーします
            archive.CreateEntryFromFile(newFile, "Extra.txt")
        End Using

        Console.WriteLine("Zipファイルに新しいデータを追加しました。")
    End Sub
End Module

6. 圧縮率を指定してサイズを調整する考え方

6. 圧縮率を指定してサイズを調整する考え方
6. 圧縮率を指定してサイズを調整する考え方

圧縮には「どれくらい頑張って小さくするか」というレベル設定があります。これを圧縮レベルと呼びます。VB.NETでは、とにかく早く終わらせる設定(最速)や、時間はかかっても最大限小さくする設定(最適)などを選ぶことができます。

特に大きな動画や大量の写真を扱う場合は、この設定一つで処理時間が変わってきます。基本的には標準の設定で十分ですが、「とにかく急いでまとめたい!」という時には最速設定を使うなど、目的に合わせた使い分けが可能です。初心者の方はまず、標準のままで動かしてみて、慣れてきたらこのレベル調整にも挑戦してみましょう。


Imports System.IO.Compression

Module Module4
    Sub Main()
        Dim fromPath As String = "C:\LargeData"
        Dim toZip As String = "C:\Output\Fast.zip"

        ' 圧縮レベルを「最速(Fastest)」に指定して作成します
        ' 第3引数にレベルを、第4引数にフォルダー自体を含めるかを指定します
        ZipFile.CreateFromDirectory(fromPath, toZip, CompressionLevel.Fastest, False)

        Console.WriteLine("スピード優先で圧縮を完了しました。")
    End Sub
End Module

7. 安全に圧縮・解凍を行うための注意点

7. 安全に圧縮・解凍を行うための注意点
7. 安全に圧縮・解凍を行うための注意点

最後に、エラーを防ぐための大切なポイントをいくつかお伝えします。プログラムは指示通りに動こうとしますが、無理な状況ではエラーを出して止まってしまいます。

まず、「同じ名前のZipファイルが既に存在している」場所に新しく作ろうとすると、VB.NETは上書きしていいのか判断できずにエラーになります。作成前に、前回のレッスンで学んだ File.Exists を使って、すでにファイルがないか確認するようにしましょう。また、解凍するときも「解凍先のフォルダーがすでに使われていないか」をチェックすると安心です。

さらに、圧縮作業はパソコンのパワーをたくさん使います。非常に大きなファイルを扱うときは、少し時間がかかることを覚えておいてください。こうした基本的なマナーを守ることで、誰が使っても壊れない、優しくて便利なプログラムを作ることができます。フォルダー操作と圧縮を組み合わせれば、あなただけの自動お片付けツールが完成しますよ!

関連記事:
カテゴリの一覧へ
新着記事
New1
ASP.NET
ASP.NET MVCで学ぶセッションと認証の仕組みをやさしく解説!初心者でも安心して理解できる入門ガイド
New2
VB.NET
VB.NETで名前空間を整理する方法を完全ガイド!初心者でもわかるNamespaceの基本
New3
ASP.NET
ASP.NET CoreのCookie認証を完全ガイド!初心者でもわかるログインの仕組み
New4
VB.NET
VB.NETでStaticクラスを作る方法を完全ガイド!初心者でもわかるクラスとオブジェクト指向入門
人気記事
No.1
Java&Spring記事人気No1
VB.NET
VB.NETのインストール方法まとめ!Visual Studioを使った環境構築手順
No.2
Java&Spring記事人気No2
VB.NET
VB.NETプログラムの書き方を基礎から学ぼう!初心者が覚えるべき文法とは?
No.3
Java&Spring記事人気No3
VB.NET
VB.NETのDateTime型を完全マスター!日付と時間の操作を初心者向けに解説
No.4
Java&Spring記事人気No4
VB.NET
VB.NETで日付を文字列に変換!ToStringやFormatの使い方を徹底解説
No.5
Java&Spring記事人気No5
ASP.NET
ASP.NETを安定稼働させるためのIISアプリケーションプール設定完全ガイド【初心者向け】
No.6
Java&Spring記事人気No6
VB.NET
VB.NETの構文ルールまとめ!インデント・改行・予約語など初心者が最初に覚えるべきポイント
No.7
Java&Spring記事人気No7
VB.NET
VB.NETのコンストラクタと初期化処理の書き方を初心者向けに解説
No.8
Java&Spring記事人気No8
ASP.NET
ASP.NET WebFormsとは?基本概念と仕組みを初心者向けにやさしく解説