テキスト差分(Diff)比較

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

2つのテキストを行単位で見比べる

設定ファイルの変更点を確かめたい、文章のどこを直したか知りたい、といった場面で使う差分ツールです。2つのテキストを行ごとに突き合わせ、追加された行と削除された行を色分けして示します。計算はすべてブラウザ内で終わるため、貼り付けた内容が外部へ送られることはありません。

**結果を読むうえで知っておきたいのが、差分アルゴリズムは「最も短い編集手順」を探すという性質です。** そのため**人が「この段落は下へ移動した」と見るものも、機械は「削除」と「追加」の組として表します。** 移動そのものを表す記号は無いのです。もう一つ、比較は行単位なので、**1文字だけ違う行も行まるごとが変更として出ます。** ここで最も紛らわしいのが改行コードや行末の空白の違いで、見た目は同じなのに全行が変更と表示されることがあります。差分が不自然に大きいときは、まずそこを疑ってください。

使い方

  1. 比較元のテキストをAに貼り付ける 変更前の内容を入れます。
  2. 比較先のテキストをBに貼り付ける 変更後の内容を入れます。
  3. 色分けされた差分を読む **追加された行と削除された行が別の色で示されます。**
  4. 差分が大きすぎるときは行末を疑う **改行コードや末尾の空白が違うだけで、全行が変更として出ます。**

使いこなすためのヒント

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

活用シーン

設定ファイルの変更を確かめる

本番へ反映する前に、意図した箇所だけが変わっているかを見られます。

文章の校正結果を突き合わせる

**推敲の前後を並べると、どこに手を入れたかが一目で追えます。**

Gitを使わないレビューをする

バージョン管理に入っていないファイルでも、貼り付けるだけで比較できます。

出力の再現性を確かめる

同じ処理を2回走らせた結果を比べて、食い違いが無いかを確認できます。

差分の用語

追加された行
Bにだけ存在する行です。
削除された行
Aにだけ存在する行です。**行が移動した場合も、削除と追加の組として現れます。**
行単位比較
行をひとまとまりとして扱う比較です。**1文字の違いでも行全体が変更として示されます。**
改行コード
行の終わりを表す文字で、Windows は CRLF、Unix 系は LF を使います。**この違いが全行の差分として現れることがあります。**
ハンク
差分の中で、変更が集まっているひと塊のことです。
コンテキスト
変更された行の前後に添える、変わっていない行のことです。位置を把握しやすくするために示します。

よくある質問

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