treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

ファイルの差分を比較したいときWinMargeが便利

例えば、

  • 原稿を書いていたが、下書きが複数あってどれが最新か分からなくなった
  • Configファイルのどれがどう違うのかを見たい
  • ログファイルのサーバAとサーバBの違いを見たい

つまるところdiffが欲しい、という要望を満たします。

この場合、WinMargeというソフトを使うとイイよ、というご報告をします。

テキストデータの差を見る

この間使いましたが、こんな感じで比較ができます。
図1:テキストを比較する

f:id:treedown:20160401094501p:plain

この間の記事でローカルポリシーエディタのエラー調査した際にファイルを比較する必要がありました。その時の画面です。

起動するウィンドウの右ペイン:左ペインに比較したいデータをコピペして「F5」キーを押下するか画面中の「表示更新」をクリックしてやれば左右の画面にあるデータを比較してくれます。
単純な使い方としてはこれだけです。GUIですし分かりやすいんじゃないでしょうか?

ファイルの差を見る

ファイルの差を確認するときはウィンドウにファイルをドラッグ&ドロップしてやることで比較可能です。以前比較した「LocationProviderAdm.admx」と「Microsoft-Windows-Geolocation-WLPAdm.admx」を比較してみます。
まず1ファイルドラッグ&ドロップします。そうすると、「比較するファイルまたはフォルダ」欄の1つ目にドラッグ&ドロップしたファイルがフルパスで表示されます。
図2:比較ファイル×1

f:id:treedown:20160401094714p:plain

「2:」と表示されている箇所に比較したいもう一つのファイルをドラッグ&ドロップします。
図3:比較ファイル×2

f:id:treedown:20160401094728p:plain

この画面で「OK」ボタンをクリックすると比較が開始します。
この場合ファイルは同一なので、図1の「選択されたファイルは同一です。」とメッセージが表示されて比較が完了です。

これ、内容が違う場合どうなるかと言いますと…
図4:内容が違う場合

f:id:treedown:20160401094749p:plain

図のようにハイライト表示で教えてくれます。
長いプログラムコードやスクリプトなどのファイル比較でも、比較結果が相違する部分にジャンプすることができますので、相違する部分だけを見比べることができます。ジャンプは「Alt」キーを押下しながら矢印キー「↑」「↓」で相違点だけを見ることができます。
これが一番の便利ポイントです。

具体的に使うシチュエーション

冒頭に記載しましたが、ログファイルを比較するときに使えます。
ログファイル、例えば正系サーバの動作と副系サーバの動作を比較するために互いのログファイルを取り出して動作の差を見比べる、といった使い方です。
正常動作している方のログと見比べて問題を発見する、というときにこのツールで比較するわけですね。

スクリプトやバッチファイルを複数バージョンで編集しつつ動作の確認を実施していると、テスト後にどのファイルがどの動きをするのかがファイル名からだけでは覚えていないor記憶違いがあり得ます。
このツールで作成したバッチやスクリプトを比較して確実な違いを改めて確認しておくことで配置・配布の間違いを減らすことが可能です。

前出の比較している画面では、二つのファイルを比較しながらファイルの中身を編集して上書き保存や名前を付けて保存などの直接ファイルを保存することも可能です。
なので、
テンプレートになるスクリプト・バッチファイルを見て比較しながら、変更点だけ書き換えて実際に利用するファイルを作成する
ということも可能になります。
ちなみにあらかじめファイル同士でマッチングする内容が分かっているのであれば一括で適用することもできます。
図5:メニューから一括適用

f:id:treedown:20160401094825p:plain

テンプレートファイルの内容を一括適用すれば、アレコレと追加したオプションやコマンド文字列が一気に初期化できますし、テンプレートファイルに対して特定のオプションを一括で反映させて動作用ファイルを生成することもできます。いちいち定例として毎回同じテキストをファイルに入力しているのであれば、入力用ファイルを用意しておいて「すべてを左(右)にコピー」を選択して相違点を反映させてしまえばワンクリックで生成完了です。

またドキュメント作成時にでも役に立ちます。
原稿を書いているとき、下書きをテキストファイルで用意しつつWORDファイル(.docx)にテキストをコピペしている場合だと、テキストで修正したかWORDファイルで修正したかが分からなくなることがあります。

下書き1はテキストファイルでPCで作成していたけど、下書き2はEvernoteで編集したもんだから、どのデータがどの表現で文章が記述されていたか忘れた…ということもありまして、この場合でもテキスト(ないしファイル)を比較してどの版が一番新しいか、どの下書きにどの記述が抜けているか、を比較的容易に確認できて抜け漏れも少なくなる、という良い点があります。
版の管理ちゃんとやっておきなさいよ、って話なのですが、さすがに下書きにちゃんと版の管理をやるかというとどうしても手を抜いてしまいます。
でも後で比較して、がっちゃんこ、一つのデータにまとめることが容易にできるこのツールのおかげで、下書きレベルの作業では手抜きしてもどうにかなる、というところです。

まとめ

と、このようにWinMergeはステキなフリーソフトです。正確にはオープンソースソフトウェア(GNU GPL v2.0、GNU一般公衆ライセンス)です。
GNU GPLなので、フリーソフトでたまにある「個人使用目的に限り利用可能」ということもありません。会社で安心してガッツリ利用できる点も評価の一つです。
フリーソフト、として公開されているソフトウェアでも
「商用利用不可」や「個人で非営利に利用するなら可」といったソフトウェアでは会社で利用するわけにはいきません。
その点このソフトはGNU GPL v2.0で定義されているように自由な利用が可能なので会社で利用することも可能、という点も評価ポイントというわけです。

もしテキストベースのファイル比較をしたい場合にはこのWinMergeというソフトを使ってみると便利かもしれませんよ。