PR

 今回はファイル圧縮機能を使ってデータをバックアップするプログラムを作ってみようと思います。

 ファイルの圧縮・解凍を行う機会は非常に多いと思います。作成した文書や画像を圧縮してメールで送ったり、データのバックアップを行うために圧縮したり・・・。

 ファイルの圧縮を行うのに、どんなソフトを使っているでしょうか?この後紹介しますが、なでしこを使うと圧縮・解凍を行うプログラムを、ほんの1行で書くことができます。

 だからといって、普段ファイルやフォルダーを圧縮するのに、常になでしこを使っているのかと言えば、そんな面倒なことはしていません。例えば、仕事で作ったデータをメールで送るのには、ドラッグ・アンド・ドロップで手軽に圧縮できるLhacaやLhazなどのソフトを利用しています。

 普通に考えても、毎回プログラムを作って圧縮を行うなんて効率が良いはずがありません。しかし、プログラムを1度作っておけば、その後とても便利に使える場面も多くあります。

 私が、なでしこを使って、ファイル圧縮を行うのは、データの定期バックアップを行う場合と、なでしこなど作ったソフトやデータをWebで配布するためのアーカイブを作る場合と2つの場面においてです。

 特に後者の配布ファイルの作成は、非常に重宝します。なでしこなどのソフトのバージョンアップ作業は、非常に煩雑で手作業でやると必ずミスを犯してしまうものですが、必要なファイルをコピーしたり更新したり、作業で生じた要らないファイルを削除し、必要なファイルを残したりして、最後に圧縮してFTP機能でWebにアップします。ここまでの作業をダブルクリック一発でこなせるようにしています。

 ただ、この配布ファイルの作成に関しては、ちょっと内容が広すぎるので、今回は、圧縮にフォーカスして、定期バックアップを行うプログラムを作ってみたいと思います。

バックアッププログラム

 以下が、なでしこのプログラムです。

【使い方】

 使い方ですが、まず、以下のプログラムの1行目に、バックアップするフォルダーを指定します。ここでは、外付けハードディスクを想定して、Dドライブの「backup」フォルダーを指定します。実際には自分がデータを置きたい好きなフォルダーを設定します。

 そして、4行目から7行目が実際の圧縮処理になっていますが、デスクトップやマイドキュメントなどのバックアップを行うようになっています。バックアップしなくても良いフォルダーの行を削除します。加えて、この後の説明を読んで圧縮したいフォルダーを追加してください。

【プログラムソース1】

# --- 保存先の設定
保存先=「d:¥backup¥」#1
# --- 確認
「バックアップを始めます。よろしいですか?」と二択。#2
もし、それがいいえならば、終わり。#3
# --- 圧縮処理
デスクトップを「{保存先}デスクトップ.lzh」へ圧縮。#4
マイドキュメントを「{保存先}マイドキュメント.lzh」へ圧縮。#5
お気入りフォルダを「{保存先}お気入り.lzh」へ圧縮。#6
OE5メールフォルダを「{保存先}メール.lzh」へ圧縮。#7
# --- 完了通知
「完了!」と言う。#8
終わる。#9

図1 圧縮しているところ

【プログラムの流れ】

 1行目では、保存先フォルダーの指定をしています。2行目ではバックアップ作業開始の確認を行います。「二択」命令を使うと「はい」か「いいえ」のどちらかで答えるダイアログを表示します。ここでは、もし構文を使って「いいえ」を押したとき、プログラムを終了するようにしています。

 4行目から7行目では圧縮処理を行っています。8行目では完了メッセージを表示し、[OK]ボタンを押したらプログラムの実行を終了します。

圧縮の方法について

 ハードディスクはパソコンの部品の中でも壊れやすい部類に入るものです。データを守るためには、定期バックアップがとても重要になってきます。

 大事なデータが万が一壊れてしまっても、すぐに復元できるように定期的に、外付けのハードディスクにコピーをとっておくことは重要です。この時、すべてのデータをそのままコピーすると、すぐにハードディスクがいっぱいになってしまうので、圧縮して保存すると便利です。

 この時、だいたいバックアップを取っておきたいフォルダーは決まっているので、バックアップしたいフォルダーをプログラムに記述しておき、週1回とか月1回、バックアップをとるようにしておくとよいと思います。

 なでしこで、ファイルやフォルダーをLZH形式で圧縮するのは簡単です。以下のように書きます。

