テキスト比較ツール
コード、設定ファイル、文章など2つのテキストブロックを並べて貼り付けるだけで、追加・削除・変更なしの箇所を即座に確認できます。比較はすべてブラウザ内で行われるため、貼り付けた内容がアップロードされることはありません。
- ファイルは端末の外に出ません
- 無料、登録不要
- 透かしなし
- 一度読み込めばオフラインでも動作します
テキスト比較ツールの使い方
- 1
両方のバージョンを貼り付け
元のテキストを左側のボックスに、変更後のバージョンを右側のボックスに貼り付けます。
- 2
比較モードを選ぶ
コードや設定ファイルの標準的な挙動である行単位の比較には「行」を、似た行の中でどの単語が変わったかを見るには「単語」に切り替えます。
- 3
ハイライトされた差分を読む
追加された内容は緑、削除された内容は赤でハイライトされ、変更のない部分はそのまま表示されます。共有したい場合は結果をプレーンテキストのdiffとしてコピーできます。
行単位のdiffが「同じ」と何を判定基準にしているか
ハイライト表示の裏側で、diffツールはある特定のマッチング問題を解いています: 2つの行のリストが与えられたとき、両方の文書に同じ相対的な順序で現れる最長の行の並びを見つけるというものです — その共有された並びに含まれるものはすべて変更なしとされ、それ以外はすべて追加または削除としてマークされます。これが「最長共通部分列」というアイデアの背後にある発想であり、Git自身が使っているものを含め、あらゆる汎用diffアルゴリズムはこの考え方の上に成り立っています。これは一見奇妙に見える細部を説明します: 文書の下部にあったテキストの塊を上部に移動すると、単一の「移動した」操作としてではなく、通常は大きな削除と大きな追加として報告されます — アルゴリズムは共有された順序だけを探しているため、移動したブロックはその元の位置と新しい位置の両方でその順序を崩してしまうからです。
これはまた、長い行への1文字だけの編集が、行モードでは行*全体*を変更としてマークする理由も説明します: アルゴリズムは行全体を分割不可能な単位として比較するため、「1文字を除いて同じ行」と「まったく異なる行」はまったく同じように扱われます — どちらも等価性のチェックに失敗し、どちらも1行削除・1行追加としてカウントされます。これがまさに単語モードへの切り替えが役立つ状況です。単語モードは同じ発想を1段階下、行ではなく単語を照合の単位として扱う形で再実行するからです。
行単位より単語単位の比較が役立つのはどんなときか
行モードは、行そのものが単独で意味のある単位であるものにとって正しいデフォルトです — ソースコード、JSONオブジェクト、CSVの行、ログエントリなどです。これらの形式では通常、1行が1つの完結したアイデアを表しており、特定の行が変わったこと自体が、その行の中でどの文字が動いたかとは独立して有用な情報だからです。単語モードは、意味のある単位が行より小さくなった瞬間に役立ちます: 文章の段落、契約書の条項、長い文書の中の一文などで、興味深い変更は通常たった1つの単語やフレーズであり、周囲の文はまったく同じです。そのようなテキストを行単位で比較すると、1単語の編集のために段落全体が「変更」とマークされてしまい、それは技術的には正しくても、もう一度段落全体を自分で読み直すまで実際に何が変わったのか教えてくれません。
実務上の目安: 構造化されたもの、行指向のものにはまず行モードを使い、行モードの結果で赤と緑の大きな塊がほぼ同じに見えるときに単語モードに切り替えます。そのパターンは、実際の違いが小さく、変わっていないテキストの中に埋もれている合図です。
文章の比較を超えた実用的な使い道
マージ前に2つのソースコードのリビジョンを比較するのは教科書的な使い方ですが、同じ手法はコードレビューをはるかに超えて役立ちます: 稼働中のデプロイと壊れたデプロイの間でどの設定が正確に変わったかを調べるために設定ファイルの2つのエクスポートを比較する、期待していた行だけが変更されたかを確認するためにCSVエクスポートの2つのバージョンを確認する、あるいは契約書のドラフトを前のリビジョンと比較して、相手先が変更したすべての条項を、文書全体をもう一度並べて読み直すことなく見つけるなどです。これらすべてのケースにおいてdiffツールの価値は同じです — 「この2つは違うのか、違うならどこが」を、手作業での並べ読みから即座に得られる視覚的な答えに変えることです。
よくある質問
どちらかのテキストはサーバーにアップロードされますか?
いいえ。両方のテキストはJavaScriptを使ってブラウザ内だけで比較され、どの時点でもネットワーク経由で送信されるものはありません。ページを読み込んだ後にインターネットを切断しても比較は動作し続けるので、自分で確かめられます。
正確には何が「違い」としてカウントされますか?
「行」モードでは、2つの行が丸ごと1つの単位として比較されます — ある行の1文字でも変われば、その行全体が元のテキストからの削除、変更後のテキストへの追加として扱われます。「単語」モードでは同じ行が単語単位で比較されるため、変わった単語だけがハイライトされ、それ以外は通常表示のままです。行頭・行末の空白、空行、改行はどちらのモードでも実際のコンテンツとして扱われます — 末尾の空白だけが異なる行も、変更されたとして報告されます。
文章だけでなく、コードやJSON、設定ファイルにも使えますか?
はい — 行ベースのdiffはGitのようなバージョン管理ツールが使っているのとまさに同じ手法であり、ソースコード、JSON、YAML、CSVの行、ログファイルなど、他のあらゆる行指向の形式にも同じように機能します。単語モードは文章や契約書、ドキュメントなどでより役立ちます。そこでは重要な変更が通常、行全体ではなく文の中のフレーズだからです。
大きな文書も扱えますか?
はい。数千行程度までの比較は実質的に瞬時に完了します。差分は1文字入力するたびに低めの描画優先度で再計算されるため、大きな貼り付けを比較している最中でも入力はスムーズなままです。非常に大きい、あるいは大きく異なる文書では比較自体に少し時間がかかることがありますが、ページがフリーズすることはありません。
「+N追加、−M削除」という件数は何を指していますか?
比較全体を通じて追加・削除された行(単語モードでは単語)の合計数です — 結果に表示される緑と赤の行をすべて数えたものと同じ数字になります。変更のない行はカウントされません。
色分け表示ではなくプレーンテキストで差分を取得できますか?
はい。「差分をコピー」ボタンで、各行の先頭に「+」「-」または空白の記号が付いたプレーンテキスト版をコピーできます(Gitやほとんどのコマンドラインdiffツールが使うのと同じ慣習です)。メールやチケット、コードレビューのコメントに貼り付けられます。