テキストやソースコードを比較して相違点を表示するグラフィカルなdiffツール「WinMerge」
プログラムの開発やHTMLの編集をする際に有用なツールの1つに、diffツールと呼ばれる、2つのファイルを比較してその相違点を表示するツールがある。ファイルの変更・修正点を確認したり、作業の進行状況をチェックするために使われており、特に複数人が関わる開発では必須ともいえるツールだ。今回紹介する「WinMerge」は、Windows向けの多機能かつ使いやすいdiffツールだ。
WinMergeはテキストの差分をとるだけではなく、比較したファイル間で異なっている個所を互いにコピーして修正したり、フォルダ内のファイルの有無を比較する機能なども備えている。また、プラグインで対応するファイル形式を拡張でき、たとえばWordやExcelの文書ファイルやPDF、パワーポイント、果ては一太郎の文書ファイルまでも比較できてしまう。操作性も高く、内容に違いのある行は色分け表示されるためとても分かりやすい。プログラミングにとどまらず、ビジネス文書の校正を行うような状況でも役立つため、技術者以外にもぜひ試してもらいたいツールだ(図1)。

なお、WinMergeではPCのハードディスクにインストールして利用する通常版のほか、USBメモリにインストールして持ち運べるPortable版(WinMerge Portable 改造版)も用意されている。どちらもユーザーインターフェイスは日本語化されているので、目的や使用シーンに合わせたものを選択しよう。
WinMergeのインストール
WinMergeはSourceForge.JPのWinMergeダウンロードページから入手できる。ダウンロードページの上部には「最新ファイル(5件)」が表示されるが、こちらは不安定な実験版が並んでいる場合があるので、その下にある「Stable versions」からファイルを選択しよう(図2)。

WinMergeのインストーラは一般的なウィザード形式で、指示に従って必要な設定を行い、「次へ」をクリックして行けばよい。途中の「コンポーネントの選択」画面では、デフォルトでは「フィルタ」および日本語言語ファイルのみが選択されているが、必要に応じて言語ファイルやプラグインを追加しよう(図3)。

「追加タスクの選択」画面では、エクスプローラのコンテキストメニューに「WinMerge」メニューを追加したり、TortoiseSVNとの連携機能などを設定できる(図4)。

WinMerge Portable 改造版のインストール
WinMerge Portable 改造版はSourceForge.JPのWinMerge Portable 改造版ダウンロードページから入手できる。ページには最新版のインストーラのみが表示されているので、Windowsマークとともに「DL」と書かれたアイコンをクリックしてダウンロードしよう(図5)。「WinMerge-バージョン番号-Setup.exe」がインストーラなので、これをダウンロードすればよい。

インストーラは「PortableApps.com」互換のウィザードである。基本的には通常のウィザード同様に「次へ」をクリックして進めればよいが、インストール先の指定画面では「参照」をクリックしてUSBメモリのドライブを指定しよう。ドライブを選ぶと標準のフォルダ名が自動で付加される(図6)。


起動するにはUSBメモリ内のインストールしたフォルダにある「WinmergePortable.exe」を実行すればよい。環境に応じてANSI版かUNICODE版が自動で選択される(図8)。

WinMergeの使い方
WinMergeを起動したら、まずはUIの日本語化を行おう。メニューバーの「View」−「Language」を選択し、表示されるダイアログから「日本語(日本)-Japanese(Japan)」を選んで「OK」をクリックするだけだ(図9)。

テキストを比較するには、比較対象となる2つのファイルを選択する必要がある。方法はいくつかあるが、最も分かりやすいのは比較したいファイルをまとめてウインドウにドラッグ&ドロップすることだ(図10)。

また、ツールバーの左から2つめのボタンをクリックするか、メニューバーのファイル−「開く」を選択することでもファイルを開ける。この場合ファイルの選択画面が表示されるので、「左」と「右」の「参照」をクリックして比較したいファイルを選択し、「OK」をクリックしよう。ウインドウにファイルを1つだけドラッグ&ドロップしたときも同様の画面が表示される(図11)。