【プログラムソース2】

「保存したいパス」を「圧縮ファイル名.lzh」へ圧縮。

 例えば、マイドキュメントにある「定例報告」というフォルダーを、デスクトップに圧縮するには以下のように書きます。

【プログラムソース3】

「{マイドキュメント}定例報告」を「{デスクトップ}定例報告.lzh」へ圧縮。

 ハードディスクからたどってパスを指定することもできます。Cドライブにある「example.doc」というファイルをデスクトップに圧縮するには、以下のように書きます。

【プログラムソース4】

「c:¥example.doc」を「{デスクトップ}example.lzh」へ圧縮。

他の形式で圧縮するには?

 なでしこ標準では、LZH形式の圧縮しかできません。Windows XPの標準機能で解凍できるZIP形式で圧縮するには、ZIP圧縮のための圧縮エンジンであるDLLをインストールして使います。

 ZIP圧縮を行うためのDLLは、「7-zip.dll」で、以下のサイトからダウンロードしてインストールします。

・7-zip32.dll ... ZIP形式の圧縮解凍DLL

 ZIP形式で圧縮する方法は、LZH形式で書くのとほとんど同じで、以下のように書きます。

【プログラムソース5】

「保存したいパス」を「圧縮ファイル名.zip」へ圧縮。

 圧縮したいファイル名の後ろに書く、「.lzh」というのを、「.zip」に変えます。これで、ZIP圧縮するようになるのです。

なでしこで使える特殊パスについて

 今まで詳しく説明してきませんでしたが、これまでのプログラムでも、フォルダーを指定する際、マイドキュメントやデスクトップという表現を使ってきました。これは、なでしこで用意されている変数なのです。マイドキュメントやマイピクチャと指定することで、フォルダーをたどったパスを詳しく記述する必要がなくなります。

 例えば、マイドキュメントの定義内容を見るには以下のように書くことができます。

【プログラムソース6】

マイドキュメントと言う。

 これを実行すると、私の環境では「C:\Documents and Settings\desk\My Documents\」と表示されました。この実行結果は実行するパソコンの設定によって変わってきます。

 このように、Windowsでは、特殊なパスは環境によってぜんぜん違うものになっています。なでしこで「マイドキュメント」や「デスクトップ」という特殊パスの変数が定義されていることは、ファイルやフォルダーのコピーや圧縮などの操作をする上でとても便利に扱うことができるのです。

 これら特殊パスの一覧は、なでしこエディタの左側にある命令一覧で確認することができます。

図2 利用できる変数

 それから、なでしこでパスなど文字列を指定するときには、以下のように書きますが、カギ括弧「...」で括った中に、変数や式を埋め込みたい時には「...{変数}...」のように書くことで、変数の内容が展開される仕組みになっています。

【プログラムソース7】

保存先フォルダは「{マイドキュメント}報告書¥2007¥03」。

 上のプログラムでは、例えばマイドキュメントが「C:\doc\」の時は、保存先フォルダーの内容が「C:\doc\報告書\2007\03」と展開されます。

まとめ

 今回は、ファイルやフォルダーを圧縮する方法、なでしこで定義されている特殊パスについて紹介しました。これらは、Windowsのフォルダーを表現する上でとても便利なものとなっています。こうしたなでしこの特殊パスは「圧縮」や「ファイルコピー」の命令を使う上で、とても便利です。

 定期的に行うバックアッププログラムなどを「圧縮」命令をつかって、ぜひ作ってみてください。

はじめてこの連載を読む方へ
 この連載では、日本語でプログラムが書ける「なでしこ」というツールを使って仕事に役立ちそうなプログラムを紹介しています。なでしこのプログラムエディター(なでしこエディタ)に、記事中で紹介しているプログラムソースをコピー・アンド・ペーストし、実行ボタンを押すだけで、プログラムを動作させることができます。詳しい内容は本連載第1回をご覧ください。


【PCオンライン編集部からのお願い】
「なでしこ」は個々のユーザーの責任において利用してください。
コラムで紹介するなでしこのプログラム動作については編集部でも確認していますが、すべてのユーザーのパソコン環境で同じように動作することを保証するものではありません。
申し訳ありませんが、紹介する内容について、個別のご質問にはお答えしかねます。なでしこの公式ページでは詳しいマニュアルや質問を受け付ける掲示板が提供されていますので、そちらをご参照ください。
よろしくお願いいたします。