コンテンツへスキップ

2つのテキストを比較

2つのバージョンを貼り付けるだけで、何が変わったかを単語単位まで左右に並べて正確に表示。gitと同じアルゴリズムを使っており、1行追加しただけで破綻する行ごとの推測とは違います。

  • 保存しません
  • 順番待ちなし
  • 登録不要・透かしなし
表示

使い方

1

2つのバージョンを貼り付け

元のテキストを左に、新しいテキストを右に。2つのファイルをドロップすることもできます。

2

違いを確認

追加、削除、変更された行に印が付き、変更された行の中では、変わった単語そのものがハイライトされます。

3

関係ない違いは無視

大文字・小文字、空白、空行はそれぞれ無視できます。2つのテキストが一致する理由がそれだけの場合は、ページがその旨を表示します。

何を同じ行とみなすか

比較は、行そのものではなくキーに対して行われます。各行は、オンになっている無視のオプションに従ってキーに変換され、差分はキーどうしで計算されます。そして表示されるのは常に元のテキストです。 そのため「大文字・小文字を区別しない」をオンにすると、どの行が一致するかは変わりますが、表示される内容は1文字も変わりません。空白に関するオプションは2つあり、その違いはラベルから想像するより大きなものです。一方は行の両端を削るだけで、もう一方はまず連続するスペースやタブを1つのスペースにまとめてから両端を削ります。どちらも空白を完全に取り除くわけではありません。また、まとめる対象は文字どおりのスペースとタブだけなので、行の途中にある全角スペースやノーブレークスペースはそのまま残り、違いとして扱われます。

空行を無視するオプションには、誰も触れない副作用があります。空行は比較を始める前に取り除かれるため、結果の横に表示される行番号は残った行だけを数えたものになり、ファイル上の行番号と一致しなくなります。オプションがオフなら完全に一致します。変更された行の中での単語単位のハイライトは、大文字・小文字を区別しない設定にだけ従い、それ以外には影響されません。空白のオプションはここには及ばないため、別の理由で変更された行の中にある空白の違いは、変更として色付けされます。

コピーできる結果は、読むうえで重要な点ではすべてunified diffそのものです。2つのファイルヘッダー、マイナス行、プラス行、各変更の前後3行のコンテキストが含まれます。ただし、頼る前に知っておきたい例外が1つあります。ハンクのマーカーに行範囲が含まれていないため、バグ報告、コードレビューのコメント、メール向けであり、patchコマンドやgit applyコマンドでは受け付けられません。読むためではなく適用するためのものが必要なら、gitで作成してください。

ほかの目的には

構造化された形式は行単位ではうまく比較できず、その失敗は目立たないどころか一目瞭然です。キーの順番が違うだけの2つのJSON文書や、列が1つ移動しただけの2つのCSVは、何も分からない変更の山として返ってきます。そうしたものは構造を理解するツールで比較しましょう。先に両方のJSONファイルのキーを並べ替えてから結果を比べるか、daffを使ってください。daffはCSVを行と列として比較し、すべての行が変わったではなく、列が移動したと教えてくれます。

2つのディレクトリや、リポジトリの履歴上の2つの時点を比べるのは、このページではなくgitの役目です。また、段落の改行位置が変わった文章では、行単位の表示はそもそも粒度が合っていません。git diff --word-diffなら改行の位置を無視して、移動した単語だけを表示します。文書が再整形されたときに本当に必要なのは、この比較です。

よくある質問

文書はどこかに保存されますか?

いいえ。何も保存されず、通信も一切発生しないので、ネットワークを切断しても動作し続けます。テキストの場合、これは見た目以上に重要です。オンラインツールに貼り付けられるのは、未発表の原稿、法律文書の下書き、学生の課題、社内文書だからです。契約書や原稿の2つのバージョンを比べるなら、それこそが肝心な点です。

行ごとに比較するより優れているのはなぜですか?

行を順番にたどる方法は、何かが移動した瞬間に破綻するからです。ファイルの先頭に1行加えると、その下のすべての行が別の行位置にずれるため、単純な比較では文書全体が変更されたと報告されてしまい、まったく役に立ちません。このツールは、git diffやdiff(1)の基になっているMyersのアルゴリズムを使い、一方のテキストをもう一方に変える最小限の挿入と削除を見つけます。先頭に1行加えれば、報告されるのは追加された1行だけです。

変わった行だけでなく、変わった単語も表示できますか?

はい。行が追加や削除ではなく編集された場合は、単語単位で改めて比較し、実際に変わった単語だけをハイライトします。長い段落で誰かが3つの単語を変えたなら、表示されるのは色で埋め尽くされた画面ではなく、その3つの単語です。

「無視」のオプションは何をするのですか?

何を同じ行とみなすかを変えます。大文字・小文字、空白、空行を無視できるので、整形し直したコードや貼り付け直したテキストを比べるときに便利です。重要な点が1つあります。2つのテキストが何かを無視している「ときだけ」一致する場合、同一と報告するのではなく、そのことを明示します。「同一」と「大文字・小文字を無視すれば同一」は別の事実であり、この2つを混同すると、変更されていないと思い込んだファイルを出荷してしまうことになります。

結果をパッチとして取得できますか?

はい。比較結果は、gitやメールで送るパッチと同じ形式のunified diffとして、各変更の前後に数行のコンテキストを付けてコピーできます。バグ報告に貼り付けるならこの形式です。

サイズの上限はありますか?

固定のサイズ上限はなく、使用できるメモリ次第です。同一の冒頭部分と末尾部分は本格的な処理の前に照合して省くため、長い文書どうしの比較も高速です。数千か所で別々に異なる2つのテキストは、タブを固まらせるのではなく、説明を添えて処理を断ります。そこまで大きな差分は、どのみち読めるものではありません。

WordやPDFのファイルも比較できますか?

直接はできません。先にテキストに変換してください。[PDFテキスト抽出](pdf-to-text)と[DOCX TXT変換](docx-to-txt)ツールがまさにそのためのツールです。変換結果をここに貼り付けてください。

ご注意: 比較できる差分は8,000件までです。それを超えるとアルゴリズムの処理量が急増してタブが固まるため、止まってしまう前に処理を中止してその旨を表示します。まったく無関係な2つの文書ではすぐにこの上限に達しますが、同じファイルの2つのバージョンを比べる場合にはほぼ達しません。

このツールをあなたのサイトに設置

ブログ、授業のページ、ヘルプ記事などに無料で設置できます。コードを1つ貼り付けるだけで、訪問者がそのページ上でツールを使えるようになります。