テキスト差分(Diff)比較

2つのテキストを行単位で比較し、追加された行・削除された行を色分けして表示するツール。設定ファイルの変更確認、文章の校正、Gitを使わないコードレビューなどに使えます。差分計算はすべてブラウザ内で完結し、入力内容はサーバーに送信されません。

Tips

  • 設定ファイル(.env・YAML・JSONなど)の変更前後を貼り付けるだけで、どの行が追加・削除されたかを一目で確認できます。
  • Gitを導入していない環境でも、コピー&ペーストだけで簡易的なコードレビューや文章の校正チェックができます。
  • 行の並び替えは「削除+追加」として検出されます。同じ内容の行が別の位置に移動しただけの場合も差分として表示される点に注意してください。
  • 空白や改行、大文字・小文字の違いも1文字単位まで厳密に比較されるため、インデントだけが変わった行も「変更あり」として検出されます。
  • 長い文章を比較する場合は、段落ごとに1行にまとめてから貼り付けると、差分が段落単位で見やすくなります。

よくある質問

設定ファイルやドキュメントの変更前後を比較したり、Gitを使わない環境でのコードレビュー、契約書や規約文の改訂箇所の確認など、行単位でテキストの変更点を把握したい場面全般で活用できます。

CSV差分比較ツールは列構造を持つ表形式データをキー列で照合しセル単位の変更を検出するのに対し、本ツールは列構造を持たない自由形式のテキストを行単位で比較します。設定ファイルや文章など、表形式でないデータの比較に向いています。

JSON差分比較ツールはJSONの構造(オブジェクト・配列の階層)を解析してキー単位で差分を検出するのに対し、本ツールは構造を解析せず単純に行として文字列比較します。JSON以外の任意のテキストにも使える汎用ツールです。

行の並び替えは「移動」としては検出されず、元の位置からの削除と新しい位置への追加の組み合わせとして表示されます。これはGitのdiffコマンドなど、一般的な行単位diffアルゴリズムに共通する挙動です。

いいえ。差分の計算処理はすべてブラウザ内のJavaScriptで完結し、入力したテキストがサーバーに送信されることはありません。機密情報を含む文章でも安心してご利用いただけます。
ツールくん

余談ですが ― LCS(最長共通部分列)で差分を求める仕組み

2つのテキストの差分を検出するアルゴリズムとしては、1970年代にIBMの計算機科学者ユージン・マイヤーズ(Eugene Myers)が発表した「Myers差分法」が広く知られています。GitやSVNなど主要なバージョン管理システムの`diff`コマンドはこの系統のアルゴリズムを採用しており、行単位の追加・削除を効率的に検出します。本ツールもこの考え方を踏まえ、最長共通部分列(LCS)を求めることで変更点を最小限に絞り込んでいます。

最長共通部分列(LCS)とは、2つの系列(ここでは行の並び)の両方に共通して現れる部分列のうち、最も長いものを指します。2つのテキストの差分は、このLCSに含まれない行を「削除」または「追加」とみなすことで求められ、LCSが長いほど画面に表示される変更点は少なくなります。動的計画法(DP)というアルゴリズム技法を使うことで、行数の多いテキストでも現実的な時間で計算できます。

diffアルゴリズムには弱点もあります。ある行が別の位置に移動しただけの場合、多くの実装は「移動」として検出せず「削除」と「追加」の組み合わせとして表示します。行の順序が大きく入れ替わったテキストを比較すると、実際の変更量以上に差分が多く見えることがあるのはこのためです。この性質を知っておくと、差分結果を読み解くときに誤解が減ります。

→ すべての余談を見る