WinMerge 日本語版

ファイルやフォルダの比較ができてマージもできる、WinDiffを使い易くしたようなソフトWinMergeの日本語版
GUIな CVS, Subversionクライアントのお供にでもどうぞ。

32bit版ダウンロード 64bit版ダウンロード ARM64版ダウンロード
WinMerge日本語版
バージョン 日付 インストーラ Zip版 ソース
安定版
2.16.38-jp-1 2024-01-29
2.16.36-jp-2 2023-12-29
2.16.36-jp-1 2023-11-29
2.16.34-jp-1 2023-10-29
プレリリース版
ダウンロード
旧安定版
2.12.4+-jp-31 2012-03-26 ソース(5.28MB)
2.10.4+-jp-1 2009-01-26 ダウンロード(2.87MB) ダウンロード(4.92MB) ソース(5.09MB)
2.8.6+-jp-2 2008-09-01 ダウンロード(2.75MB) ダウンロード(4.84MB) ソース(8.62MB)
2.6.14+-jp-1 2008-03-17 ダウンロード(2.57MB) ダウンロード(4.37MB) ソース(3.29MB)
2.4-jp-4 2005-11-08 ダウンロード(2.54MB) ダウンロード(3.31MB) ソース(4.78MB)
2.2-jp-1 2004-11-14 ダウンロード(2.67MB) ダウンロード(2.94MB) ソース(1.95MB)
Frhed (2.14.0+-jp-68まで同梱していたバイナリエディタのWinMerge日本語版向け改造版)
バージョン 日付 ファイル ソース
0.10902.2015.5 2015-03-01 Frhed 32bit版(0.24MB) Frhed 64bit版(0.25MB) ソース(Bitbucket)
WinMergeプラグイン(インストーラやZip版にも同じものが同梱されています。プラグインを使用するには 展開された *.sct, *.dll ファイルを MergePlugins フォルダにコピーしてください)
名前 日付 ファイル
プラグインパック(32bit版)(要2.14.0+-jp-63以上) 2023-06-29 ダウンロード(0.28MB)
プラグインパック(64bit版)(要2.14.0+-jp-63以上) 2023-06-29 ダウンロード(0.31MB)
Apache Tika と PlantUML と q と yq コマンド
(ApacheTikaとPlantUMLとqとyqコマンドがダウンロードできない環境では、このZIPファイル内のWinMergeフォルダを %APPDATA% にコピーしてください。)
2023-01-29 ダウンロード(64.4MB)(2.16.26+-jp-1以降)
Apache Tika と q と yq コマンド
(ApacheTikaとqとyqコマンドがダウンロードできない環境では、このZIPファイル内のWinMergeフォルダを %APPDATA% にコピーしてください。)
2022-01-29 ダウンロード(55.1MB)(2.16.18+-jp-1以降)
  • dirview

    ディレクトリ比較

  • fileview

    ファイル比較

  • preview

    印刷プレビュー

  • report

    HTMLレポート

  • github_bitbucket_colorscheme

    GitHub/Bitbucket カラースキーマ

  • imgdiff

    画像比較

  • diff_excel

    プラグインによるExcelシートの画像化比較

  • table_editing

    テーブル比較

  • table_editing

    Webページ比較

  • drag-drop

    ドラッグ&ドロップ

  • excel-plugin

    Excelプラグイン

  • prediff-linefilter-plugin

    PrediffLineFilterプラグイン

  • drag-mode

    画像比較:ドラッグモード

  • overlay-animation

    画像比較: オーバーレイアニメーション

  • insertino-deletion-detection

    画像比較: 挿入削除検出

  • clipboard-compare-demo

    クリップボード比較

  • clipboard-compare-demo

    Webページ比較

