【Ruby】rubyzipでzip圧縮するやり方を解説します

こんにちは。たいら(@tairaengineer2)です。
転職を繰り返し現在4社経験している、11年目エンジニアです。

この記事では、 Rubyのrubyzipライブラリを使ってzip圧縮するやり方について、

  1. zip圧縮サンプルプログラム
  2. 実行結果
  3. 解説

という順番で解説していきます。

rubyzipをインストールするやり方はこちらの記事をご参考ください。

前提条件:実行環境について

実行環境は以下の通りです。

OS Windows10
Rubyのバージョン 2.6.6
rubyzipのバージョン 2.3.0

この記事ではRubyプログラムは

C:\rubystudy

に作成しています。

zip圧縮サンプルプログラム

このサンプルプログラムは、sampleディレクトリ配下の

  • hogehoge.txt
  • test.txt

をzip圧縮するプログラムです。

実行結果

実行してzip圧縮ができているかを確認します。

Rubyプログラムを実行するやり方は、以下の記事をご参考ください。

zipファイルができているか確認します。

指定したディレクトリに【test.zip】ができていることが確認できました。
中身を確認してみます。

指定した

  • hogehoge.txt
  • test.txt

がzipファイルの中にあることが確認できました。

もしファイル名が文字化けしてしまっている場合はこちらの記事をご参考ください。

解説

サンプルプログラムから大切な点である

  1. requireについて
  2. zip圧縮処理について

の2点をピックアップして解説していきます。

requireについて

rubyzipライブラリを使う場合

必須の宣言です。
忘れないようご注意ください。

require関数については、こちらの記事をご参考ください。

zip圧縮処理について

肝心なzip圧縮している箇所は

ざっくりですが、以下の処理を行っています。

作成するzipファイルや対象のテキストファイルをフルパスで指定する必要があるため

と4、5行目でフルパスの文字列を作成していました。
(もちろん、直接指定してもOKです。)

ちなみにDir.pwdメソッドとは、カレントディレクトリを取得するメソッドです。
詳しくはこちらの記事をご参考ください。

11行目の

addメソッドで指定する引数は下記を意味しています。

第一引数 zipファイルに入れるファイル名を指定
第二引数 zipファイルに入れるファイルをフルパスで指定

たとえばzip圧縮前は【sample.txt】という名前だったとします。
addメソッドの第一引数で【sample_change.txt】と指定した場合、zipファイルの中には【sample.txt】と同じ中身のファイル名が【sample_change.txt】が格納されています。

addメソッドでzipファイルに入れるファイル名をzip圧縮前のファイル名から変更することはできます。
が、整合性が取れなくなるため変更しない方が分かりやすいかと思います。

まとめ:rubyzipでzip圧縮してみよう

以上がRubyでrubyzipライブラリを使ってzip圧縮するやり方の解説でした!

あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ

コメント

タイトルとURLをコピーしました