utilduck
Home · 開発 · テキスト差分比較ツール

テキスト差分比較ツール

下に2つのバージョンのテキストを貼り付けると、追加・削除された行がハイライトされます。

追加0
削除0

このdiffツールについて

このツールは最長共通部分列(LCS)アルゴリズムを使って2つのテキストを行単位で比較します。バージョン管理のdiffツールと同じ考え方で、テキストAをテキストBに変える最小限の追加・削除行の組み合わせを求めます。

テキストBにのみある行は追加、テキストAにのみある行は削除として表示され、両方で完全に一致する行は表示されません。このツールは行全体を比較し、行内の個々の文字は比較しません。

行単位のテキスト差分(diff)はどう動作するのですか?

このツールは2つのテキストを行単位に分割し、両方に共通して存在する行の最長共通部分列(LCS)——両方のテキストに同じ順序で現れる最も長い行の並び——を見つけます。この共通部分列に含まれないテキストAの行は削除、テキストBの行は追加として表示されます。例: 文の中の単語を1つ変えただけでも、その行全体が削除1行・追加1行として表示されます。

2つのテキストを比較する手順

  1. テキストA欄に元のテキストを貼り付けるか入力します。
  2. テキストB欄に更新後のテキストを貼り付けるか入力します。
  3. 入力するとすぐに両方のテキストが行単位に分割され、自動的に比較されます。
  4. テキストBだけにある行は追加として強調表示され、テキストAだけにある行は削除として強調表示されます。
  5. 順序を逆に貼り付けてしまった場合は、入れ替えボタンでどちらを元のテキストとして扱うか反転できます。

LCS差分アルゴリズムが変更点を判断する仕組み

共通行 = 最長共通部分列(テキストAの行, テキストBの行) ・ 削除 = 共通部分列にないAの行 ・ 追加 = 共通部分列にないBの行
  • 最長共通部分列(LCS) = 両方のテキストに、相対的に同じ順序で現れる(連続している必要はない)最も長い行の並び
  • 行単位の差分 = 行全体を単位として比較する方式。長い行の中で1文字だけ変わっても、その行全体が変更として表示されます

行の比較例

テキストAの行テキストBの行結果
素早い茶色のキツネが素早い茶色のキツネが変更なし
怠けた犬を飛び越える。眠そうな犬を飛び越える。削除1行 + 追加1行
(なし)新しい行がここに挿入されました。追加1行
この行は削除されました。(なし)削除1行

よくある質問

単語を1つ変えただけなのに、なぜ行全体が変更として表示されるのですか?

このツールは文字単位ではなく行単位で比較します。2つの行の間に1文字でも違いがあれば別々の行として扱われ、変わった単語だけを強調する代わりに、古いバージョンは削除、新しいバージョンは追加として表示されます。

行の順序だけが変わったのに、なぜ追加と削除の両方として表示されるのですか?

行が周囲の行との相対的な位置から別の場所へ移動すると、新しい位置では最長共通部分列に含まれないことがあります。その場合、テキストの内容自体は変わっていなくても、元の位置では削除行、新しい位置では追加行として表示されることがあります。

空白や大文字・小文字の違いは無視されますか?

いいえ。行は完全に一致するかどうかで比較されるため、先頭・末尾の空白や大文字・小文字の違いだけでも、見た目が同じに見える2つの行が別の行として扱われます。

比較のために自分のテキストがどこかにアップロードされますか?

いいえ。両方のテキスト欄の比較はすべてブラウザで実行されるJavaScriptによって処理され、サーバーには送信されません。

このツールは行単位の差分のみを行い、変更された行の中で具体的にどの文字や単語が変わったかまでは強調しません。数千行に及ぶ非常に長いテキストは、アルゴリズムの特性上、比較に時間がかかることがあります。

プライバシーと安全性

  • ブラウザ内で計算 — 入力した値はお使いの端末内だけで計算され、utilduckのサーバーへ送信されません。
  • 暗号化された通信 — すべてのページはHTTPSで配信され、通信経路で内容を読み取られません。
  • 第三者へ渡しません — 入力内容は解析・広告サービスへ渡されません。
  • 保存しません — 計算結果をサーバーに保存せず、アカウント登録も不要です。

最終更新: 2026-08-24