2.16.0で違いがほぼなくなりました。

  • 日本語ヘルプを添付
  • ファイルの文字コード自動検出([編集]→[設定]→[コードページ]カテゴリ→[mlang.dll ... ]をチェック)
  • 3ファイル比較、3フォルダ比較
  • 64bit版の提供
  • 行内比較アルゴリズムの改善
  • Diffコンテキスト表示(差異のある行の周辺のみを表示するモード)(印刷やHTMLレポートにも反映される)
  • エディタ上で矩形選択可能(Altキーを押しながらマウス選択または、Ctrl+Bを押してからShift+カーソルキーで選択)
  • WinMergeで開いているファイルを外部エディタで編集・保存後、WinMergeをアクティブにしたときに変更を検出
  • 外部エディタの起動引数に$file, $linenum 指定可
  • VBScriptやJScriptで記述されたプラグインでも動作
  • フォルダ比較中でもファイルリスト表示。比較の進捗状況が確認でき、ファイルが開ける。
  • フォルダ比較ウインドウ、フォルダ比較レポートで差異ファイルの色付け
  • ファイル比較ウインドウで縦に並べて表示([表示]→[垂直分割])(バージョン 2.13 以降)
  • ファイル・フォルダオープンダイアログの変更(バージョン 2.13 以降)
  • Explorerでフォルダ選択時にシェルエクステンションアイコンを変更(バージョン 2.13 以降)
  • エンコードエラー時、文字コード選択、プラグイン選択、HEX表示の選択が可能(バージョン 2.13 以降)
  • フォルダ再比較後、フォルダツリー展開状態を復元(バージョン 2.13 以降)
  • フォルダ比較をマルチスレッドで実行(バージョン 2.13 以降)
  • 同期ポイントを設置可能(バージョン 2.14.0-jp-18 以降)
  • 3方向マージサポート機能(バージョン 2.14.0-jp-29 以降)
  • 簡易画像比較・マージ機能(バージョン 2.14.0-jp-56 以降)
  • 「バイナリコンテンツ」フォルダ比較方法の追加(バージョン 2.14.0-jp-68 以降)
  • ドラッグ&ドロップ機能の改善(バージョン 2.14.0-jp-74 以降)

3方向マージ(3-way merge)とは

あるファイルから他者と自分が別々の変更を行った結果、2つのファイルができてしまったため、 他者が修正したファイルと自分が修正したファイルをマージして 一つのファイルに戻したいとします。このとき、修正前の元のファイルが残っていれば、他者ファイル、自分のファイルの3つのファイルを元に ある程度自動的に修正を1つのファイルにマージすることが可能です。 この3つのファイルから(自動的な)マージをすることは、3方向マージ(3way-merge)と呼ばれています。

自動的なマージは、他者の修正と自分の修正箇所が被っていない箇所で可能です。たとえば、 あるファイルが小説のテキストだったとして、他者は第一章の誤字・脱字を修正し、自分は第三章の誤字・脱字を修正した場合は、 お互いの修正が被っていないのでどちらの修正も自動的にマージすることができます。しかし、他者と自分が同じ箇所(行)に 異なる修正を行った場合は、どちらの修正を採用してよいのか自動的に判断することができません。このような状態は コンフリクト(衝突/競合)と呼ばれ、手作業で修正を行うことになります。

P4MergeやKDiff3,DiffMerge,TortoiseMerge のようなツールはこの3方向マージをサポートしており、 WinMerge日本語版でも今更ではありますが、2.14.0-jp-29以降から利用可能となりました。 (実現方法としては、本当はp4mergeの様な4ペイン形式にしたかったのですが、 今まで実装する気力がわいてこなかったのと、最近3ペイン形式でもよいかと考え直して、今のように実装してみました) とはいえ、現時点では、3方向マージに関して他のツールよりも優位な点は特になく、むしろ、3ファイル比較時の差分検出精度がおそらく GNU diffutils の diff3 コマンドと同等程度で他のツールと比べて比較的大雑把になっているため、 他のツールがコンフリクトだと検出しないところでも コンフリクトと検出することがあります。このため、他のツールではうまくいないことがある場合や、 他のツールになじめなかった場合は、WinMerge日本語版を使用してみてください。

自動マージ

WinMergeで元のファイルと他者のファイルと自分のファイルの3つのファイルを開き、 [マージ]メニュー→[自動マージ(Alt+Ctrl+M)]またはツールバーのauto-mergeを選択すると コンフリクトしている箇所(他者と自分が同じ所を修正しているためどちらを採用してよいかわからない所)は除いて自動的にマージを行います。

