2 つの版のどこが変わったのかを正確に見る。
2 つのテキスト、あるいは同じファイルの 2 つの版を比較して、何が変わったのかを正確に確認できます。桁のそろった 2 列表示、各行の中で書き換わった語だけを強調、そしてそのまま適用できる統一形式のパッチ。
まだ比較していません
左右にそれぞれの版を入れて「比較」を押してください。すべてこのタブの中で完結し、送信は一切ありません。
使い方
2 つの版を用意する
貼り付ける、ファイルを 2 つドロップする、あるいは別のツールから受け取る。送信は一切なく、この時点ではまだ何も比較していません。
何を「変更」とみなすか決める
行・単語・文字のどれで比べるか、字下げや大文字小文字、空行を無視するか。決めてから「比較」を押します。重い処理は頼まれたときにしか動きません。
結果を読む
桁のそろった 2 列に書き換わった語が浮かび上がり、手つかずの塊は畳まれ、次の変更へはキー 1 つで飛べます。
持ち出す
git apply が受け付ける統一形式のパッチ、単体で開ける HTML レポート、あるいは見直したテキストをそのまま次のツールへ。
マイヤーズ法を線形メモリで
分割統治で改良した古典的な O(ND) アルゴリズムです。2 つのファイルがどれだけ離れていてもメモリは横ばいで、5,000 行の比較はおよそ 7 ミリ秒。素朴な LCS 行列では 590 ミリ秒と 200 MB かかります。
単語単位の強調
書き換わった行はもう一度、単語ごとに比較されます。光るのは実際に動いた数文字だけで、真っ赤な塊と真っ緑の塊が向かい合うことにはなりません。
字下げは無視できる
ファイルを字下げし直すと、文字どおりの比較では全行が「別物」になります。行末の空白、すべての空白、大文字小文字、空行を無視すれば、本当の変更だけが残ります。
手つかずの塊は畳まれる
4,000 行のファイルの 1 か所を直したからといって、4,000 行を目で追う必要はありません。前後 1 行・3 行・8 行を残し、畳まれた塊はクリックで開けます。
対応づけは自分で固定できる
移動した 2 つの塊が誤って対応づいたときは、左右の行番号をクリックして結びつけます。以後はピンを境に別々に解かれるので、1 か所の修正が他を乱すことはありません。
構文の色はそのまま
22 種類の文法を、そのファイルに必要になったときだけ読み込みます。文字列の中で変わった語は文字列の色を保ったまま変更の背景も得るので、一方が他方を消してしまうことがありません。
本当に適用できるパッチ
塊のヘッダーまで正しい統一形式の差分なので、git apply や patch がそのまま受け付けます。外部フォントもスクリプトも要らない単体の HTML レポートも書き出せます。
大きなファイルでも使える
大きな比較はウェブワーカーへ移してエディターの反応を保ち、画面に出ている行だけを組み立て、取り消し履歴は文書の複製ではなく変わった文字だけを保持します。
2 つの版のどこが変わったのかを正確に見る。
差分を取りたいものは、たいてい人に渡せないものです。資格情報の入った設定ファイル、署名前の契約書、医療データの書き出し、競合の見積書。DiffSnap は計算をこのタブの中で行うので、どちらの文書も開いた端末から出ません。
マイヤーズ法を、あなたの端末で
比較にはマイヤーズの O(ND) 差分アルゴリズムを線形メモリ版で用い、素の JavaScript としてあなたの端末上で動かしています。アップロードの段階も、サーバーも、テキストを運ぶ通信もありません。ページを読み込んだあと回線を切っても、そのまま使えます。
現実に比較されるファイルのために作った差分ツール。
公開前に同僚が設定のどこを触ったのか確かめる、契約書の 2 つの草案の間で移動した条項を見つける、翻訳が元の文書と対応していることを示す、git のない端末でパッチを読む、2 つの書き出しのどちらが最新かを決着させる。
差分を取る価値のある文書は、たいてい公開されたものではありません。鍵の入った環境ファイル、秘密保持契約下の合意書、顧客情報を含む書き出し。それを外部の比較サービスに貼れば、2 つの版をまるごと他人のサーバーに渡すことになります。ここではタブの外に出ないので、記録も、キャッシュも、漏れようもありません。
よくある質問
Qどのくらいの大きさのファイルまで比較できますか?+
32 MB までのファイルが開けます。512 KB を超えるものは、黙ってエディターに流し込まずクリック待ちにします。おおよそ 12 万文字を超えると比較はウェブワーカーへ移り、ページの反応を保ちます。共通部分がほとんどない 2 つのファイルは処理量の上限に達し、全面的な書き直しとして扱われます。そのことは画面に明示し、取り繕うことはしません。
Qファイルはサーバーへ送られますか?+
いいえ。アップロードもサーバーもありません。比較も色分けも書き出しも、すべてブラウザーのタブの中で動きます。ページを読み込んだあとに通信を切っても使い続けられます。
Q字下げを直しただけなのに、なぜ全部変わったと出るのですか?+
初期状態では空白やタブを含めて 1 文字ずつ区別するためです。空白の項目を「すべての空白を無視」に変えれば、本当の変更だけが残ります。大文字小文字や空行にも同じような項目があります。
Q構文の色分けはできますか?+
はい。22 種類の文法を、拡張子やテキストの見た目から判別し、必要になったときだけ読み込みます。構文の色と変更語の強調は同時に描かれるので、どちらかがもう一方を覆い隠すことはありません。
Q結果を書き出せますか?+
はい。git apply や patch が受け付ける、塊のヘッダーまで正しい統一形式の .patch。外部から読み込むものが一切ない単体の HTML レポート。コミットメッセージやチケットに貼れるテキストの要約。そして見直したテキスト単体。
Q2 つの版の対応がずれました。直せますか?+
はい。片側の行番号をクリックし、続けてもう一方の対応する行をクリックすると、その組が固定されます。ピンの前後はそれぞれ独立して比較されるので、1 か所の修正がファイルの残りをずらすことはありません。