テキスト比較・差分出力ツール「NekoTextDiff」
概要と注意事項
■概要この『うさみみハリケーン』関連ツール(同梱NekoTextDiff.exe)は、2つのテキストファイルの内容を比較して、その差分を出力するソフトウェアです。比較対象のテキストデータは、クリップボードから取得することも可能です。
当ソフトウェアはもともと、英文のようなソースコードの時系列比較を目的として、『うさみみハリケーン』開発者用に製作したものです。しかしながら、一般的な用途で役立つ機会もあると考え、『うさみみハリケーン』のユーザーに役立てるべく同梱しています。なお、仕様上は、英語や日本語だけではない、世界各国の言語での文章比較に対応しています。
デフォルトの差分表示モードでは、差分をそのままあるいは、同一行を折りたたんで表示します。また、差分表示モードとは独立した、差分をテキストとして出力するモードも実装しました。このモードでは、文章中の変更箇所を含む行、あるいは変更文字列だけを抽出して出力することもできます。
「NekoTextDiff」の動作環境は、.NET Framework 4.8がインストールされた環境です。Windows 10 バージョン1903以降ならば、.NET Framework 4.8がプレインストールされています。また、NekoTextDiffでは、Windows 10 バージョン1809で導入された等幅フォント「BIZ UDゴシック」を使用しているため、それより前のWindowsでは文字の表示が崩れます。他の『うさみみハリケーン』同梱ソフトウェアと同様にポータブルアプリケーションであり、USBメモリ内でのインストールと実行も可能です。使用にあたり追加のランタイムや他のソフトウェアは必要ありません。
当ソフトウェアでは、視覚ストレスを低減するために、差分表示に彩度の低い色を使っています(色設定は変更可能)。
■ライセンス情報
当ソフトウェアは、テキスト形式の差分を生成するC#ライブラリ「DiffPlex」を使用しています。
<ライブラリのライセンス情報>
ライブラリ名: DiffPlex
著作権者: Matt Manela (mmanela)
ライセンス: Apache-2.0 license
ライブラリの変更時期: 2025年12月,2026年4月
ライブラリの変更内容:
・一部表示文字列の日本語化
・差分解析単位の変更
・高DPI対応
・某ウイルス対策ソフトが原因で生じる強制終了を回避
<参考リンク>
DiffPlexのソースコード
当ソフトウェアは、テキスト形式の差分を生成するライブラリ「Diff Match Patch」を使用しています。
<ライブラリのライセンス情報>
ライブラリ名: Diff Match Patch
著作権者: Google
ライセンス: Apache-2.0 license
ライブラリの変更時期および変更内容: 2025年12月、.NET Frameworkが対応していない機能を無効化
<参考リンク>
Diff Match Patchのソースコード
■注意事項
指定したテキストファイルの、文字コードの判別は自動で行います。BOMすなわち文字コード判別に使用可能な特定のバイト列がファイル先頭にあれば、先頭数バイトをチェックするだけで確実に判別できます。一方、BOMがないテキストファイルは、UTF-8やShift_JISなどの判別のために、ファイル全体を読み込んで統計的処理を行うため、処理に相応の時間がかかります。これにより、当ソフトウェアで比較するテキストファイルは、文字コードがBOM付きのUnicode(UTF-16)やUTF-8であることが望ましいといえます。
デフォルトでは「DiffPlex」を使って、文章中の「文字」を単位として比較を行います。DiffPlexは、英文のように単語が半角スペースで区切られた文章に適している、文章中の「単語」を単位として比較を行うこともできます。しかしDiffPlexには、この比較の単位を動的に切り替える仕組みが実装されていないため、当ソフトウェアを起動時に、Shiftキーを押しながら起動すると、文章中の単語を単位として比較を行うようにしています。
「Diff Match Patch」はテキストの比較時に文字単位と単語単位の両方で比較を行い、かつその結果をテキストとして出力するために使用します。これは後述する、「差分テキスト出力モード」の「変更前後の文字を併記」オプションを指します。
文字コードの種類や日本語文字列といった複数の条件が重なると、文章の最後の1行を認識できなくなることがあります。これは、当ソフトウェアが使用している差分解析ライブラリの仕様です。この問題には、文章の最後に改行を追加することで対処可能です。また、当ソフトウェアの、比較前にテキストを整形する機能に、改行を追加するオプションを用意しています。
比較元と比較先の文章が、ほとんど内容が異なり差異が多すぎる場合に、比較が中断されることがあります。これは、当ソフトウェアが使用している差分解析ライブラリの仕様です。
比較処理の安全性を考慮し、比較するファイルのファイルサイズは、上限を512MBに設定しています。ただし実行環境の状況によっては、このサイズよりもはるかに小さいテキストの比較で、異常動作を招く可能性があります。また、大きなサイズのテキストファイルの比較処理には、多大な時間を要することになります。
某ウイルス対策ソフトが実行されている環境では、差分表示画面上で右クリックを行うと異常動作が生じる可能性があります。同環境では、.NET Frameworkをベースとする他のソフトウェアでも、右クリック時に異常動作といった、同様の問題が生じることがあります。この某ウイルス対策ソフトが原因で生じる問題は、長年放置されており将来的な対応は見込めません。
参考スクリーンショット
・差分表示モードの2画面(デフォルト)
・差分表示モードの1画面