WinMergeでは、現在アクティブになっているペインによってマージする方法を変えています。

  • 中央ペインで自動マージした場合は、[他者のファイル]-[元のファイル]-[自分のファイル]という順番で ファイルが並んでいるとみなし、コンフリクトしていない左側(他者)と右側(自分)の変更を中央(元)にマージします。
  • 右側ペインで自動マージした場合は、[元のファイル]-[他者のファイル]-[自分のファイル]という順番で ファイルが並んでいるとみなし、コンフリクトしていない中央(他者)の変更を右側(自分)にマージします。
  • 左側ペインで自動マージした場合は、[自分のファイル]-[他者のファイル]-[元のファイル]という順番で ファイルが並んでいるとみなし、コンフリクトしていない中央(他者)の変更を左側(自分)にマージします。

他の3ペイン方式のマージツールの多くは、最初の中央(元ファイル)に他者と自分の変更をマージする方式を採用していますが、 私は2番目の右側(自分)に中央(他者)の変更をマージする方式でも良いかなと思っています。 前者だとマージされる変更が他者と自分の両方となるためマージ量がどうしても多くなってしまい、 マージ後に通知される変更の数にぎょっとしてしまって心理的によくないのと、元のファイルが書き換わらないため、 マージ後でも他者がどのような修正を行ったのかを見ることができるのと、 マージ前にどの箇所が自動マージされるのかが事前にロケーションペインで水色で表示されている箇所としてわかるためです。 逆に後者だとマージすると自分のファイルの内容が変更されるため、マージ前の自分のファイルの内容と比較できなくなったり、 元のファイルと自分のファイルが離れているため、元と自分との比較がしにくくなります。好みの方法を選んでください。

なお、自動マージで変更された内容を元に戻したい場合は、Ctrl+Zキーで元に戻すことができます。 また、コマンドライン引数(/al,/am,/ar)を指定することによって、WinMerge起動時に自動で自動マージを行うことができます。

コンフリクト箇所への移動

自動マージでは、コンフリクトしている箇所はマージを行わずそのままの状態とするため、 手動でコンフリクト箇所を修正してください。

コンフリクトの箇所はロケーションペインで3つのバーの間が赤く表示されており、 自動マージ直後は、最初のコンフリクト箇所へ移動します。

次のコンフリクト箇所へ移動するには、[マージ]→[次のコンフリクト(Alt+Shift+Down)]または、ツールバーのnext-conflict アイコンをクリックしてください。

また、[マージ]→[前のコンフリクト(Alt+Shift+Up)]または、ツールバーの prev-conflictアイコンで前のコンフリクト箇所に移動することができます。

なお、コンフリクト箇所を未修正のまま保存しようとしても kdiff3 のように警告しませんので注意してください。 修正忘れが発生すると他者から俺の修正が見捨てられたと憤慨されることになります。

3方向マージの例

右側ペインにマージする例です。

自動マージ前

左側:[元のファイル]、中央:[他者のファイル]、右側:[自分のファイル]の順番でファイルを開きます。右側ペインでマージを行うため、 右側ペインにフォーカスを当てた後、ツールバーのauto-mergeをクリックすると自動マージが行われます。

before-3way-merge

自動マージ後

自動マージ後は、コンフリクトしている箇所(例では3番目の差異)を修正してください。この例では、例えば、return "cat"; を 他者の修正を尊重してreturn "dog and cat";のように修正します。

after-3way-merge

3方向マージに関連するコマンドラインオプション

/al
起動後、左側ペインで自動マージを行います。
/am
起動後、中央ペインで自動マージを行います。
/ar
起動後、右側ペインで自動マージを行います。
/o 出力ファイルパス
保存するとき、変更を行ったファイルそのものではなく、代わりに /o オプションで指定したファイルに変更を保存します。
/fl
起動後、左側ペインにフォーカスを当てます。
/fm
起動後、中央ペインにフォーカスを当てます。
/fr
起動後、右側ペインにフォーカスを当てます。
/wl
左側ペインの内容を書き換えることができないようにします。
/wm
中央ペインの内容を書き換えることができないようにします。
/wr
右側ペインの内容を書き換えることができないようにします。

バージョン管理ツールとの連携例

バージョン管理ツールを使用して複数の人と同時に開発すると3方向マージが必要な状況がよく発生します。 たいていのバージョン管理ツールでは3方向マージ用のツールが指定できるようになっています。

