テキスト差分
2 つのテキストブロックを比較し、行単位で追加・削除・変更されない部分を表示。並列または統合表示。
用途
段落、設定ファイル、SQL クエリ、リストなど、テキストの 2 バージョンを比較し、追加・削除・変更なしの行を正確に確認するツールです。git diff がすぐに使えない場面や、テキストがバージョン管理下にない場面でも使えます。出力はコードレビューでお馴染みの行単位 diff で、追加は緑、削除は赤、変更なしはプレーンに表示されます。
使うべきタイミング
- 「同じに見える」2 つのメール、契約書、貼り付けテキストの違いを把握したいとき。
- 2 つの環境(staging vs prod)の設定ファイルや環境変数を比較したいとき。
- 他者が Word/Docs で編集したコピーの変更点をレビューしたいとき。
- 2 つのクエリ結果、ログ抜粋、JSON ブロブを diff したいとき(必要に応じて先に JSON Formatter で正規化)。
- コミット前の検索置換のサニティチェック。
並列表示と統合表示
- 並列表示 — 小さな差分を行単位でスキャンしやすい。左に元、右に新版。
- 統合表示 —
git diffに近く、共有・印刷向き。差分が散らばっているときに追いやすい。
よくある注意点
- これは行単位 diff であり、語単位ではありません。 長い行の中で 1 文字変わっただけでも行全体が変更扱いになります。文章レベルの細かな差分が必要なら、語単位にトークナイズするツールを使ってください。
- 「空白を無視」は比較のみに影響し、表示は変えません。 末尾スペースやインデントだけが違う行は変更なしとして扱われますが、表示は元の空白のままです。
- 「大小を無視」も同様。 「TODO」と「todo」は同一視されますが、表示は元の大小です。
- 順序が重要です。 2 行を入れ替えると、両方とも削除+追加として表示されます。「移動」検出はありません。
- 巨大な入力(1 万行超)は遅くなります。 LCS は O(m·n) です。通常のファイルなら問題ありませんが、巨大データでは小分けで diff してください。
- 末尾改行は 1 行と数えます。 末尾に改行があるかないかだけが違う 2 入力では、末尾に追加か削除が 1 件出ます。