WinMerge: ファイルの違いがすぐわかる、WinMergeの基本的な使い方


###### 実施環境

WinMerge 2.16.28.4

### 0. 概要

例えばファイルの更新箇所を確認したいときや環境による差分を調べたいときなど、2つのファイルの異なる箇所だけを抜き出してみたいことはしばしばあります。
このとき、サイズの小さいファイルならば2つのファイルを開いて目視確認でもよいかもしれませんが、何十行、何百行もの文字列が書き込まれているファイルを1行1行比較するのはさすがに大変です。
そのようなときに役立つのが、今回紹介する WinMerge というアプリです。

### 1. インストール

 WinMerge は、以下のサイトで配布されています。

[WinMerge](https://winmergejp.bitbucket.io/)

今回は最新の安定版であるバージョン 2.16.28.4 をインストールします。
「インストーラ」列の「ダウンロード」を押し、環境にあったインストーラをダウンロードします。
今回使用する環境は 64bit 環境なので、 64bit 版を選択します。

![WS000128.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/e967c282-230d-3bb4-9ab4-322ec9bd4782.jpeg "ダウンロード")

インストーラがダウンロードされるので、これをダブルクリックして実行します。

![WS000129.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/4a33a5db-62e0-55e1-891a-b50141eae512.jpeg "インストーラ")

ライセンス情報が表示されるので、確認して「次へ」を押します。

![WS000130.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/a1b5cdc4-47b1-5370-d584-ddcc700be6b0.jpeg "ライセンス情報")

インストール先の選択画面が表示されます。
今回はデフォルトのまま変えず、「次へ」を押します。

![WS000131.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/b9a8676a-a4e7-b582-14ab-136a29a4d642.jpeg "インストール先の指定")

インストールするコンポーネントの選択画面が表示されます。
今回はデフォルトのまま変えず、「次へ」を押します。

![WS000132.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/41ccd780-8f35-962e-dd98-4146c8d342b6.jpeg "コンポーネントの選択")

プログラムアイコンの作成場所の選択画面が表示されます。
今回はデフォルトのまま変えず、「次へ」を押します。

![WS000133.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/bb5b284d-0715-bd5f-8c4b-1d5470ccfcf9.jpeg "プログラムグループの指定")

追加タスクの選択画面が表示されます。
今回はデフォルトのまま変えず、「次へ」を押します。

![WS000134.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/55c04280-3a79-47d8-62e1-cc0de607b863.jpeg "追加タスクの選択")

インストール設定の確認画面が表示されるので、確認して「インストール」を押します。

![WS000135.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/a3ccf84e-bab8-916d-3108-de7c8d9c0e80.jpeg "インストール準備完了")

インストールが実行されるので、しばらく待ちます。

![WS000136.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/b7dd9ac1-d6db-1ee6-43f0-04acaaa6e650.jpeg "インストール")

インストール後、 WinMerge の情報が表示されるので確認して「次へ」を押します。

![WS000137.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/7a6dc361-51f9-a4d0-7f01-08678d0dfe65.jpeg "情報")

これでインストールはすべて完了です。
「完了」を押してインストーラを終了します。

![WS000138.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/1a040da5-ce5a-014e-af67-b8ac259d943a.jpeg "完了")

### 1. 基本

では、さっそく WinMerge を起動して使ってみましょう。
起動すると、以下のようなウィンドウが開きます。

![WS000142.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/78a1474e-be57-3112-97e9-80e1f99de6bc.jpeg "WinMerge")

左上の「開く」ボタンを押します。

![WS000143.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/863db9c1-4f8f-a433-811b-dc8e3ee305bf.jpeg "開く")

比較するファイルの選択画面が表示されます。
今回はテキストファイルを2つ選択し、「比較」を押します。

![WS000145.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/29852f9c-8a89-b0a5-5e89-760565d29cb0.jpeg "比較")

比較結果は、以下のように色分けして表示されます。

|該当行|該当部分|色|
|:-|:-|:-|
|同じ|同じ|白色|
|違う|同じ|濃い黄色|
|違う|違う|薄い黄色|
|違う|片方だけある|赤色|
|片方だけある|片方だけある|赤色|

![WS000148.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/41416e36-15ef-9ab8-bb6b-d55c3de39891.jpeg "比較結果")

ファイル全体が同じ内容である場合は、以下のようなウィンドウが表示されます。

![WS000186.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/4fbd6d9c-1f1b-c067-ca6b-d555c3dc6afd.jpeg "同一ファイル")

ちなみに、「開く」ボタンをおさずとも、最初の画面に2つのファイルをまとめてドラッグ&ドロップしても比較画面は表示できます。

### 2. 3ファイル比較

 WinMerge は、2ファイルだけでなく3ファイル同時比較も可能です。
3ファイル同時比較時の表示は以下のようになります。

![WS000149.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/ec09824e-41f5-d849-b1a6-a4ed5ed9e4c0.jpeg "3ファイル")

### 3. 違う行のみを表示する

サイズが非常に大きいファイルの場合は、違いが存在する行のみに表示を制限すると差分調査がしやすくなります。
表示を制限するには、「表示」⇒「 Diff コンテキスト」を選択し、違いが存在する行と前後何行分までを表示するかを選択します。

![002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/ad51363f-89cf-5500-ef92-e2e8cfa74145.png "表示")

今回は0行(違いが存在する行のみ表示)を選択しましょう。
選択した結果は以下の通りです。

![WS000173.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/4f0054ae-d371-1a68-a3c0-d0f82f54b78c.jpeg "0行")

### 4. レポート出力

比較結果を他の人と共有するには、レポート出力が便利です。
レポート出力を行うには、比較結果が表示されている状態で「ツール」⇒「レポートの生成」を選択します。

![001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/ad927d5b-3ec9-20c9-4631-41c8041d55cb.png "ツール")

出力先の選択画面が表示されるので、出力先と出力ファイル名を指定して「保存」を押します。

![WS000167.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/4e1dd2e7-6053-557d-2d8b-e6f1a1d6b246.jpeg "レポートの生成")

以下の画面が表示されたらレポートの出力は成功です。

![WS000168.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/c0d80278-d02a-b88e-1156-2f12c0484968.jpeg "出力成功")

レポートは基本的に、 HTML 形式で出力されます。

![WS000169.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/a1fc72fd-aeaf-11b5-2487-496be65c1fc2.jpeg "出力ファイル")

ブラウザで開くと、以下のような表示になります。

![WS000171.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/7ef50315-4d80-2265-095f-71c1808c2c20.jpeg "レポート内容")

### 5. 画像比較

 WinMerge は、画像の比較も可能です。
画像を比較すると、以下のように異なる箇所が黄色で表示されます。

![WS000174.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/65b3515e-2b3f-1703-164f-ef5396447176.jpeg "画像比較")

ちなみに、画像比較でレポート生成を行うと、メインとなる HTML ファイルの他に< HTML ファイル名>.files というフォルダも同時に生成されます。

![WS000175.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/dd1fa559-6b01-4c7d-0afd-6ef1decf4a39.jpeg "画像レポート1")

このフォルダの中には、 HTML ファイルで表示する差分画像が入っています。

![WS000176.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/3e1c5692-53da-13f7-4280-33a38eea6cde.jpeg "画像レポート2")

![WS000178.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/1b296c85-fd67-9967-df83-3dfcf9f2a5be.jpeg "画像レポート3")

### 6. フォルダ比較

ここまでファイルとファイルを比較してきましたが、 WinMerge はフォルダとフォルダを比較することも可能です。
実際に比較すると、以下のように表示されます。

![WS000189.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/d694852a-b4ff-8f3a-4f94-3ccde2dacb10.jpeg "フォルダ比較")

フォルダ比較の場合は、レポートの出力方法も少し違います。
「ツール」⇒「レポートの生成」までは同じですが、その後出力設定ウィンドウが表示されます。
レポートファイル名をフルパスで指定した後、スタイルは「シンプルな HTML 形式」にします。
さらに今回は、「ファイル比較レポートを含める」にチェックも入れてみましょう。

![WS000193.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/c0fb0ec9-d78b-2985-a84c-54f9bbe8793b.jpeg "出力設定")

出力した結果は以下の通りです。
「ファイル比較レポートを含める」にチェックを入れた場合、メインとなる HTML ファイルの他に< HTML ファイル名>.files というフォルダも同時に生成されます。

![WS000195.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/e0df1995-4de5-478d-dc7f-6c1b570135ed.jpeg "フォルダレポート1")

このフォルダの中には、さらに別の HTML ファイルが入っています。
この HTML ファイルは、個別のファイルの比較結果を出力したレポートです。

![WS000196.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/7196fa32-c5ba-86e3-56bb-9244367e9237.jpeg "フォルダレポート2")

さらに、この個別ファイルの比較レポートにはメインの HTML ファイルからリンクがつなげられています。
例えばメインの HTML ファイルを見ていて、「 test2.txt 」ファイルが異なると記載されているのでその詳細が見たくなったとします。
その場合、メインの HTML ファイルの「 test2.txt 」をクリックすると、そのリンクをたどって上のフォルダに入れられた個別ファイルの差分レポートが表示されます。

![WS000197.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/9388f67f-8541-bc6e-3f87-bd7b059a64aa.jpeg "フォルダレポート3")

![WS000198.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/e692a0c6-1685-c561-47a0-365b717c8573.jpeg "フォルダレポート4")

### 7. マージ

 WinMerge はファイルを比較するだけではなく、ファイルの異なる箇所を一方から他方へコピーすることでファイルのマージを行うこともできます。
ファイルのマージを行う場合は、以下のボタンを使用します。

![WS000181.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/7107df6e-e72a-029d-73d6-0b975462bb6c.jpeg "マージ")

先ほどのテキストファイルで先頭行を選択し、実際にマージをしてみましょう。

![WS000183.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/68bcef71-a007-77ba-5fe6-3b53f886ef66.jpeg "選択箇所")

「左側へコピー」を押した場合、右側に表示された行が左側にコピーされます。

![WS000184.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/08f2bd16-2e25-7f0b-58de-e2c4d0cb01ce.jpeg "左側へコピー")

「右側へコピー」を押した場合はちょうどその逆です。

![WS000185.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/cb1832de-5a50-ebed-2264-316d3912bdf4.jpeg "右側へコピー")

個別の行についてマージするのではなく、ファイル全体を一括でマージすることもできます。
実際に「すべてを右側にコピー」を押してみると、以下のようになります。

![WS000187.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/1039ab71-3f15-f355-8f32-312f6255d51f.jpeg "すべてを右側にコピー")

マージ結果は、「保存」ボタンを押せば保存できます。

![003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/df354f25-9835-5bfd-90f2-28c13aef67c6.png "保存")

元のファイルに上書きする形でマージ結果を保存した場合、マージ前の元ファイルは「 .bak 」という拡張子でバックアップされます。

![WS000188.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/cf99f271-476d-1166-c9b6-b435b0e1b97d.jpeg "バックアップ")