テキスト差分ツール

2 つのテキストを左右の欄に貼り付けると、行単位で自動比較し、追加・削除・変更を色分けして示します。校正、コードの比較、契約書の突き合わせに。

元のテキスト(旧版)
新しいテキスト(新版)

テキスト比較ツールの使い方

「この 2 稿はどこが変わったのか」は、書く仕事をしていると何度も聞かれる質問です。目で 1 行ずつ追うのは非効率なうえに見落としも多く、何百行ものコードや数千字の契約書では特に危険です。このツールは差分アルゴリズム(diff)で 2 つのテキストの最小の編集経路を計算し、追加・削除・変更をすべて印で示します。

比較結果の読み方

  • 左が元のテキスト、右が新しいテキストです。 左右の行番号は揃えてあり、同じ行番号が対応する位置を表します。
  • 緑 = 追加。 右(新しい版)にだけある行で、元のテキストには存在しません。
  • 赤 = 削除。 左(古い版)にだけある行で、新しい版では取り除かれています。
  • 黄 = 変更。 両方に同じ行がありますが中身が完全には一致しません。「行内の文字単位で比較」をオンにすると、その行のどの文字が変わったかまで示します。
  • 灰 = 変更なし。 両側で完全に一致する内容で、前後の文脈を掴むために表示します。

4 つのオプションの役割

  • 大文字小文字を無視:Hello と hello を同じものとして扱います。命名規則にはこだわらずコードを比較したいときに便利です。
  • 行頭・行末の空白を無視:各行の前後のスペースやタブを除いてから比較します。インデントの違い(スペースかタブか)で無意味な差分が大量に出るのを防ぎます。
  • 空行を無視:両側の空行を比較対象から外します。体裁を整えるために改行を足しても変更とはみなしません。
  • 行内の文字単位で比較:行レベルの差分に加えて文字レベルの差分も取ります。字句や数字の小さな修正に向いています。このオプションをオフにすると行単位でしか示されないため、どこが変わったのか具体的にはわかりません。

いくつかのコツ

比較の前に書式を揃えましょう。 片方が Word からコピーした改行のない長い段落で、もう片方がプレーンテキストだと、段落ごとすべて変更として表示されます。先に両方の欄で段落ごとに改行を入れておくのがおすすめです。

長いテキストは少し遅くなります。 差分アルゴリズムの計算量はテキストの長さに依存します。本ツールは非常に長いテキスト(数千行以上)では自動的に高速な近似アルゴリズムに切り替わります。結果は粗くなりますが参考にはなります。

結果はそのまま持ち出せます。 比較結果の欄はプレーンテキストとして描画されるので、色分けされた内容を選択してコピーし、メールや文書の説明に貼り付けられます。

よくある質問

段落ごと移動しただけなのに、大量の削除と変更として表示されるのはなぜ?

diff アルゴリズムが本質的に計算しているのは「編集距離」で、古い文から新しい文にするための最小の操作手順を探すからです。ある段落を 3 行目から 20 行目へ動かすと、アルゴリズムには「3 行目が削除され、20 行目が追加された」と見え、「移動した」とは認識されません。これはすべての diff ツールに共通する性質で、Git のブランチ比較も同じです。目的が内容の実質的な変化を見ること(体裁の位置ではなく)なら、先に両側の段落順を揃えておくとよいでしょう。

Word 文書や PDF とも比較できますか?

本ツールはプレーンテキストのみを扱います。エディタで全選択してコピーし貼り付けるか、いったん .txt として保存してからコピーしてください。PDF からコピーしたテキストは奇妙な改行や空白が混ざりがちなので、メモ帳などに貼って整形してから使うのがおすすめです。

内容はアップロードされますか?

されません。差分アルゴリズムはすべてページ内の JavaScript で動いており、貼り付けたテキストはブラウザのメモリ上にしか存在しません。ページを再読み込みすれば消えます。ネットワークを切って試せば、オフラインでも動作することが確認できます。

最大で何文字まで貼れますか?

厳密な上限はありませんが、数万行以内に収めるのがおすすめです。それを超えるとブラウザが長い比較結果を描画するのに時間がかかり、ローカルの専用ツール(VS Code 内蔵の diff、WinMerge、Beyond Compare など)を使ったほうが快適です。

「変更」と「1 行削除+1 行追加」はどう違うのですか?

アルゴリズムが両側で似た行を対応づけられるかどうかで決まります。左の 5 行目と右の 5 行目が半分以上同じなら「変更」と判定し、変わった文字まで示します。似た行がまったく見つからなければ「左で 1 行削除+右で 1 行追加」に分解され、結果では赤と緑が隣り合って表示されます。

関連ツール