ファイルを開くと即座に比較が実行され、読み込んだテキストが左右に並べて表示される。内容に違いがある行は黄色、存在しない行は灰色で色分けされる。ウインドウ左側の「ロケーションペイン」では現在表示されている部分と違いのある場所が確認可能だ。メニューバーの「マージ」−「次の差異」を選択するか、ツールバーの下向き矢印ボタンをクリックすると相違点に直接移動できる。なお、デフォルトでは表示ウインドウが非常に小さくなっているので、最大化ボタンをクリックして拡大しておくとよい(図12、13)。


相違点の上で右クリックし、コンテキストメニューから「右にコピー」あるいは「左にコピー」を選択すると、左右の内容を同一に修正できる。また、ちょっとした修正なら表示領域上で直接入力して編集することも可能だ(図14)。

メニューバーの「表示」−「行を右端で折り返す」を選択してチェックを入れると、テキストが折り返し表示される。改行があまり入っていない文書を比較するときに、延々と横スクロールする必要がなくなり快適だ。またウインドウ下部に表示される「Diffペイン」は行内の相違点のみを確認できるが、表示しているとほかのペインの表示領域が狭くなってしまう。もし表示が邪魔であれば、メニューバーの「表示」−「Diffペイン」を選んでチェックを外そう(図15)。

WinMergeではファイルだけでなくフォルダ同士の比較も可能だ。ファイルを比較する場合と同様にフォルダをウインドウにドラッグ&ドロップするか、選択画面でフォルダのパスを指定して開けばよい。フォルダ内のファイルがすべて一覧表示され、ファイルの有無と同一性を手軽に調べられる。一覧に表示されているファイル名をダブルクリックすると、そのままシームレスにテキストファイルの比較へ移行可能だ。なお、フォルダの比較を行う場合、バイナリファイルについても比較が行われる(図16)。

フォルダの比較時は選択画面の「フィルタ」で比較対象にする拡張子やファイル名を指定できる。「選択」をクリックするとプリセットされたフィルタが表示され、Visual C++やHTMLなど特定の言語に関係するファイルだけを簡単に比較できる(図17、18)


WinMergeの設定
WinMergeは多国語対応しているものの、デフォルト設定では文字コードがUnicodeもしくはシフトJIS以外のファイルを開くと、デコードエラーとなって文字化けが発生してしまう。もしEUCなどそれ以外の文字コードを使用しているファイルを比較したい場合は、メニューバーの「編集」−「設定」を選択して設定画面を開き、文字コードをあらかじめ指定しておく必要がある。左側に表示されている一覧から「コードページ」をクリックし、「デフォルトコードページ」のラジオボタンから「カスタムコードページ」を選択する。下部にある空欄に「20932」と入力して「OK」をクリックしよう。なお、この設定にするとシフトJISのファイルが比較できなくなるため、利用し終わったら元に戻しておこう(図19)。

WordやExcelのファイルを比較するには、メニューバーの「プラグイン」−「リスト」を選択する。プラグイン一覧が表示されるので「プラグインを有効にする」にチェックを入れて「OK」をクリックする。その後、メニューバーの「プラグイン」−「自動展開」を選択しよう。あとは通常のテキスト比較と同様の操作を行えばよい。ただし、標準で添付されているDOC/XLS読み込みプラグインはWordおよびExcelがインストールされている環境でしか動作しない。WordやExcelがインストールされていない環境の場合は、後述の「xdocdiff WinMerge Plugin」を利用しよう(図20、21)。


「xdocdiff WinMerge Plugin」を導入すると、WinMergeでPDFファイル、パワーポイントのPPTファイル、一太郎のJTDファイルなど多種多様なファイルを比較できるようになる。インストールはxdocdiff WinMerge Pluginをダウンロードして解凍し、生成された「xdoc2txt.exe」、「zlib.dll」の2ファイルと「MergePlugins」フォルダをWinMergeのインストールフォルダへコピーすればよい。プラグインを有効にして「自動展開」を選択すれば、ドラッグ&ドロップで比較が行える(図22)

今回紹介したツール:
WinMerge
- 作者:Christian List、Dean Grimm
- 動作環境:Windows
- ライセンス:GPLv2
- ホームページ:http://winmerge.org/
- ダウンロードページ:http://sourceforge.jp/projects/winmerge/
WinMerge Portable 改造版
- 作者:おぱ (opa)
- 動作環境:Windows
- ライセンス:GPLv2
- ホームページ:http://sourceforge.jp/projects/wimmergep-alt/
- ダウンロードページ:http://sourceforge.jp/projects/wimmergep-alt/