同じものの2つのバージョン——編集前後の文書、2つの設定ファイル、同僚が書き直した段落——があり、「どこが変わったか」を正確に知りたい。両方を並べて読むのは遅く、見落としも出ます。**diff(差分比較)**なら一瞬です。
diff は実際に何をするのか
diff アルゴリズムは、一方のテキストをもう一方に変えるために必要な最小の追加と削除を見つけ、色で示します:追加は緑、削除は赤、変更なしは無色。これは「変更履歴」やあらゆるコードレビューの背後にある同じ技術です。
行比較 vs 単語比較
便利な粒度は2つあります:
- 行比較は行単位で比べます。コード・設定ファイル・CSV・リストに最適で、これらの「変更」はたいてい行ごと追加・削除・置換されます。
- 単語比較は単語ごとに比べます。文章に最適で、一文の中で「1つの単語だけ」変わったことを、行全体が赤緑になる代わりに確認できます。
まず行比較を使い、ある行が変更ありと出ても違いが分からないときは単語比較に切り替えます。
結果の読み方
- 赤い行の直後に緑の行 = その行が編集された(削除され、新しい形で再追加)。
- 緑の行だけ = 追加。
- 赤い行だけ = 削除。
- 要約(例:
+3 −1)で変更の規模がひと目で分かります。
なぜブラウザ内で比較するのか
diff は機微な内容——契約書、設定ファイル内の資格情報、未公開の原稿——を扱うことがよくあります。テキストをアップロードするオンラインツールは不要なリスクです。テキスト比較ツールは完全にブラウザ内で比較し、どちらのバージョンも端末から出ません。
第三の粒度:文字比較
とても短く密な文字列では、単語比較でも粗すぎます。文字比較は一文字ずつ比べ、「たった一文字が決め手」という場面に向きます——注文番号で入れ替わった数字、ハッシュや API キーの一文字の誤り、長い token に紛れたタイプミスなど。単語比較なら token 全体を「変更」と印を付けますが、文字比較は違う一文字をそのまま指し示します。
目安:ファイルやリストは行比較、文章は単語比較、コードや識別子は文字比較。
diff を使う場面
- 修正のレビュー——同僚・編集者・AI の書き直しが、草稿のどこを実際に変えたかを確認する。
- バージョンの比較——契約書・規約・設定ファイルの変更前後の違い。
- コピーの検証——2 つのエクスポート、2 つの翻訳、2 つのリストが一文字単位で一致するか確かめる。
- 近い重複の追跡——見た目は同じでも結果が違う 2 つの塊。
よくある誤解
- diff は「移動」を検出しない——段落を切って下に貼ると、多くのツールは「1 削除+1 追加」と表示し、移動とは扱いません。
- 行全体が色づいても、全部変わったわけではない——行比較では 1 単語の変更でも行全体に印が付きます。単語比較や文字比較に切り替えると、本当の変更が見えます。
- 見えない文字も数に入る——同じに見える 2 行も、行末の空白・タブ・改行コードだけ違うことがあります。それは不具合ではなく本物の差分で、改行・重複行の削除ガイドの整えの手順が防ぐのもこれです。
コツ:先に整えると diff がきれいに
2つのファイルが行末の空白・タブ・改行コードだけ違う場合、diff は雑然とします。まず両方をテキストクリーナーにかけ——行を trim し空白を統一——すれば、本当の差分が際立ちます。