「改行コード」タグアーカイブ

HULFTでCSVをバイナリ指定するとどうなる?使い方と注意点まとめ

はじめに

企業間やシステム間のデータ連携でよく利用されるファイル転送ソフトウェア「HULFT」。日常的にCSVやログファイルをやり取りしている方も多いと思います。
その際に必ず出てくるのが「ファイルモードの指定」。HULFTには 「テキスト指定(レコード指定)」「バイナリ指定」 の2種類があり、どちらを使うべきか迷うケースが少なくありません。

本記事では 「CSVをバイナリ指定で送った場合どうなるのか?」 を中心に、メリット・デメリットや注意点を整理します。


バイナリ指定とは?

HULFTにおける「バイナリ指定」とは、ファイル内容を1バイト単位のデータとしてそのまま送受信するモードを指します。
この場合、HULFTは以下のような変換や処理を一切行いません。

  • 改行コードの変換(CRLF⇔LFなど)

  • 文字コードの変換(Shift-JIS⇔UTF-8など)

  • レコード単位の制御(固定長・可変長)

つまり「HULFTが何も手を加えずにコピーする」のがバイナリ指定です。


バイナリ指定のメリット

  1. 内容がそのまま届く
    改行コードや文字コードが勝手に変換されないため、送信元のデータを完全に保持できます。

  2. ファイル形式を問わない
    CSVに限らず、Excel、PDF、ZIP、画像ファイルなども問題なく転送可能。
    → そのため「とりあえず壊れたくないファイルはバイナリ指定」で安全に扱えます。

  3. 異なるOS間でも安心
    WindowsからLinux、Linuxからホスト系など、環境差異を気にせず転送できます。


バイナリ指定のデメリット

  1. 文字コード変換がされない
    送信側がShift-JIS、受信側がUTF-8を前提としている場合、そのままでは文字化けします。

  2. 改行コードもそのまま
    WindowsのCSV(CRLF)をLinuxで処理すると、アプリ側がLFを期待していた場合に不具合の原因になります。

  3. レコード単位の扱いができない
    COBOLやホストシステム連携など「固定長レコード前提」のファイルを扱う場合は不向きです。


CSVをバイナリ指定で送るとどうなる?

結論から言うと、基本的に悪影響はありません
CSVは単なるテキストファイルですが、HULFT側で勝手に改行コードや文字コードを変換しないので、送信元と全く同じファイルが届きます。

ただし以下のケースでは注意が必要です。

  • 文字コードが異なる場合
    送信元がShift-JIS、受信先がUTF-8で解析 → 文字化けの可能性あり。

  • 改行コードが異なる場合
    Windowsで作成したCSVをLinuxで使うと、改行が意図通りに扱えないことがある。

そのため「受信側のシステムがどの文字コード・改行コードを想定しているか」を事前に確認しておくことが大切です。


まとめ

  • バイナリ指定は「ファイルをそのまま送りたいとき」に有効。

  • CSVを送る場合も基本的に問題はないが、受信側の文字コードや改行コードの前提条件によっては注意が必要。

  • 迷ったらまずは「バイナリ指定」で送り、必要に応じて受信側で変換処理を入れるのが無難です。


👉 実際の業務では「相手先がどんなシステムで受けるのか」を確認してから指定するのが鉄則です。
もし「文字コード変換が必要」や「固定長レコード前提」のような要件がある場合は、バイナリ指定ではなくテキスト指定を選ぶ方が安全です。

WinMergeで差分(不一致)データのみ表示させる方法

WinMergeを使用してファイル(データ)の比較を行う場合、差分(不一致)データのみに絞り込みたい場合が結構あります。そういう時にはWinMergeのメニューから「表示」⇒「Diffコンテキスト」⇒「0」を選択する事で差分データのみ表示させる事が出来ます。

WinMergeで差分(不一致)データのみ表示させる手順

