テキスト差分(Diff)比較
2つのテキストを行単位で比較し、追加された行・削除された行を色分けして表示するツール。設定ファイルの変更確認、文章の校正、Gitを使わないコードレビューなどに使えます。差分計算はすべてブラウザ内で完結し、入力内容はサーバーに送信されません。
Tips
- 設定ファイル(.env・YAML・JSONなど)の変更前後を貼り付けるだけで、どの行が追加・削除されたかを一目で確認できます。
- Gitを導入していない環境でも、コピー&ペーストだけで簡易的なコードレビューや文章の校正チェックができます。
- 行の並び替えは「削除+追加」として検出されます。同じ内容の行が別の位置に移動しただけの場合も差分として表示される点に注意してください。
- 空白や改行、大文字・小文字の違いも1文字単位まで厳密に比較されるため、インデントだけが変わった行も「変更あり」として検出されます。
- 長い文章を比較する場合は、段落ごとに1行にまとめてから貼り付けると、差分が段落単位で見やすくなります。
よくある質問
余談ですが ― LCS(最長共通部分列)で差分を求める仕組み
2つのテキストの差分を検出するアルゴリズムとしては、1970年代にIBMの計算機科学者ユージン・マイヤーズ(Eugene Myers)が発表した「Myers差分法」が広く知られています。GitやSVNなど主要なバージョン管理システムの`diff`コマンドはこの系統のアルゴリズムを採用しており、行単位の追加・削除を効率的に検出します。本ツールもこの考え方を踏まえ、最長共通部分列(LCS)を求めることで変更点を最小限に絞り込んでいます。
最長共通部分列(LCS)とは、2つの系列(ここでは行の並び)の両方に共通して現れる部分列のうち、最も長いものを指します。2つのテキストの差分は、このLCSに含まれない行を「削除」または「追加」とみなすことで求められ、LCSが長いほど画面に表示される変更点は少なくなります。動的計画法(DP)というアルゴリズム技法を使うことで、行数の多いテキストでも現実的な時間で計算できます。
diffアルゴリズムには弱点もあります。ある行が別の位置に移動しただけの場合、多くの実装は「移動」として検出せず「削除」と「追加」の組み合わせとして表示します。行の順序が大きく入れ替わったテキストを比較すると、実際の変更量以上に差分が多く見えることがあるのはこのためです。この性質を知っておくと、差分結果を読み解くときに誤解が減ります。