TortoiseSVN/TortoiseGIT との連携例

[設定]メニュー→[差分ビューアー/マージツール]で[外部]を選択し、その下のテキスト入力エリアへ以下のように指定します。
  • 右側ペインでマージする場合(起動時自動マージしたくない場合は /ar を削除)
    C:\Program Files\WinMerge\WinMergeU.exe /e /ub /fr /ar /wl /wm /dl %bname /dm %tname /dr %yname  %base %theirs %mine /o %merged
  • 中央ペインでマージする場合(起動時自動マージしたくない場合は /am を削除)
    C:\Program Files\WinMerge\WinMergeU.exe /e /ub /fm /am /wl /wr /dl %tname /dm %bname /dr %yname  %theirs %base %mine /o %merged
  • 左側ペインでマージする場合(起動時自動マージしたくない場合は /al を削除)
    C:\Program Files\WinMerge\WinMergeU.exe /e /ub /fl /al /wm /wr /dl %yname /dm %tname /dr %bname  %mine %theirs %base /o %merged

TortoiseHG との連携例

3-wayマージツールに winmergeu を指定し、%userprofile%\mercurial.ini の [merge-tools] セクションへ以下のように追加します。
[merge-tools]
# 右側ペインでマージする場合(起動時自動マージしたくない場合は /ar を削除)
winmergeu.args =   /e /ub /fr /ar /wl /wm /dl base /dm other /dr local $base $other $local /o $output
# 中央ペインでマージする場合(起動時自動マージしたくない場合は /am を削除)
# winmergeu.args = /e /ub /fm /am /wl /wr /dl other /dm base /dr local $other $base $local /o $output
# 左側ペインでマージする場合(起動時自動マージしたくない場合は /al を削除)
# winmergeu.args = /e /ub /fl /al /wm /wr /dl local /dm other /dr base $local $others $base /o $output

SourceTree との連携例

[Tools]→[Options]→[Diff]タブ で [Merge Tool]を Custom にし、 [Diff Command]に

C:\Program Files\WinMerge\WinMergeU.exe
[Arguments]に
-e -ub -fr -ar -wl -wm -dl base -dm remote -dr local $BASE $REMOTE $LOCAL -o $MERGED

を指定します。(右側でマージする例)

ウィルス誤検知の対応状況

  • 64bit版のインストーラは、InnoSetup6.0.xで作成していましたが、71のエンジンのうち、SecureAge APEX, McAfee-GW-Edition の2つで常に警告が発生してしまうため、一時的にInnoSetup5でインストーラを作成するようにします。 これにより、1つのインストーラでユーザ毎か全ユーザ対象かの選択インストールができなくなったため、別途ユーザ毎インストーラを作成しています。

2024/01/29 2.16.38-jp-1

ファイル比較

  • 不具合修正: コードページダイアログで右側のBOMを変更しても反映されない問題を修正した。
  • C++ シンタックスハイライトのキーワードを更新した。 (PR#2166)(PRをいただきました。ありがとうございます。)

Webページ比較

  • 比較中はステータスバーに「比較しています...」を表示するようにした。
  • ロケーションペインを追加した。 (PR#2160)

フォルダー比較

  • [列の表示]ダイアログのボタンの活性/非活性制御の改善。 (PR#2154)(PRをいただきました。ありがとうございます。)

プラグイン

  • 不具合修正: 以下のように二重引用符を文字列が /unpacker コマンドライン引数に指定された場合に正しく解釈されない問題を修正した。

    /unpacker "Replace ""a"" ""b"""

2022~2023年までの変更履歴

2018~2021年までの変更履歴

2014~2017年までの変更履歴

2014年以前の変更履歴

WinMergeはGPL2です。

WinMerge日本語版に関する不具合連絡等は、こちらか、か、以下のメールフォームに記入するか、issueトラッカーへの登録をお願いします。

メールフォームでご連絡いただいたがメールアドレスが記載されていないため返信できなかった方々へ

  • 2022/06/01 いちゆーざー様: ファイル比較レポートをブラウザで開いたとき、TABキーで次の差異に移動できます。これで代用にならないでしょうか。
  • 2021/09/28 y様: オプションダイアログの比較/バイナリ→表示設定ボタン→言語で日本語を設定してください