テキストや文書の比較

ほとんどのツールは上から順に読むため、場所を移した文章が削除として表示されます。このツールはブロックを識別し続けるので、書き換えではなく移動として報告します。

例を試す:

比較の仕組み。

01

言語の判定

まずキーワードを高速に走査して候補を絞り、残った候補で試しに解析して、エラーがもっとも少ない文法を採用します。判定はいつでも手動で上書きできます。

02

行番号ではなく構造の比較

コードは構文木に解析し、それ以外は段落ブロック、段落がなければ行に分割します。構文の単位はそれぞれ2回ハッシュ化します — 1回はそのまま、もう1回はローカル変数名をならした形で。そのため名前を変えても同じロジックとして一致します。

03

実際に移動したものの特定

一致した単位を並べ、順序が保たれたもっとも長い連なりを探します。その連なりに含まれるものは元の位置のまま、外れたものが移動したものです。これが、移動と「削除して追加」を分ける判断です。

5つの分類

どの分類も色だけでなくアイコンと行頭のマーカーを持つため、赤と緑の違いに頼らなくても結果を読み取れます。

  • 変更なし両方にあり、位置も同じです。
  • 追加変更後のテキストにだけあります。
  • 削除元のテキストにだけあります。
  • 移動内容は同じで、位置が違います。
  • 変更あり対応づけたうえで編集されています。類似度を表示します。

スマート比較

移動先がどこであってもブロックを対応づけます。ファイルを並べ替えただけなら類似度はほぼ100%になります。実際には何も失われていないからです。

厳密比較

上から順に見ていく従来型の比較で、変更のある行の中は単語単位でハイライトします。位置そのものが重要なときに使ってください。

専用の比較ツール

特定のファイル形式やプライバシー要件に合わせて最適化された差分比較ツール。

テキストを比較して違いを見つける。

テキスト比較ツールでできること

テキスト比較ツールは、同じ内容の2つのバージョンを受け取り、何が変わったのかを正確に示します。左のパネルに元の文章、右に修正後の文章を貼り付けると、両者のすべての違いに印が付きます。追加されたもの、削除されたもの、その場で書き換えられたもの、そして — これは珍しいのですが — 単に別の場所へ移ったものです。

この最後の分類こそ、多くのオンライン比較ツールが苦手とするところです。従来の比較は2つの文書を厳密に上から下へ読むため、場所を移した段落は2回報告されます。元あった位置では削除として、移った先では無関係な追加として。実際には何も失われていないのに結果はそう言わないので、内容が保たれていると気づくまで赤と緑の壁を読むことになります。

2つのテキストを比較して違いを見つける手順

両方のパネルにテキストを入れるだけで比較が動きます。探すべき比較ボタンはなく、先に設定するものもありません。結果は左右に並び、一致する内容が同じ行に来るように配置され、変更のある行にはすべて行頭のマーカーとアイコンが付き、2つのバージョンが全体としてどれだけ近いかを類似度が示します。

置き換えではなく編集された行の中では、違う単語だけがハイライトされます。そのため設定ファイルの長い行にある数字が1つ変わっただけでも、「変更あり」と印の付いた行に埋もれることなくすぐ目に入ります。左右を貼り間違えたときは入れ替えられますし、出力の読み方を確かめるために用意された2つの例を読み込むこともでき、貼り付ける代わりにファイルをパネルへ直接ドラッグすることもできます。

大文字と小文字を区別する比較と、区別しない比較

初期状態では大文字と小文字の違いを数えます。Valueとvalueは、コードでも環境変数でも、名前が正確に一致しなければならない場面では別のものです。自分の目に見える違いは、比較でも報告されるべきです。重要でないときは大文字と小文字を区別をオフにしてください。同じ文章の2つの下書きを比べるとき、折り返しの調整で文頭が大文字に変わっただけの箇所は報告する価値のある変更ではなく、隠すことで本当に意味のある編集が前に出ます。この設定は両方の比較エンジンに効き、すぐに反映されます。

