このページのコードが起動しませんでした。

index.htmlをフォルダから直接開くと、ブラウザがJavaScriptモジュールを読み込めません。そのためファイルを選んでも何も起きません。フォルダはhttpで配信してください。

powershell -ExecutionPolicy Bypass -File serve.ps1

そのうえでhttp://localhost:8080/を開いてください。

テキスト差分 — 2つのテキストを並べて比較

2つのテキストを入れると、すべての違いが行単位・単語単位で印付きで出てきます。よそのサーバーに貼り付けるものは何もありません。

言語: 日本語
ソースを見る
テキストはブラウザー内で処理されます。処理のためのアップロードはありません。

比較は2つの文字列に対する計算で、このページの中で行われます。アルゴリズムはMyersのもの、つまりgit diffが使っているのと同じもので、src/diff.jsに手書きされていて、読むことができます。この道具にはどんなネットワーク機能もありません。取りに行く先も、送る先もありません。ここではそれが効いてきます。人が比較するものは契約書、設定ファイル、未公開のコードで、しかも必ず2つ一組だからです。

いまの通信: 確認中…

オフライン: 確認中…

鵜呑みにする必要はありません。DevToolsの「ネットワーク」タブを開いたまま何かを比較してみてください。貼り付けた内容の1文字も、どのリクエストにも載りません。回線を抜いてから比較してみるのでも構いません。

1 2つのテキストを貼り付ける

空
空

2 読み方を選ぶ

空行を無視する この設定は表示だけを変えます。コピーとダウンロードにはすべての違いが含まれます。

3 何が変わったかを読む

まだ何もありません。

Markdownで表示

2つのテキストをアップロードせずに比較する手順

  1. 2つのテキストを貼り付けるか、ファイルを2つドロップします。元のものは左、変わったほうは右。選択欄に同時に落とした2つのファイルは、落とした順で左右に入ります。逆だったら、左右を入れ替えてください。
  2. 読み方を選びます。左右に並べるか、1列か。スマートフォンは1列で始まります。並べて見るにはテキストの列が2本要りますが、スマートフォンにはだいたい1本分の幅しかないからです。どちらにしてもメニューはすぐそこにあります。
  3. どうでもいい違いは無視します。空白、大文字と小文字、空行。それぞれ別々に無視できるので、整形し直しただけのファイルが100個の変更のようには読めなくなります。既定では、変わっていない真ん中は数に畳まれ、各変更の前後3行だけが残ります。
  4. 何が変わったかを読みます。削られた行は左側に、増えた行は右側に印が付き、変わった行の中では違う単語が強調されます。2つの段落の差分は、段落2つの丸ごとではなく、動いた単語を見せてくれます。
  5. パッチを持ち帰ります。ダウンロードはunified形式の.patchで、コードレビューもgit applyもあらゆる差分ビューアーも、期待しているのはこれです。コピーも同じものをクリップボードに入れます。

詳しい解説

2つのJSONファイルを比較する方法 両方のファイルを同じように整形し、キーを並べ替えてから比較します。生のJSON差分がほとんどノイズである理由、ブラウザで両側を正規形にする方法、そしてパッチまで生き残るもの。

よくある質問

テキストはどこかにアップロードされますか?

いいえ。比較は、お使いのブラウザの中で、お手元のハードウェアで動く関数です。この道具にはどんなネットワーク機能もありません。何かを取りに行くことも、送ることもありません。ページのContent-Security-Policyには接続してよいアドレスがすべて書かれていて、そのどれもこのサイトのものではありません。契約書や設定ファイル、未公開のコードをここで扱う理由はそれです。そういうものを他人の差分ツールに貼り付けるのは、両方の版を一度に渡すのと同じことだからです。

比較は実際に何をしていますか?

左のテキストを右のテキストに変える、いちばん短い編集の組み合わせを見つけます。Myersのアルゴリズムで、git diffが使っているのと同じものです。いちばん短いことこそが差分を読みやすくします。途中に1行足したのなら、1件の挿入として出るべきで、それ以降の全行が変わったように見えてはいけません。変わった行の中では、違っている語にも印が付きます。段落を2つ比べたときに、段落まるごと2つではなく、動いた語が見えるのはそのためです。

貼り付けではなく、ファイル2つを比較できますか?

できます。2つとも同時に選択欄に落とせば、落とした順で左右に入ります。読むのはお使いのブラウザで、行き先はこのページだけです。順番を間違えたら、左右を入れ替えてください。

比較からは何が出てきますか。適用もできますか?

ダウンロードされるのはunified diff、つまり@@ -3,5 +3,5 @@の形式で、git applyもpatchも、どのコードレビュー用の道具も読めます。コピーも同じものをクリップボードへ入れます。画面に出ているのはその表示で、左右に並べるか1列にするかを選べ、変わっていない部分は件数にまとめてたたまれます。すべて見たいときはそう指定してください。

空白や大文字小文字、空行を無視できますか?

できます。それぞれ別々にです。空白を無視すれば、整形し直しただけのファイルは変更なしとして比較されます。大文字小文字を無視すれば、Errorとerrorは同じ単語として扱われます。空行を無視すれば、何も載っていない行は飛ばされます。そのとき結果の上のカウンターは、「無視するよう頼んだ違いを無視すれば2つは同じ」と言います。これは「同一」とは別の主張で、このページは2つの主張を混ぜません。

どれくらい大きい比較まで扱えますか?

ここに上限は設けていません。その費用を払うサーバーが存在しないからです。2万行のテキスト2つに変更がひと握りなら、一瞬で比較が終わります。本当の仕事が始まる前に、共通の先頭と末尾を切り落とすからです。共通点がまったくない2つのテキストの比較は、当たり前のことを証明するのに1分かける代わりに、早めに打ち切ってその旨を伝えます。とても長い比較は、はじめの数千行を描き、残りはダウンロードしたパッチに任せます。

無料ですか。アカウントは必要ですか?

無料です。アカウントも、ログインも、試用期間もなく、貼り付けられる量にも制限はありません。このサイトには広告があり、それが費用を賄っています。広告にテキストの情報が渡されることはありません。

オフラインでも動きますか?

動きます。ページを一度読み込んでから通信を切っても、そのまま使えます。何もアップロードされていないことを示す、いちばん簡単な方法でもあります。比較のためにテキストをどこかへ送っている道具なら、線を抜いた瞬間に止まるからです。