・差分表示モードで変更箇所のみ文字表示

・差分表示モードで変更箇所の文字を強調

・差分テキスト出力モード

・差分テキスト出力モードで変更行のみ出力

・差分テキスト出力モードで変更前後の文字を併記

・差分テキスト出力モードで変更前後の文字を併記:差分をHTML形式で保存(削除追加分強調)

基本操作
■用語説明当ソフトウェアの画面でテキストファイルのパスを入力・表示する「コンボボックス」は、画面の中に配置する部品(コントロール)の一つで、任意のテキストを入力したり、あらかじめ用意された選択肢リストの中から一つを選ぶためのものです。「チェックボックス」は、チェックすることで設定の有効と無効を切り替えるコントロールです。相違行リストの「リストボックス」は、複数データをリスト表示するコントロールです。モードを切り替える「ラジオボタン」は、複数の選択肢の中から一つを選んで、選択を変更するためのコントロールです。「テキストボックス」はテキストを入力・編集するコントロールです。
■テキストの指定
比較するテキストファイルを指定します。この指定は、以下の4つの方法で行うことができます。
1.コマンドラインオプション
2.「参照」ボタンでファイルパスを指定
3.ファイルパス入力欄にテキストファイルをドラッグアンドドロップ
4.差分表示画面・差分出力テキストボックスにテキストファイルをドラッグアンドドロップ
差分表示画面や差分出力テキストボックスに、2つのテキストファイルをドロップすると、自動で比較を開始します。1つだとファイルパス入力欄にパス入力だけを行います。
このドラッグアンドドロップによるテキストファイル指定は、当ソフトウェアとドラッグ元に権限の一致が必要です。もし当ソフトウェアが管理者権限で起動されたならば、ドラッグ元にも管理者権限が必要となり、標準ユーザー権限のエクスプローラーからのドラッグアンドドロップは、Windowsにより拒否されます。これは、Windowsのセキュリティ関連機能である「ユーザーインターフェイス特権の分離(UIPI)」によるものです。
比較対象にクリップボード内のテキストを指定する場合は、任意のタイミングで「クリップボード使用」チェックボックスをチェックします。これにより、チェック時点でのクリップボード内のテキストを取り込みます。PDFファイルや、Microsoft Office関連のDOCX、PPTXおよびXLSXファイルといった各種ドキュメントファイルの比較では、後述する『うさみみハリケーン』同梱の簡易エクスプローラー「Portable Explorer」で文字列抽出を行い、クリップボード経由で比較することができます。
■テキストの大文字小文字無視・半角スペース無視の指定
「A=a」チェックボックスは、テキスト比較時に半角アルファベットの大文字と小文字の違いを無視するオプションです。同様に、「-WS」は半角スペース(White Space)を無視するオプションです。これらのオプションは、後述「差分テキスト出力モード」の「変更前後の文字を併記」での比較時には適用されません。
■テキストの整形・入れ替え指定
テキスト整形オプションは、取得したテキストを内部で整形してから比較するためのものです。元のテキストファイルやクリップボード内テキストは変更しません。このオプションの変更後の反映には、比較の実行が必要です。
「コメント・空行削除」は、C++やC#言語での一般的なコメントを、正規表現を使って削除します。この場合、コメントと判断する「//」や「/**/」が、文字列変数内で使用されている場合も削除するので注意してください。ただし、URL用の「https://」や「http://」は削除を回避するようにしています。「Unicode正規化」では、全角半角の統一や、数字を丸で囲んだものを数字に変換などを行います。なお、Unicode正規化の前に、テキスト比較で問題となる、全角チルダ「~」と見た目が同じ「WAVE DASH」を、全角チルダに変換します。Unicode正規化では、意図しない変換が行われる可能性に注意してください。「改行追加」は、当ソフトウェアが使用するライブラリの仕様として、複数の条件により最後の行を認識できなくなるケースに対処するためのものです。
また、ユーザーが正規表現置換を用いた独自のテキスト整形を指定できるようにしました。これは後述する、設定保存用XMLファイルの編集で行います。
「新旧入れ替えて比較」では、旧テキストと新テキストの内容を入れ替えて比較します。このオプションの変更後の反映には、比較の実行が必要です。
■モードの指定
必要に応じて、表示設定を変更します。デフォルトの「差分表示モード」では、左右2画面で新旧テキストの差分を表示します。差分表示モードの「表示を1画面化」チェックボックスを有効にすると、デフォルトで2画面表示の差分表示を、1画面の行ベース差分表示で行います。「変更箇所のみ文字表示」は、変更のない文字を背景と同色にして見えなくします。「変更箇所の文字を強調」は変更箇所の文字を強調色で表示します。「同一行をたたむ」が有効ならば、変更箇所がある行と、その前後2行だけを表示し、表示量と表示時間を低減することができます。この前後行の行数は、後述する設定保存用XMLファイル「NekoTextDiff.xml」の、項目「DiffViewModeNoCollapseSameLinesCount」で数値指定が可能です。
「差分テキスト出力モード」ラジオボタンで切り替えることができる「差分テキスト出力モード」は、デフォルトの差分表示モードとは表示先や内部処理が異なる、差分をテキストとして出力するモードです。すでにデフォルトの差分表示モードで差分を表示していても、「比較実行・差分表示」ボタンを押して、このモードで新たに差分を出力してください。「変更行のみ出力」は、文章中の変更箇所を含む行だけを抽出して出力するオプションです。
また、差分テキスト出力モードの「変更前後の文字を併記」は、文章中の変更された文字を抽出して出力するオプションです。ただし、差分の視認性が低下しないよう、厳密な差異の出力ではなく、ある程度差異をまとめる仕組みになっています。この機能には、多種多様な日本語文章の比較を想定した、文字・行・意味・効率の優先順位を変更して差分解析を行う追加オプションや、差分解析結果をHTML形式でファイルに保存するオプションがあります。
この「変更前後の文字を併記」指定時のテキスト比較時だけ、差分生成ライブラリ「Diff Match Patch」を使用している関係で、大文字小文字の違いを無視(「A=a」チェックボックス)など一部のオプションが適用できません。
■比較実行
「比較実行・差分表示」ボタンで、差分表示あるいは差分テキスト出力を行います。テキストの整形・入れ替え指定の変更時や、差分テキスト出力モードのオプション変更時には、その変更を反映させるために、このボタンで差分を再表示・再出力する必要があります。
■相違行リストの操作
「比較実行・差分表示」ボタンの右にある、差分表示モード用の相違行リストは、比較実行結果を基に、新テキストを基準として相違行をリストアップします。相違行のうち、「-」がつく行番号は、新テキストでは削除され存在しない行を意味し、直前の存在する行の行番号をあてています。このリスト内の行番号を選択すると、差分表示箇所をその行に変更します。また、リスト内の選択の上下移動は、リストボックスにフォーカスがあれば上下キー、あるいは、既定のショートカットキー「Alt+↓」「Alt+↑」か、「F3」「Shift+F3」キーで行うこともできます。さらに、「Alt+Home」や「Alt+End」キーで、相違行リストの先頭あるいは終端に選択を移動することも可能です。
必要に応じて、「新旧入れ替えて比較」オプションを使って、旧テキストを基準に相違行をリストアップすることもできます。
■比較結果の操作
差分表示モードの2画面の区切り線を左右にドラッグすることで、2画面のサイズ(表示比率)を一時的に変更可能です。
差分表示モードでは、画面上で右クリックから、カーソル直下の行の文字列をクリップボードにコピーできます。ただし、某ウイルス対策ソフトが実行中であれば、この操作で短時間のフリーズといった異常動作が生じる可能性があります。
「テキスト保存」ボタンにより、差分表示モードの比較結果の新テキストあるいは、差分テキスト出力モードでテキストボックスに出力された差分解析結果を必要に応じて編集してから、テキストファイルに保存します。保存テキストの文字コードは、デフォルトではUTF-16ですが、ボタンの上にあるコンボボックスで、UTF-8など別の文字コードを指定することもできます。
整形オプションを適用したテキストを保存したいならば、新旧テキストに同じものを指定して、整形オプションを指定後、差分表示モードでの比較結果を表示あるいは、差分テキスト出力モードの「変更前後の文字を併記」指定での比較結果を出力します。この表示・出力した差異の無いテキストを「テキスト保存」ボタンで保存します。この際、差分表示モードのオプション「同一行をたたむ」は無視されます。
■その他
「最前面に表示」チェックボックスで、当ソフトウェアの画面の最前面表示と通常表示を切り替えます。
■設定保存
当ソフトウェアの各種設定は、当ソフトウェア終了時にXMLファイル「NekoTextDiff.xml」に保存され、次回起動時に反映されます。保存先は実行ファイル「NekoTextDiff.exe」があるフォルダです。保存内容は、比較したテキストファイルのパス履歴といった比較に係る各種設定に加えて、ウィンドウの位置とサイズも保存します。
また、このXMLファイル(文字コードUTF-8のテキストファイル)を、当ソフトウェア起動前にテキストエディタで編集することで、差分表示モードの画面で用いる各種色設定を変更することもできます。色情報は「#FF4422AA」という形式で、色情報の構成要素を16進数の値で指定します。この例では、不透明度0xFF、赤0x44、緑0x22、青0xAAの構成からなる色を意味します。ネット上に多くみつかる「WEB色見本」サイトで、赤緑青の数値指定と実際の色を確認することができます。
比較時のテキスト整形オプション「正規表現置換」の、ユーザー指定もXMLファイル編集で行います。項目名は「RegexReplaceName」です。初期設定では以下の内容の正規表現置換の例を指定しています。
1.複数の同種の単語を指定して、1つの単語に置換する
2.連続する半角スペースとタブを、1つの半角スペースに置換する
3.行頭にある半角1~4桁の数字(行番号など)を削除する
なお、保存する正規表現置換の指定で使用可能なエスケープシーケンスは、\r、\n、\t など主要なものだけです。
■動画再生
差分表示モードでは、画面背景で任意の動画を再生することができます。実行ファイル「NekoTextDiff.exe」と同じフォルダに、動画ファイル「NekoTextDiff.mp4」があれば、起動時から差分表示モードの背景でこの動画をループ再生します。この自動再生対象の動画ファイルの拡張子はmp4固定ですが、その動画形式はMP4以外のMPEG、AVI、WMVなど、実行環境のWindowsに付属する「Windows Media Player」が対応している動画形式ならば再生可能です。また、差分表示モードの画面に任意のMP4ファイルをドラッグアンドドロップすることで、その動画を一時的にループ再生することも可能です。
動画再生時の音量や不透明度は、設定保存用XMLファイル「NekoTextDiff.xml」の、項目「VideoVolume」や「VideoOpacity」の数値指定で変更可能です。この数値は 0~1.0 の範囲で指定します。
再生する動画は、実行環境に過大な負荷がかからないものにしてください。過大な負荷がかかると、当ソフトウェアあるいは他のソフトウェアの動作に悪影響を与える可能性があります。
他のソフトウェアとの連携について
当ソフトウェアとの連携を目的に製作した、『うさみみハリケーン』同梱のフォルダ比較ツール「NekoFolderDiff」(NekoFolderDiff.exe)との併用をお勧めします。NekoFolderDiffでは、比較する新旧フォルダ内にある任意のファイルを、比較ツールに渡して比較させる機能を実装しており、当ソフトウェアを比較に使用可能です。この場合の操作手順は、新旧それぞれのフォルダに同名のテキストファイルがあるならば、ファイルリスト上でそのテキストファイルをダブルクリックします。比較したいテキストファイルの名前が異なるならば、新旧それぞれのフォルダのファイルリスト上でテキストファイルを1つずつ選択し、右クリックで表示されるポップアップメニューから「新旧フォルダの選択テキストファイルを比較」です。<参考>フォルダ比較ツール「NekoFolderDiff」

