Just another IT site ※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。At Your Own Risk!! TURN BACK WHILE YOU CAN
PR

【盲点】もしかして「DF」って改行コードの比較はしてくれない仕様…?

※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。スクリプトはAI生成のものも多いのでコピー&ペーストの際は文字コードに注意ください!

DFの詳細情報 : Vector ソフトを探す!

こんにちは!エンジニアの皆さん、Windows環境でのファイル比較(デフ)には何を使っていますか?

長年愛用されている定番の差分比較ツール「DF」。シンプルで軽快に動くので、ちょっとしたファイルの検証にめちゃくちゃ重宝しますよね。

しかし先日、このDFを使っているときに「背筋が凍るような奇妙な現象」に遭遇しました。

スポンサーリンク
バッチ処理の自動化スキルは市場価値が高いです。今の自分の単価を調べてみませんか?
顧客常駐はもう嫌だ!社内SEへ転職するなら【社内SE転職ナビ】
Cursor・Claude Code・Codex AIスキルを学ぶなら
環境構築不要!AIエージェント開発を非エンジニアでも即実践【AI Agent Camp】

異変:ファイルサイズが違うのに「差異なし」と表示される

事の発端は、見た目も中身のテキストも全く同じはずの2つのファイルを比較したときのことです。

プロパティで見ると、ファイルサイズが明らかに数バイト違っている。 「あ、これは片方がWindowsの改行コード CRLF で、もう片方がLinuxの LF になっちゃってるな」とピンときました。

そこで、差分を確認するためにDFに2つのファイルを放り込んでみたのですが……画面に表示されたのは無情にもこの一言。

「ファイル内容は一致しています」

「えっ!? ファイルサイズが違うのに一致してるってどういうこと!?」と、自分の目を疑いました。

検証:DFはデフォルトで改行コードの違いを無視する?

気になって調べてみた(あるいは設定を見直してみた)のですが、どうやらDFはデフォルトの状態だと「改行コード(CRLF / LF / CR)の違いを検知せず、テキストの中身(文字列)だけで比較する」という挙動をするようです。

テキストファイルとして見れば「改行されている」という事実に変わりはないため、ツール側が気を利かせて「差分なし」と判定してくれているのでしょう。

普通に文章やソースコードのロジックを比較する分にはこの上なくありがたい親切機能なのですが、今回のように「環境移行に伴う改行コードの混在チェック」や「完全一致のバイナリ確認」をしたいときには、完全に裏目に出てしまう盲点でした……。

対策:改行コードも含めて厳密に比較したいときは?

もしDFを使っていて「改行コードの違いもちゃんと弾いてほしい!」という場合は、以下の対処が必要です。

  • 設定を見直す: オプション設定の中に「改行コードの違いを無視する」といった類のチェック項目がないか確認し、あれば外す。

  • 別のツールを使う: 改行コードの差異を視覚的にハッキリ表示してくれる「WinMerge(ウィンマージ)」や、バイナリ比較ができるツール、あるいはコマンドラインの fcdiff を使う。

まとめ:ツールの「親切機能」に足元をすくわれないように

「DFで一致したからヨシ!」とそのまま本番環境にファイルを投入していたら、システムが改行コードのせいで誤作動を起こすところでした。危ない危ない……。

ツールが優秀で親切だからこそ、こういう仕様の穴にハマると原因究明に時間がかかってしまいますね。

皆さんも「ファイルサイズが違うのにDFが『同じ』って言い張る!」という状況に遭遇したら、まずは改行コードの罠を疑ってみてください!

 

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