テキスト比較
2 つのバージョンの間で何が変わったかを、ひと目で。
- すべて無料登録なし、回数制限なし、有料プランなし。
- アップロードなしファイルは自分の端末で処理され、サーバーには届きません。
- 結果に条件なし透かしなし、勝手な縮小なし、サイズ上限なし。
- 変更はすべて公開修正も新しい工具も、すべて更新履歴ページに書いています。
このツールでできること
左右にそれぞれのバージョンを貼り付けるか(どちらをどちらに置くかは自由です)、どちらかの枠にファイルをドロップすると、差分が枠と同じ場所に表示されます。削除された行は左側に赤、追加された行は右側に緑で示され、変更された行の中では異なる単語そのものに印が付きます。行単位の比較は git と同じ考え方です。両側に一度しか現れない行を基準点にし、その間を Myers のアルゴリズムで埋めるので、数か所だけ変わった 10 万行のログでも、お使いの端末上でコンマ数秒で比較が終わります。
表示は 2 種類、精度は 3 段階。「左右」は 2 つのバージョンをそれぞれの行番号付きで 2 列に並べ、「統合」は git やコードレビューツールが使う 1 列形式で、− と + を行頭に付けます。精度は変更行の強調のしかたを決めます。「行」は行全体、「単語」は異なる単語(既定)、「文字」は 1 文字単位——ハッシュや識別子、数値の比較に向いています。ブラウザの外には何も出ません。アップロードも保存リンクもアカウントも不要です。
使い方
2 つの枠に入力または貼り付けるか、どちらかの側の「ファイルを選択」を押します。ファイル名はその側のヘッダーに表示され、diff のヘッダーにも使われるので、どちらにどのファイルを入れたか覚えておく必要はありません。結果は 2 つの枠と入れ替わって表示され、「編集」で枠に戻ります。結果の行をダブルクリックすると、その行を直接編集できます。「入れ替え」は左右を交換し、「サンプルを読み込む」は短い設定ファイルを両側に入れて、結果がどう見えるかを先に確かめられます。枠の下の行がスイッチです。「大文字小文字を無視」は A と a を同じとみなし、「空白を無視」は連続する空白やタブを 1 つにまとめて行頭行末の空白を無視します(整形し直したコードに向いています)。「変更のみ」は同じ行の連続を前後 3 行ずつに折りたたみ、中間のバーをクリックすると展開できます。
結果の上の行には、追加・削除された行数と変更ブロックの数が出ます。‹ › でブロック間を移動でき、結果にフォーカスがあるときは n と p キーでも同じ操作ができます。移動先のブロックは行番号欄に黄色の印が付きます。「diff をコピー」は標準の unified diff をクリップボードに入れ、「.diff をダウンロード」は同じ内容をファイルとして保存します。git apply や patch がそのまま読める形式です。両側の合計が 2 MB を超えると、入力のたびに計算する代わりに「比較」ボタンに切り替わります。
比較できるファイル
中身がテキストであれば何でも比較できます。文書やメモ:.txt、.md、プレーンテキストとしての .rtf、.srt / .vtt の字幕ファイル。データの書き出し:2 つの JSON ファイル、CSV や TSV、XML、YAML——2 回の API 応答や 2 つのデータベースダンプの違いを見るのに最適です。設定ファイル:.ini、.toml、.env、.properties、.conf、Dockerfile、nginx や Apache の設定。デプロイを壊した項目がすぐに見つかります。あらゆる言語のソースコード:.js、.ts、.py、.go、.java、.c、.cpp、.rs、.php、.sql、.sh、それに .html と .css。パッチとログ:.diff、.patch、.log。Word、PDF、Excel はテキストファイルではなく、内容がバイナリの容器に入っているため、ここでは文字化けを表示する代わりに受け付けません。先にプレーンテキストや CSV に書き出してください。
知っておきたいこと
diff は事実ではなく選択です。ある行のまとまりは「移動した」とも「削除して追加し直した」とも説明でき、どのアルゴリズムも一方の読み方を選びます。同じ変更でもツールによって見え方が違うのはそのためです。このツールは一度しか現れない行を揃える読み方を優先し、git の結果に近づけています。「空白を無視」は比較時に空白をまとめますが、結果には元の空白がそのまま表示されます。1 行が極端に長い場合——圧縮された JavaScript や 1 行の JSON 出力——4,000 文字を超える行は行全体として比較します。200 KB の行を単語ごとに比べても読める結果にはならないからです。結果の表は最大 8,000 行まで表示し、それ以上は「変更のみ」を使うか .diff をダウンロードしてください。.diff は常に完全です。ファイルは読み込む前に確認され、バイナリを含むものや 20 MB を超えるものは、文字化けを表示する代わりにメッセージで断られます。
背景:diff の由来
diff プログラムは 1974 年に Unix とともに登場しました。作者は Douglas McIlroy と James Hunt で、< と > を行頭に付けるその出力形式は、今も diff コマンドの既定の表示です。− と + の接頭辞と @@ のハンクヘッダーを持つ unified 形式は 1990 年に Wayne Davison が提案し、GNU diff に採用されてパッチの共通言語になりました。git show、GitHub のプルリクエスト、あらゆるコードレビューツールが表示しているのがこれです。Eugene Myers は 1986 年に O(ND) 差分アルゴリズムを発表しました。最短の編集手順を求めるもので、GNU diff、git、多くのエディタの中核です。Bram Cohen は 2004 年ごろに patience 方式——両側に一度しか現れない行を基準点にしてから間を比べる——を示しました。実際のコードで人が読みやすい結果を出すためです。このツールは patience の基準点と、その間の Myers を組み合わせ、コピーとダウンロードには unified 形式を書き出します。
活用場面
承認前に、同僚が契約書や規程のどこを変えたかを確認する。2 回書き出した設定を比べて、デプロイを壊した項目を見つける。正常時と失敗時の 2 つのログを突き合わせる。生成されたファイルを前回のものと照合する。翻訳が原文の行を落としていないか検証する。差分ではなく量を知りたいときは文字数カウントが単語数・文字数・読了時間を出し、簡体字と繁体字の違いだけのテキストは簡体字・繁体字変換で揃えてから比較できます。ここでダウンロードした .diff は、どの環境でも git apply や patch で適用できます。
よくある質問
テキストはどこかにアップロードされますか?
いいえ。比較はブラウザ内で行われ、送信も保存もリンクの生成もありません。タブを閉じれば消えます。
「空白を無視」は具体的に何をしますか?
比較時に連続する空白とタブを 1 つの空白とみなし、行頭と行末の空白を取り除きます。結果には元の空白がそのまま表示されます。インデントだけの変更は差分に現れなくなります。
貼り付けではなく 2 つのファイルを比較できますか?
できます。両側の「ファイルを選択」を押すか、枠にファイルをドロップしてください。.txt、.md、.json、.csv、.log、ソースコードなど、テキストファイルなら何でも使えます。バイナリファイルと 20 MB を超えるファイルは受け付けません。
どの種類のファイルを比較できますか?
テキストファイルなら何でも:.txt、.md、.json、.csv、.xml、.yaml、.ini、.env、.log、.diff、そしてあらゆる言語のソースコード。Word、PDF、Excel はバイナリの容器なので受け付けません。先にプレーンテキストや CSV に書き出してください。
ダウンロードできる .diff とは何ですか?
git や patch が使う標準の unified diff です。元のファイルに対して git apply changes.diff を実行すると、変更後のバージョンが得られます。
「文字」に切り替えると強調が変わるのはなぜですか?
「単語」精度は単語全体に印を付け、「文字」精度は異なる文字だけに印を付けます。識別子やハッシュの変更では文字表示のほうが的確で、文章では単語表示のほうが読みやすくなります。