テキストやソースコードを比較して相違点を表示するグラフィカルなdiffツール「WinMerge」

 プログラムの開発やHTMLの編集をする際に有用なツールの1つに、diffツールと呼ばれる、2つのファイルを比較してその相違点を表示するツールがある。ファイルの変更・修正点を確認したり、作業の進行状況をチェックするために使われており、特に複数人が関わる開発では必須ともいえるツールだ。今回紹介する「WinMerge」は、Windows向けの多機能かつ使いやすいdiffツールだ。

 WinMergeはテキストの差分をとるだけではなく、比較したファイル間で異なっている個所を互いにコピーして修正したり、フォルダ内のファイルの有無を比較する機能なども備えている。また、プラグインで対応するファイル形式を拡張でき、たとえばWordやExcelの文書ファイルやPDF、パワーポイント、果ては一太郎の文書ファイルまでも比較できてしまう。操作性も高く、内容に違いのある行は色分け表示されるためとても分かりやすい。プログラミングにとどまらず、ビジネス文書の校正を行うような状況でも役立つため、技術者以外にもぜひ試してもらいたいツールだ(図1)。

図1 非常に豊富な機能を持つテキスト比較ツール「WinMerge」
図1 非常に豊富な機能を持つテキスト比較ツール「WinMerge」

 なお、WinMergeではPCのハードディスクにインストールして利用する通常版のほか、USBメモリにインストールして持ち運べるPortable版(WinMerge Portable 改造版)も用意されている。どちらもユーザーインターフェイスは日本語化されているので、目的や使用シーンに合わせたものを選択しよう。

WinMergeのインストール

 WinMergeはSourceForge.JPのWinMergeダウンロードページから入手できる。ダウンロードページの上部には「最新ファイル(5件)」が表示されるが、こちらは不安定な実験版が並んでいる場合があるので、その下にある「Stable versions」からファイルを選択しよう(図2)。

図2 「1. Stable versions」をクリックし、ここからもっともバージョン番号が新しいものを選択してダウンロードする
図2 「1. Stable versions」をクリックし、ここからもっともバージョン番号が新しいものを選択してダウンロードする

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

図3 必要に応じてインストールするコンポーネントを追加する。プラグインをインストールすることで、Word/Excelファイルの比較も可能になる
図3 必要に応じてインストールするコンポーネントを追加する。プラグインをインストールすることで、Word/Excelファイルの比較も可能になる

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

図4 「エクスプローラのコンテキストメニューに追加」をOnにすると、エクスプローラのショートカットメニューからWinMergeを実行できるようになる
図4 「エクスプローラのコンテキストメニューに追加」をOnにすると、エクスプローラのショートカットメニューからWinMergeを実行できるようになる

WinMerge Portable 改造版のインストール

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

図5 ダウンロードは「DL」をクリックするだけだ
図5 ダウンロードは「DL」をクリックするだけだ

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

図6 インストーラを実行したら「Japanese」を選択して「OK」をクリックする
図6 インストーラを実行したら「Japanese」を選択して「OK」をクリックする
図7 「参照」をクリックしてUSBメモリのドライブを指定する。指定しないと導入できないので注意
図7 「参照」をクリックしてUSBメモリのドライブを指定する。指定しないと導入できないので注意

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

図8 WinmergePortable.exeをダブルクリックすると起動できる
図8 WinmergePortable.exeをダブルクリックすると起動できる

WinMergeの使い方

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

図9 「Available Language」から「日本語」を選ぶと日本語化される
図9 「Available Language」から「日本語」を選ぶと日本語化される

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

図10 比較したい2つのファイルをまとめてドラッグ&ドロップしよう
図10 比較したい2つのファイルをまとめてドラッグ&ドロップしよう

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

図11 選択画面で2つのファイルを選択して開くことも可能
図11 選択画面で2つのファイルを選択して開くことも可能

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

図12 最大化ボタンをクリックしてウインドウを拡大する
図12 最大化ボタンをクリックしてウインドウを拡大する
図13 内容が異なる部分は色付きで表示される
図13 内容が異なる部分は色付きで表示される

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

図14 コンテキストメニューから相違点を修正可能だ
図14 コンテキストメニューから相違点を修正可能だ

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

図15 折り返しを行うと長い行でも比較しやすくなる
図15 折り返しを行うと長い行でも比較しやすくなる

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

図16 フォルダ内のファイルの有無と同一性を比較できる
図16 フォルダ内のファイルの有無と同一性を比較できる

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

図17 「フィルタ」の「*.*」を「*.txt」などに変えると拡張子を指定して比較できる
図17 「フィルタ」の「*.*」を「*.txt」などに変えると拡張子を指定して比較できる
図18 「フィルタ」画面で言語を指定すると関連ファイルのみを比較可能になる
図18 「フィルタ」画面で言語を指定すると関連ファイルのみを比較可能になる

WinMergeの設定

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

図19 EUCを比較するには「カスタムコードページ」で「20932」を指定する
図19 EUCを比較するには「カスタムコードページ」で「20932」を指定する

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

図20 プラグインの設定画面で「プラグインを有効にする」にチェックを入れる
図20 プラグインの設定画面で「プラグインを有効にする」にチェックを入れる
図21 「自動展開」も併せて有効にしておくとWordやExcelのファイルを比較できるようになる
図21 「自動展開」も併せて有効にしておくとWordやExcelのファイルを比較できるようになる

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

図22 「xdoc2txt.exe」「zlib.dll」「MergePlugins」フォルダをWinMergeのインストールフォルダにコピーしよう
図22 「xdoc2txt.exe」「zlib.dll」「MergePlugins」フォルダをWinMergeのインストールフォルダにコピーしよう

今回紹介したツール:

WinMerge

WinMerge Portable 改造版