比較の精度を支えているもの

ここでの精度とは、行を数える機械のようにではなく、人が読むように内容を対応づけることです。対応している言語のコードは構文木に解析し、それ以外は空行で区切られたブロックに分割するので、比較される単位は任意の行ではなく意味のあるまとまりになります。構文の単位は2回ずつ指紋を取ります — 1回は書かれたまま、もう1回はローカル変数名をならした形で。だから引数の名前を変えた関数は、書き換えではなく移動として報告されます。

「違いとは何か」への誠実な答えが2つあるため、エンジンも2つ用意しています。スマートは移動先がどこであってもブロックを対応づけるので、ファイルを並べ替えただけならほぼ同一という結果になります。厳密は上から順に見ていく従来型の比較で、位置そのものを確かめたいときのためのものです。どちらも共通の類似度の式を使うため、スコアをそのまま比べられます。

2つの文書そのものを比較する場合

比べたい2つのものは、選択できるテキストではなくファイルであることも多いはずです。Wordの.docxやPDFをパネルに直接ドロップするか、パネルの「ファイルを開く」を使えば、ブラウザー内でテキストが取り出されてその場に読み込まれます。アップロードは行いません。2つの文書が契約書や規程、診療記録であるときに効いてくるのはこの点です。2つのファイルは名前も拡張子も揃っている必要はなく、.docxとPDF、あるいはそのどちらかと貼り付けたテキストを比べることもできます。

書式は意図的に捨てています。文書の中の変更を追う比較 — Word自身の「比較」機能やGoogleドキュメントの変更履歴 — は、見出しの体裁が変わったことや表の列が増えたことを確かめたいときに向いた道具です。ここで得られるのは、文言の変更を1つの画面にまとめたもので、行単位ではなく段落ブロックとして比較されます。そのため折り返しが変わった段落は書き換えとして読まれず、場所を移した節は移動として報告されます。唯一どうにもならないのはスキャンしたPDFです。スキャンは文字の画像であって、読み取れるテキストの層がありません。

無料、非公開、インストール不要

このツールは無料で、アカウントも登録も不要、比較できる回数に上限もありません。比較はサーバーではなく、お使いのブラウザーの中のWeb Workerで動くため、テキストが手元の端末から出ることはありません。比べているものが契約書や診療記録、社内の設定ファイルであるときに重要なのはこの点です。インストールするデスクトップ用の比較ソフトもなく、更新を管理する必要もありません。

プレーンテキストや文章、Markdown、各種の設定ファイル形式を扱え、JavaScript、TypeScript、TSX、Python、JSON、CSS、HTMLは構文まで解析します。非常に大きな入力はハングするのではなく段階的に機能を落とし、解析の一部を省いたときはステータス行が必ずそう伝えるので、削られた結果が完全なものに見えることはありません。

テキスト・ファイル比較の主な活用例

テキストの比較は、用途によって求められる目的が異なります。開発者やDevOpsエンジニアは、Gitのコミットを作成することなく、ソースコードの差分、APIレスポンス、JSON構造、SQLスクリプト、設定ファイルをすばやく確認するために活用します。ライターや翻訳者、編集者は、記事の下書き、論文、翻訳テキストを比較し、推敲による変更点や言い回しの違いを正確に追跡します。

法務やコンプライアンスの担当者は、契約書、秘密保持契約(NDA)、利用規約などの文書を比較し、条項の削除や日付の変更、義務の追加といった重大な差異を見落とさないように確認します。また、データアナリストや運用チームは、エクスポートしたCSVリスト、スプレッドシート、サーバーログを比較して、不足しているレコードや変更された値を即座に特定します。

左右並列の視覚的差分と類似度スコア

1つの画面に変更履歴が連続して出力されるコマンドラインのdiffツールとは異なり、左右並列(サイドバイサイド)表示では元のテキストと修正後のテキストが同期した2列で表示されます。一致する行は水平に揃えて配置され、追加・削除・移動・変更がわかりやすいマーカーと色分けで視覚的に強調されます。