今回は以下の2つのファイルの結果を比較して差分データのみ表示させてみます。

  1. WinMergeで2つのファイルを比較します。
  2. WinMergeのメニューから「表示」⇒「Diffコンテキスト」⇒「0」を選択します。
  3. 以下の様に差分データのみ表示されます。

補足・注意点・応用アイデア

1. “Diff コンテキスト 0” の意味と限界

  • 記事で説明されている「表示 → Diff コンテキスト → 0」を選ぶと、差分行のみ、つまり “コンテキスト行(一致している行)を表示しない” という設定になります。

  • ただし、完全に “見出し行” や “ファイル間の空行差異” などを除外できるわけではありません。たとえば、空白/タブの違いのみの行、改行コードの違いなどは差分として扱われやすいため、不要なノイズが混じることがあります。

2. 改行コードや空白の違いを無視する設定

  • 差分比較ツールを使う時、ファイル間で改行コード(CRLF vs LF)や先頭・末尾空白、タブ/スペースの扱いに差異があると、意図しない “差分” として検出されてしまうことがあります。

  • WinMerge にはこれらを無視するオプション(空白を無視、改行コード無視など)があるので、併用するとノイズを減らせます。

3. フィルタ機能の併用

  • WinMerge には「フィルタ」機能があり、除外したい拡張子・ファイル名パターンを設定できます。差分対象を限定する際に便利です。

  • また、特定の行(たとえば “コメント行” や “特定の識別子を含む行”)を無視するような条件フィルタを使えることもあります。

4. 比較モード(텍スト vs バイナリ)

  • WinMerge ではテキスト比較とバイナリ比較モードがあります。

  • バイナリモードを使うと、文字列レベルでは見えない差異(バイナリレベルの違い)を確認できます。ただし、その場合は行単位の「差分行表示」というより全体比較寄りになります。

5. 他の差分ツールとの比較・代替

  • VSCode(Visual Studio Code)Sublime TextNotepad++ などは、拡張機能を入れることで差分表示が可能で、「差分のみ表示」や「差分行+前後 context 表示」など柔軟な表示ができます。

  • コマンドラインでは diff(Linux/macOS)や git diffGNU diffutilsmeldBeyond Compare などが知られています。GUI かコマンドか、使い慣れたインタフェースで併用するのがおすすめです。

6. 大きなファイル・多数ファイルペアの比較

  • 巨大ファイルを比較する場合、WinMerge のパフォーマンス(速度、メモリ使用量)がボトルネックになる場合があります。

  • そのような場合には、差分抽出を先にスクリプト(例えば Python、Perl、Unix の diff コマンド)で実施し、生成された差分を WinMerge で可視化する、というハイブリッド運用が有効です。

7. 差分出力を保存・エクスポートする

  • WinMerge は比較結果を “Diff 出力” (たとえば Unified Diff 形式) として保存(エクスポート)できます。

  • 差分のみ表示している状態では出力できない (出力結果に context 行を含む形式になる) ことがあるので、出力設定を確認する必要があります。

8. 複数フォルダ比較(ディレクトリ比較)での差分抽出

  • ファイル単体の比較だけでなく、フォルダ(ディレクトリ)単位で WinMerge は比較できます。

  • この場合、フォルダ内のすべての差異(新規・削除・更新)を一覧で確認でき、差分のあるファイルのみを開く操作が便利になります。

9. 自動化・スクリプトとの連携

  • WinMerge はコマンドライン起動オプションを備えており、スクリプト内で差分比較を自動化することが可能です。

  • バッチ処理や CI/CD パイプラインで、プログラムの差分チェックを自動実行 → 差異があるならアラート出力、などの用途にも使えます。

10. 注意すべき点:日本語・エンコーディング

  • 日本語ファイル(Shift_JIS / UTF-8 / EUC など)を比較する際、エンコーディングの不一致が文字化けや差分誤検出の原因になります。

  • ファイルを比較する前にエンコーディングを統一しておく(または WinMerge 側で文字コード変換設定を適切に設定)ことが推奨されます。