トップページ
2009/05/07

WinMerge(GUIベースの差分抽出ソフト)

記述ベース:WinMerge Version2.10+-2&WindowsXP

分かりやすいGUIベース

テキストの差分を取るソフトはDOSやUNIXの時代からありますので歴史は長いです。ただし、もともとはソフトウェア開発者のような専門家が使うものだっただけに、差分の結果はあまり人間にとって分かりやすいものではありませんでした。いやむしろ、パイプを使って他のソフトにフィードする中間ツールという側面もあったので、むしろそれでよかったのかもしれません。
ところが、最近はGUIベースの非常に人に分かりやすい形で差分を教えてくれるツールがいろいろあります。
結構いろいろな種類があり、どれも一長一短なので迷うのですが、とりあえず自分が常用しているWinMergeを紹介します。類似のソフトに比べると、一番差分の表示の仕方や挙動に癖がなく、誰でも取っつきやすいのではないかと思います。

差分抽出の仕方はソフトごとに癖が出る

差分をいかに的確に抽出するかというのは結構難しい問題です。機械的に差分を抽出するのではなく、パターン認識的な差分抽出の仕方をしないと、人間の感覚と全く違った差分結果になってしまい、全く意味をなさなくなってしまうからです。ですので、この辺のロジックをどう組み立てるのかが開発者の腕が問われるところですし、ソフトごとの癖が顕著に出るところです。。
そういう観点でWinMergeを見ると、確かに差分表現の仕方は非常に分かりやすくていいと思う反面、差分点の抽出の仕方は若干大ざっぱなところがあります。

この画面を見る限り、差異があるのは2箇所である風に見えます。ところが、実際は、もう一つ差分が隠れています。
どこかというと、下図を見てください。

"いちいち"という文字が移動しているということが表現されていません。WinMeargeは、ベージュ色で色分けされた文字列部分全体として変化した、という風に認識しているからです。
もちろん、それは差分検出の仕方として間違っているわけではありませんが、他のソフトだとこの差をちゃんと検出するものもあります。
例えば、Rekisa。

Rekisaだと、"いちいち"の場所が移動していることをしっかり検出していることが分かると思います。

ですので、WinMergeが全ての面において他より優れているというわけではないと思いますが、全体としての使い勝手は非常に良好です。

非常に高機能

分かりやすいだけでなく、機能的にもかなり高い部類に属すると思います。(Rekisaに次ぐぐらい?)
そもそも、Win"Merge"というぐらいですから、比較するだけでなく、比較結果をもとに内容をマージ(併合)することもできます。
ディレクトリ単位での比較も可能です。
プラグインで機能拡張することもできます。例えば、WordやExcelファイルの比較ができるようになるプラグインなども有志の方が公開されていたりします。←基本、自分の用途はレジストリファイルの比較がほとんどなので、使ったことはないのですが。
比較オプション設定画面
また、設定もかなり詳細に変更できます。
例えば、各種色設定や文字の大きさ設定、比較時の細かいオプション設定(改行コードの違いを許容するかどうか等)もできます。
また、これらの細かい設定をファイルとして書き出して保存しておくこともできます。

このように、非常に高機能かつ完成度が高いWinMergeだと思いますが、一点だけ機能面で要望があるとすれば、キーアサインの変更機能がないところでしょうか。
極めて平易なキーアサインだとは思いますが、WinMergeを使う前はMicrosoft製のWindiffを使っていた関係もあり、それとは全くキーアサインが違うので最初は戸惑いました。ちなみに、Rekisaだとキーアサインの変更が可能なので、どうも慣れないという方はRekisaという手もアリです。
WinMergeの基本的なキーアサインをHelpファイルより抜粋して載せておきますので参考にしてください。
キー 機能
Alt+Home 最初の相違へ
Alt+End 最後の相違へ
Alt+Enter 現在の相違もしくは選択済みの相違へジャンプ
Alt+↑ 前の相違へ
Alt+ 次の相違へ
Alt+ 右から左へ相違をコピー
Alt+ 左から右へ相違をコピー
Ctrl+Alt+← 右から左へ相違をコピーし、次の相違へ
Ctrl+Alt+→ 左から右へ相違をコピーし、次の相違へ

日本語版DLページ:WinMerge 日本語版
本家DLページ:WinMerge
紹介:WinMerge(窓の杜)
関連:「WinMerge」でOffice文書や一太郎文書を比較「xdocdiff WinMerge Plugin」(窓の杜)

+diff+Windiff+差分抽出ソフト+テキスト比較+フリーソフト+