行の一部が編集された場合は、行内の単語単位で変更された文字や単語がハイライトされるため、長い行全体を目視で探す必要がありません。さらに、全体の類似度をパーセンテージで算出するスコア機能により、わずかな修正なのか全面的な書き直しなのかを一目で判断できます。

よくある質問。

2つのテキストを比較するにはどうすればいいですか?

左のパネルに元の文章を、右に変更後の文章を貼り付けてください。比較は入力しながら実行されるので、押すべき比較ボタンはありません。2つのテキストは左右に並び、一致する内容が同じ行に揃います。追加、削除、編集、移動したブロックにはそれぞれ別の印が付き、結果の上に表示される類似度が、2つのバージョンが全体としてどれだけ近いかを示します。

2つのテキストファイルを比較する方法を教えてください

ファイルをそれぞれのパネルにドラッグするか、パネルの「ファイルを開く」を使うと、その場に内容が読み込まれます。自分でファイルを開いて貼り付けても構いません。アップロードは行いません。ファイルはブラウザー内で読み取られるため、ここで2つのファイルを比較してもどこにも送信されません。拡張子を問わず、あらゆるテキストファイルを扱えます。.txt や Markdown、.cpp、.c、.h、.java、.py、.go、.rs、.sql、.sh などの各種ソースコード、JSON、YAML、CSV、設定ファイルなどです。Word の .docx と PDF も扱え、ドロップした時点でブラウザー内からテキストを取り出します。2つのファイルは名前も拡張子も一致している必要はありません。唯一どうにもならないのはスキャンした PDF です。スキャンは文字の画像であって、読み取れるテキストの層がないからです。

2つの文書を並べて比較できますか?

それぞれのパネルに1つずつ入れると、結果は左右2列に揃えて表示されます。対応する内容が同じ行に来るので、2つのウィンドウを行き来せずに横方向で違いを読めます。ブロックが別の場所へ移っている場合は、元の位置と新しい位置をコネクターが結びます。置き換えではなく編集された行の中では、変わった単語だけがハイライトされます。

このテキスト比較ツールは無料ですか?

はい。完全に無料で、登録もアカウントも不要、比較できる回数に上限もありません。機能を出し惜しみする有料プランもありません。無料の選択肢は他にもあります。ブラウザーで使えるものとしては Diffchecker、デスクトップアプリなら Meld や WinMerge、すでにターミナルで作業しているなら git diff や diff コマンドです。ツールによってもっとも差が出るのは、場所を移した内容を認識できるかどうかです。単純に上から順に比較する方式では、移動した段落は削除と無関係な追加の2つとして報告されます。

文書を比較するツールはありますか?

いくつもありますが、どれが適しているかは何を知りたいかによります。Word の「比較」機能や Google ドキュメントの変更履歴は、書式を保ったまま文書の中の変更を追うので、見出しの体裁が変わったことや表の列が増えたことを確かめたいときに向いています。このツールは別の方向を取ります。.docx や PDF をパネルにドロップするとブラウザー内でテキストが取り出され、段落ブロック単位で比較されます。書式は捨てられますが、その代わりに、書き換えではなく場所を移しただけの箇所も含めて、文言の変更がすべて1つの画面に収まります。

ファイル比較にもっとも適したツールは何ですか?

唯一の正解はなく、何を比較するかによります。バージョン管理と連携させてコードをマージするなら、Beyond Compare、Meld、WinMerge が定番です。インストールせずに手早く左右で確認したいなら、ブラウザーで動くツールのほうが速いです。どれを使うにしても確かめておく価値があるのは、並べ替えられた内容の扱いです。順番どおりに比較する方式では、移動したブロックが無関係な2つの変更として報告され、内容がすべて残っている文書でも類似度がほぼ0になります。

ファイル比較とは何ですか?

