テキスト差分チェッカー
ブラウザ内で動作し、何もアップロードされません
テキストの2つのバージョンを行ごとに比較し、変更された単語をハイライトします。
Original
Modified
Differences
Nothing to compare yet
テキストの差分(diff)とは?
差分(diff)は、テキストの2つのバージョンがどう違うかを示します。どの行が削除され、どの行が追加され、どの行が変わっていないかです。git diff やコードレビューツール、多くのエディターの比較機能も同じ考え方に基づいています。
このツールは diff や git と同じく、Myersのアルゴリズムで行を対応付け、追加行と削除行が最小になる組み合わせを見つけます。編集された行は、削除された行とそれを置き換えた追加行が並んで表示され、行の中で変わった単語がハイライトされます。
API開発では、差分を使って、昨日からレスポンスの何が変わったのか、なぜステージングと本番で返す内容が違うのか、新しいAPIバージョンでどのフィールドが増えたり減ったりしたのか、といった疑問に答えられます。先に2つのJSONレスポンスを同じ形式に整形しておくと(たとえばJSONフォーマッターで)、本当の変更だけが表示されます。
使い方
- 1古いバージョンを Original に、新しいバージョンを Modified に貼り付けるか開きます。どちらのエディターにもファイルをドロップできます。Examples に試せる組み合わせが3つあります。
- 2Differences パネルを見ます。削除された行は赤で
−、追加された行は緑で+が付き、行の中で変わった単語はハイライトされます。パネルのヘッダーで Side by side と Unified を切り替えられます。 - 3Only changes は、変更のない行が長く続く部分を折りたたみ、各変更の前後3行だけを残します。折りたたまれた行をクリックすると開きます。F7とShift+F7、または矢印で変更箇所の間を移動できます。
- 4Ignore を使うと、空白、大文字・小文字、改行コード(CRLFとLF)の違いを無視できます。改行コードだけが違う場合は、ステータスバーにそう表示されます。
- 5Copy patch や Download patch で、変更を
git applyやpatchで使える unified diff として取得できます。Swap は左右を入れ替えます。Ctrl+Z で片側ずつ元に戻せ、Clear も元に戻せます。
トラブルシューティング
- すべての行が変更扱いになる
- おそらく改行コード(WindowsのCRLFとLF)やインデントがテキストごとに違います。ステータスバーに改行コードが表示されるので、Ignore line endings か Ignore whitespace をオンにしてください。
- 2つのJSONレスポンスがまったく違って見える
- 片方が圧縮されているか、インデントが違う可能性があります。JSONフォーマッターで両方を同じインデントに整形してから比較してください。JSONフォーマッターの Compare タブでは、キーの順序を無視してキー単位でJSONを比較することもできます。
- 最後の行が同じに見えるのに変更扱いになる
- 片方のテキストは改行で終わり、もう片方は改行で終わっていません。差分ツールはこれを変更として扱います(パッチには
\ No newline at end of fileと出ます)。Ignore line endings で無視できます。 - 貼り付けたテキストでCRLFの改行が表示されない
- ブラウザは、テキスト欄に入力または貼り付けた改行をすべてLFに変換するため、貼り付けではCRLFが残りません。ファイルは Open またはドロップで開いてください。ディスク上の改行コードのまま比較されます。
- 大きすぎて比較できない
- 片側あたり最大50,000行または500万文字までです。それより大きいファイルは、コマンドラインで
git diff --no-index a.txt b.txtかdiff -uを使ってください。
よくある質問
変更された行が、削除1つと追加1つとして表示されるのはなぜですか?
差分は行全体で比較します。行の中で何か1つでも変わると古い行は一致しなくなるため、削除として表示され、新しい行は追加として並べて表示されます。ハイライトされた単語が、行の中で何が変わったかを示しています。
パッチは Ignore のオプションに従いますか?
いいえ。git apply や patch で適用できるように、パッチは空白、大文字・小文字、改行コードも含めた正確な差分を常に表します。Ignore のオプションが変えるのは、Differences パネルの表示だけです。
"shown as replaced" とはどういう意味ですか?
大きな2つのテキストにほとんど共通部分がない場合、最小の差分を見つけるのに非常に時間がかかることがあります。一定量の処理を終えると、ツールは残りの範囲をまとめて削除と追加として表示します。結果は正しい差分のままですが、粒度が粗くなります。
テキストはどこかにアップロードされますか?
いいえ。比較はブラウザ内で行われます。再読み込みしても消えないように、貼り付けた内容は消去するかタブを閉じるまで、このタブのsession storageに保存されます。Copy link は入力をリンクの # の後ろに入れます。ブラウザはこの部分をサーバーに送りませんが、リンクを渡した相手は内容を読めます。レイアウトや Ignore のオプションなどの設定はこのブラウザに保存されます。