[HULFT Script 技術コラム8]
知らなかったではすまされない!「結合・分割」「圧縮・解凍」の落とし穴

HULFT Scriptコラム一覧

HULFT Script 技術コラム Vol.8

知らなかったではすまされない!「結合・分割」「圧縮・解凍」の落とし穴

解説

HULFTで送るデータが複数のフォルダやファイルに分かれているとき、1つずつファイルを転送するよりも、まとめて送るほうが良いことがあります。たとえば、日次で作ったファイルを月末に一括送信するケースなどはその典型です。ファイルを1つにまとめる方法はいくつかありますが、それぞれの方法にできることと、できないことがあります。それぞれの特徴をしっかり踏まえて利用しないと、トラブルにつながりかねません。ここでは、HULFTでデータを転送する前の結合や圧縮で、やってしまいがちな失敗例と、その回避方法をお伝えします。トラブルが起きてから泣かないように、ぜひ押さえておきましょう!

1. 知っておこう! ファイル結合・圧縮の落とし穴

1-1. 【落とし穴①】サブディレクトリ内のデータが送れなかった!

複数のファイルを1つにまとめて送信するために、従来よく利用されているのは、配信側がHULFTの「utljoin」コマンドでデータを結合して転送し、集信側で「utlbreak」コマンドを使って分割する方法です。

文字コードを自動的に変換するため、OSの違いを気にすることなく使えます。また、複数のファイルを1つに結合して送信するため、受け取った側が1つのデータとして扱いやすいというメリットもあります。

しかし、送信するディレクトリの配下にサブディレクトリがあるときには注意が必要です。というのも、「utljoin」で結合したいファイルをワイルドカード指定しても、結合されるのはディレクトリの直下にあるファイルだけです。サブディレクトリ内を再帰的に参照してファイル結合するわけではありません。この点をよくわからずに「utljoin」を使ってしまうと、当然送られていると思っていたファイルが送られず、受信側の後続処理がうまく動かないなど、大きなトラブルの原因になります。

図1:utljoinで結合し、ultbreakで分割する場合 ~サブディレクトリ内のファイルを結合するには作り込みが必要~

もし、サブディレクトリ内のファイルを送信対象にしたければ、「ディレクトリに存在するサブディレクトリをひとつひとつ参照して、中のファイルを結合対象にする」という処理を作り込まなくてはいけません。しかも、運用の途中でサブディレクトリが増えることや、ディレクトリによってサブディレクトリの階層が違うことを考慮しておかないと、送信データがうっかり漏れてしまう可能性があるため、設計・開発には手間がかかります。

1-2. 【落とし穴②】文字化けしてしまった!

そこで、ZIP形式やtar形式でファイルを圧縮しておき、受け取った側で解凍するという方法を取ることもあります。サブディレクトリ内のファイルも一緒にまとめられる点は便利ですが、圧縮したものをそのまま解凍するだけなので、文字コードの変換は行いません。OSが違うときなどには文字化けしてしまい、データが正しく読み取れないなどのトラブルにつながります。別途、データ加工・変換ツール「Data Magic」を使うなどして、コード変換が必要です。

1-3. 【落とし穴③】受け側に機密情報がバレてしまった!

また、ZIP形式で圧縮するときにはパスワードをかけることもできますが、Windows7以降、OSの標準機能だけではパスワード付きZIPファイルが作れなくなっています。別のツールを使う必要があり、不便です。

さらに、圧縮で注意すべきことがもう1つあります。ディレクトリ構成もそのまま圧縮されるため、受け手側に丸見えになってしまうのです。たとえばフォルダ名に取引先名をつけている場合には、転送先に知られたくない情報まで見られてしまいます。

図2:ZIPやtarで圧縮する場合 ~ディレクトリ構成情報が受け手に漏えい~

そのため、圧縮する前にフォルダをリネームするなど、ディレクトリに含まれる機密情報に配慮しなくてはいけません。

どの方法も一長一短であることがおわかりいただけるでしょうか。こうしたことをすべて踏まえてファイル結合処理を作り込もうとすると、多くの手間や工数がかかってしまうのです。

2. 使ってみよう! HULFT Scriptの「ディレクトリツリー内の全ファイル結合」

そこでおすすめなのが、HULFTのオプション製品「HULFT Script」です。「HULFT Script」は、データ転送の前後に必要な処理をノンプログラミングで開発できるツールで、20年以上にわたる運用実績を持つHULFTのノウハウを凝縮したテンプレートを豊富に備えています。

このたびリリースする「ディレクトリツリー内の全ファイル結合」というテンプレートは、「utljoinでの結合」と、「ZIPやtarでの圧縮」の、それぞれの長所を併せ持っています。
つまり、

  • 複雑な設計開発なしで、サブディレクトリ内のファイルを結合可能
  • 自動的にコード変換を行うため、異なるOSでも文字コードの考慮が不要
  • 受け手からディレクトリ構成が見えないため、フォルダ名を気にせずに送信可能

という3つの特長を兼ね備えた、利用価値の高いテンプレートなのです。

図3:HULFT Script テンプレート「ディレクトリツリー内の全ファイル結合」を利用する場合 
~サブディレクトリのファイルも結合した状態で送信され、コード変換も不要~

HULFT Scriptのテンプレートは、ダウンロードするだけで使えるのも嬉しいポイント。面倒な処理の開発にかかっていた工数を大幅に削減できます。データ転送前に複数のファイルを1つにまとめたいときに、ぜひ利用してみてください。

3. まとめ

複数のフォルダやファイルに分かれているデータを1つにまとめてHULFTで送信したいとき、よく使われるのは「HULFTのutljoinとutlbreakで結合・分割」や「ZIP形式やtar形式で圧縮・解凍」という方法です。しかし、どちらの方法にも長所と短所があるため、業務要件とマッチしない場合には、バッチやシェルスクリプトで処理を作成する必要がありました。 そこで登場したのが、HULFTのオプション製品「HULFT Script」でこのたびリリースするテンプレート「ディレクトリツリー内の全ファイル結合」。「サブディレクトリ内のファイルの結合」「文字コードの自動変換」「ディレクトリ構成の流出防止」といった、従来のやり方での課題解決を同時に実現しました。ダウンロードするだけで利用できるため、すぐに活用していただけます。 データ転送の前後に必要な処理をノンプログラミングで開発できる、HULFT Scriptのテンプレートを、ぜひお試しください。

本コラムでご紹介しました「ディレクトリツリー内の全ファイル結合」に利用できるテンプレートは「Integrates_and_Splits_01 (結合・分解)」に含まれております。

HULFT Script 評価版ダウンロードはこちら

  • HULFT-ScriptはHULFT8のオプション製品のため、(HULFT ScriptOptionを含む) を選択してください。