ファイル比較とは、2つのファイルを調べて、その内容がどこで異なるのかを正確に突き止める作業です。比較ツールは一致する部分を対応づけ、残りを追加・削除・変更として報告し、多くの場合は2つのファイルがどれだけ似ているかもまとめて示します。「同じかどうか」よりも踏み込んだ問いに答えるもので、何がどこで変わったのかを正確に伝えます。編集内容をレビューするときや、何かが壊れた原因を追うときに必要になるのはそちらです。

テキスト比較とは何ですか?

テキスト比較とは、2つのテキストを並べて分析し、どこが一致してどこが異なるのかを正確に突き止める作業です。単に2つの文章が同じかどうかを確認するだけでなく、比較ツールは対応する箇所を揃えて追加、削除、変更された単語、移動したブロックを強調表示するため、下書きや文書、コードの変更点を簡単に確認できます。

日本語のテキストも比較できますか?

できます。ただし、日本語は単語の間に空白を置かないため、比較の単位が英語とは違います。変更のある行の中では、単語ではなく1文字ずつを単位としてハイライトするので、「食べる」を「食べた」に直した箇所は行全体ではなく変わった1文字だけが目立ちます。行や段落の対応づけは他の言語と同じで、場所を移した段落は削除と追加ではなく移動として報告されます。文章の場合、比較の単位は1行ではなく段落ブロックなので、言い換えた一文は段落全体の書き換えではなく、変わった箇所がハイライトされた1つの編集として扱われます。

2つのものを比較するのに良い方法は何ですか?

並べて置き、対応する部分を揃え、そしてどの違いが自分にとって本当に重要なのかを先に決めておくことです。そうしなければ、些細な違いが重要な違いと同じだけ注意を奪います。1つの文章の2つのバージョンであれば、それを自動化するのがまさに差分ツールです。一致する内容を揃えたうえで、本当に異なる箇所だけに印を付けるので、2つの文書を丸ごと読むのではなく短い変更の一覧を読むことになります。

貼り付けたテキストはアップロードされますか?

いいえ。解析と比較はお使いのブラウザーの Web Worker 内で実行され、テキストを受け取る送信先はここにはありません。ページが実際に行う通信は、ページ自体の取得、ある言語を初めて比較するときの文法ファイル、訪問数を数える Google Analytics、そしてホスティング費用をまかなう Google AdSense です。いずれにも比較したテキストが渡ることはありません。そもそもテキストがどこにも送信されないからです。

大文字と小文字を区別せずに比較できますか?

できます。「大文字と小文字を区別」をオフにすると大文字と小文字の違いは無視されるので、文頭が大文字に変わっただけの文は変更として扱われません。初期状態でオンになっているのは、コードでも、名前が正確に一致しなければならない場面でも、Value と value が実際に別のものだからです。この設定はスマートと厳密の両方のエンジンに効きます。なお、この設定で行われるのは大文字と小文字の変換だけで、濁点や記号を無視する処理は行いません。

どの言語が構造的な比較の対象になりますか?

JavaScript、TypeScript、TSX、Python、JSON、CSS、HTML は構文木に解析されます。それ以外 — Markdown、通常の文章、その他の言語のコード — は空行で区切られたブロック単位で、空行がなければ行単位で比較されます。その場合も並べ替えは検出できますが、構文を理解した比較にはなりません。場所を移したブロックは移動として報告されるものの、その中で識別子の名前が変わったことは名前変更として認識されません。

類似度はどのように計算されますか?

一致した内容はそのまま数え、編集された内容はどれだけ似ているかに応じて数え、追加または削除された内容は0として数えます。そのすべてを大きさで重み付けするので、50行の関数が移動したことは1行の移動より重く扱われます。両方のエンジンがこの1つの式を使っています。だからこそ同じ文書がスマートでは高く、厳密では低く出ることがあります。1つの尺度を、2つの異なる「一致」の考え方に当てているからです。

このサイトについて。

比較の仕組みと作っている人、連絡の取り方、そして貼り付けたテキストがどう扱われるのか。