ファイルの差分(違い、diff)を比較・見つけるなら、WinMerge!
2020/02/28
本エントリーの目次
複数のファイルの違い(差分・diff)を比較して見つけたい・把握したい!
プライベートではあまりないのかも知れませんが、複数のファイルの違い(差分・diff)を比較して見つけたい・把握したい!
ということは、仕事中には結構頻繁にあることではないでしょうか。
たとえば同じ名前のファイルが別の場所に複数あり、どちらが最新のデータを保持したファイルなのか分からない。
違いが分かれば、どちらが最新か思い出せるのに!
というケースなど。
これを目視で探そうとすると、本当に大変。
そこで今回は、テキストファイル(*.txt)やCSVファイル(*.csv)の違い(差異・差分・diff)を簡単に比較・見つけることが可能なアプリケーションソフトウェアをご紹介します!
WinMerge
はるるがおすすめする、ファイルの差分検出ソフトウェア。
それがこちら、WinMergeです。
まずは上記リンク先から、ご自身の使用しているWindowsのビット(32ビット or 64ビット)に応じたセットアップファイルをダウンロードし、セットアップを実行してください。
インストールの途中で表示されるコンポーネントの選択画面では、標準インストールを選択。
通常の使用の範囲内であれば、これで十分のはず。
WinMergeの使い方
WinMergeの使い方は、以下のとおりです。
2つのファイルを比較する
WinMergeの使い方はとっても簡単。
比較したい2つのファイルを選択して、あらかじめ起動しておいたWinMergeにドラッグ&ドロップするだけ。
今回は試しに、このようなファイルを用意して実行してみましょう。
まずは比較元。(このブログの現在のサブタイトルを流用。)
1 2 3 4 | 家事は元妻にまかせっきり。 そんな生活力ゼロ男の離婚後の生活を綴ったブログです。 著者がその後の生活の中で見つけた生活術やお役立ち情報をお届けします。 |
次に比較相手。
実際には、末尾に改行(CRLF)が入っています。
1 2 3 | 家事は元妻にまかせっきり。 そんな生活力0男の離婚後の生活を綴ったブログ。 著者がその後の生活の中で見つけた生活術やお役立ち情報をお届けします。 |
比較元のa.txtをベースに、以下の点を意図的に変えたものを比較相手、b.txtとして用意。
- ゼロ→0
- 2行目末尾の『です』を削除。
- 3行目の改行を削除。
- 文章の最後に改行を追加。
そしてこれらを比較すると、このような感じで違いを見つけて、教えてくれます。(画像をクリックすると、拡大します。)
このように、たった数ステップの簡単操作で、ファイルの違いをグラフィカル(視覚的)に分かりやすく見つけてくれるのが、このWinMergeのスゴイところ。
さらに違いのある部分では、画面上部に配置された以下のボタンが使用可能になります。
これらのボタンは左から順番に、以下のように動作します。
- 右へコピー
違いのある部分について、画面左側を採用し、右側にコピーします。 - 左にコピー
違いのある部分について、画面右側を採用し、左側にコピーします。 - 右へコピーし次へ
違いのある部分について、画面左側を採用し、右側にコピーします。
さらに自動的に次の相違点に移動します。 - 左にコピーし次へ
違いのある部分について、画面右側を採用し、左側にコピーします。
さらに自動的に次の相違点に移動します。
このようなマージ操作を行い、双方のファイルの編集を行った場合は、最後に画面左上の『ファイル』メニューから『保存』を選択し、保存したいファイルを選んで保存を行ってください。
3つのファイルを比較する
なんとこのWinMerge、同時に3つのファイルの違い(差分・diff)を比較することも可能です。
操作方法は、先の2つのファイルを比較する時と同様に、比較したい3つのファイルを選択して、WinMergeにドラッグ&ドロップするだけ。
そこで、新たにb.txtをベースに、3行目の『やお役立ち情報』という文言を削除した、第3のファイル(c.txt)を作成し、一度に比較してみましょう。
1 2 3 | 家事は元妻にまかせっきり。 そんな生活力0男の離婚後の生活を綴ったブログ。 著者がその後の生活の中で見つけた生活術をお届けします。 |
これらをさっそくWinMergeで比較してみると。
3つのファイルそれぞれの違いをしっかりと検出し、表示してくれていることがよく分かると思います。
フォルダの違いを検出する
さらにスゴイことに、このWinMergeはフォルダの違い(フォルダ内の要素すべてについて)を比較することも可能です。
そこで先のa.txt、b.txt、c.txtを、新たに用意したfromというフォルダ配下に配置し、意図的な違いを作ってその動きを確認してみましょう。
まず、fromフォルダのコピーを作成し、それをtoフォルダにリネームします。
これに対し、以下のような修正を加え、違いを意図的に作り出します。
- a.txtをb.txtにリネーム
- b.txtをa.txtにリネーム
- c.txtをd.txtにリネーム
- dirというフォルダを作成
これで準備が整ったので、さっそく比較してみましょう!
フォルダを比較する場合は、WinMergeを起動後、左上の『ファイル』メニューより、『開く』を選択します。
比較するファイルまたはフォルダ1にfromフォルダを、比較するファイルまたはフォルダ2にtoフォルダを選択します。
そして、画面下部の『サブフォルダを含む』というチェックボックスにチェックを入れ、OKボタンをクリックします。
あとは表示された結果をそれぞれダブルクリックして、差異を確認し、必要があればマージ操作を行い、保存します。
効率化だけではなく、正確性の観点からも目視確認ではなく、WinMergeでの確認がおすすめ!
目視確認を行う場合に比べたWinMergeを利用するメリットは、効率化だけではありません。
それは正確性の大幅な向上。
目視確認によるミス(違いを見逃すこと)は、ゼロであるとは言い難い、というのが実情でしょう。
人間の目による目視確認では、疲労などもあり、少なからずミスは起こるものだと思います。
100文字程度の少量であれば、目視確認でも何とかなるのかもしれません。
ですがそれでも、こういった自動化ソフトウェアを使った方が、間違いなく精度は高いでしょう。
ソフトウェアにバグ(不具合)がない限りは。
はるるは既に実際の業務で、WinMergeを5年ほど使っていると思いますが、今のところそういった問題には出くわしていません。
そのため、かなりの信頼感をもって使用しています。
少なくとも目視確認よりははるかに高精度で、現実的な選択(巨大なファイル内の差分を見つける場合の)ではないかと思います。(というか、この手の差分を見つけるソフトウェアで、バグで差分を見逃すようでは困ってしまいまけどね…。)
そのため現在、違い(差異・差分・diff)を目視で確認している。
ということであれば、ぜひ使用を検討してみてください!
おすすめ度大です!