また、『うさみみハリケーン』同梱の簡易エクスプローラー「Portable Explorer」の併用も可能です。Portable Explorerは、TXTファイル、HTMLファイル、XMLファイル、PDFファイルや、Microsoft Office関連のDOCX、PPTXおよびXLSXファイルといった各種ドキュメントファイルからの文字列抽出にも対応しています(Microsoft Office関連には追加プログラムの導入が必要)。加えて、画面の選択領域や各種画像ファイルから文字列を読み取るOCRにも対応しています(Windowsの機能の有効化が必要)。さらに、NekoFolderDiffとは仕様が異なるフォルダ比較機能も実装しており、同機能から使用可能なファイル比較ツールに、当ソフトウェアを指定することもできます。
<参考>Portable Explorerのフォルダ比較機能(項目をダブルクリックで比較ツール起動・比較実行)

テキストファイルではないバイナリファイルの比較には、『うさみみハリケーン』同梱のバイナリファイル比較ツール「NekoBinDiff」(NekoBinDiff.exe)が活用可能です。上記NekoFolderDiffで、ファイルリスト上の右クリックからバイナリファイル比較を行う際は、このNekoBinDiffを起動します。
ほとんど同一な画像の比較には、『うさみみハリケーン』同梱の汎用ファイルアナライザ「青い空を見上げればいつもそこに白い猫」(AoZoraSiroNeko.exe)に実装している、ステガノグラフィー解析機能(画像合成機能の相違箇所抽出オプション)が役立ちます。