本文へスキップ

テキスト比較(Diff)

2つのテキストを行・単語・文字単位で比べ、追加・削除された部分に印を付けます。空白や大文字・小文字の違いは無視でき、広い画面では2つの文章を行番号付きで左右に並べて表示します。

比較単位

2つのテキストは同じです。

まとめて表示

入力した内容はこのブラウザの中だけで処理され、サーバーには送信されません。 仕組みを見る

2つの文書を比較し、削除行を赤色とマイナス記号、追加行を緑色とプラス記号で表示

使い方

直す前の文章を「元のテキスト」に、直した後の文章を「変更後のテキスト」に貼り付けます。「比較単位」で「行」「単語」「文字」のどれかを選ぶと、その単位で数えた要約が「2行追加」「1行削除」「2行同一」のように出て、その下に印の付いた文章が表示されます。2つの文章に違いがなければ、要約の場所に「2つのテキストは同じです。」と出ます。

「空白の違いを無視」と「大文字・小文字を区別しない」は、書式だけが違う部分を結果から外すためのオプションです。「すべてクリア」は2つの入力欄をまとめて空にします。

比較単位:行・単語・文字

  • 行:1行の中で1文字変わっただけでも、その行全体を削除された行と追加された行として表示します。コードや設定ファイル、リストのように、1行が1項目になっている文章に向いています。
  • 単語:行をまたいで、変わった語だけに印を付けます。英数字とハングルはつながったかたまりを1単語とみなし、分かち書きをしない漢字とかなは、ブラウザーの単語分割機能が区切ったとおりに見ます。この機能がないブラウザーでは、漢字・かな・ハングルを1文字ずつ別々に見ます。スペースや句読点もそれぞれ1つの単位です。
  • 文字:すべての文字を1つずつ比べます。誤字脱字や句読点、スペース1つまで確かめたいときに使います。

同じ修正でも、単位によって要約の数字が変わります。「The quick brown fox jumps」を「The quick red fox leaps」に直した場合です。

比較単位 追加 削除 同一
行 1行 1行 0行
単語 2単語 2単語 7単語
文字 5文字 7文字 18文字

「単語」単位の同一7単語は、The、quick、foxの3語に、その間のスペース4つを足した数です。「空白の違いを無視」をオンにするとスペースを数えなくなり、同一3単語になります。「文字」単位は、brownとredの両方に入っているrのようにたまたま重なった文字を同じ部分として拾うので、語がまるごと入れ替わった文章では印が細切れになって読みにくくなります。

単語の変更を見るとき: 広い画面で「行」単位にして「左右で比較」を見るのがいちばん読みやすい方法です。変更された行どうしを対にしたうえで、その行の中で違っている語を、スペースで区切った単位でもう一段濃く塗ってくれます。「the quick brown fox jumps」を「the quick red fox jumps」に直すと、「brown」と「red」だけが濃く表示されます。「単語」単位も文字ではなく語ごとに比べますが、行番号を付けたり同じ行どうしの高さをそろえたりせず、文章をひと続きで表示します。

「空白の違いを無視」と「大文字・小文字を区別しない」

「空白の違いを無視」が無視する範囲は、比較単位によって違います。

比較単位 無視する違い それでも表示される違い
行 行頭と行末の空白 行の途中のスペースの数(a bとa bは別の行)
単語 語と語の間の空白の数と種類(a lotとa lotは同じ) 続けて書いた語と分けて書いた語(alotとa lotは別)
文字 空白文字の種類(タブとスペースは同じ) 空白の数(a bとa bは1文字削除)

インデントだけが変わったコードは、「行」単位でこのオプションをオンにすると拾われなくなります。空白の数や改行の位置だけが変わった原稿から内容が変わった箇所だけを見たいときは、「単語」単位でオンにしてください。

「大文字・小文字を区別しない」は、3つの単位のどれでもHelloとhelloを同じものとして扱います。2つのオプションは同時にオンにできます。

結果画面の読み方

画面が広ければ「左右で比較」が、狭ければ「まとめて表示」が出ます。画面の幅に応じて自動で決まり、自分で切り替えるボタンはありません。2つの表示は、同じ比較結果を違う並べ方で見せているだけです。

  • 左右で比較:左に「元のテキスト」、右に「変更後のテキスト」を置きます。「行」単位では行番号が付き、同じ行どうしが同じ高さに並びます。片方にしかない行は、反対側がグレーの空欄になります。
  • まとめて表示:2つの文章を1つにまとめ、削除された部分と追加された部分を文章の順番どおりに見せます。

「行」単位では、削除された行の先頭に−、追加された行の先頭に+が付き、背景色が変わります。「単語」と「文字」単位では、削除された部分に取り消し線と赤い背景が、追加された部分に下線と緑の背景が付きます。色と一緒に記号や線が付くので、赤と緑を見分けにくくても読み取れます。

要約の横のコピーボタンは、結果を記号付きのテキストとしてコピーします。「行」単位では、行ごとに先頭へ+(追加)、-(削除)、スペース(同一)が付きます。「単語」と「文字」単位では、追加された部分を{+ +}で、削除された部分を[- -]で囲みます。「the quick brown fox」を「the slow brown fox」に直した結果を「単語」単位でコピーすると、the [-quick-]{+slow+} brown foxになります。

長い文章と違いの多い文章

2つの入力の文字数を合わせて20万文字を超えると、「入力が大きいため比較に時間がかかることがあります。」という注意が出ます。比較はそのまま行われます。

長さよりも大きく効いてくるのは、2つの文章がどれだけ違っているかです。追加と削除を合わせた量が選んだ比較単位で4,000個を超えるか、計算が1.5秒を超えると、変わった部分を探すのをやめ、元の文章全体を削除、変更後の文章全体を追加として表示します。このときは「入力が大きすぎるか差が大きすぎるため、詳細な比較を省略して全体を置き換えとして表示しました。」という注意も一緒に出ます。一から書き直した長い文章を「文字」単位で比べるとすぐこの上限に届くので、そのときは「行」単位に切り替えるか、文章を分けて比べてください。

よくある質問

2つの文章は同じに見えるのに「1行削除」と出ます。なぜですか?

片方の文章だけが改行で終わっている場合です。最後の改行の後ろを空行1つとして数えるので、その空行が削除や追加として拾われます。入力欄のいちばん最後にカーソルを置いて残っている改行を消すと、「2つのテキストは同じです。」に変わります。「1行追加」と「1行削除」が一緒に出ているなら、どこかの行末にスペースが付いているのかもしれません。その場合は「空白の違いを無視」をオンにすれば拾われなくなります。

段落の順番を入れ替えただけなのに、削除と追加として表示されます。移動として扱えませんか?

できません。このツールは位置が変わった内容を「移動」とは認識せず、元の場所で削除され、新しい場所に追加されたものとして表示します。a、b、cの3行をb、c、aに変えると「1行追加」「1行削除」「2行同一」と出ます。削除された行と追加された行の中身が同じかどうかは、自分で見比べて確かめる必要があります。

使用しているオープンソース: jsdiff (BSD-3-Clause)

最終更新日: