要約:2つの草稿を並べて読むことこそ、小さくても重要な編集が見逃される正確な理由だ——diffツールは疲れず、行を飛ばすこともない。単語レベルの比較が必要か文字レベルの比較が必要かを知ることで、実際に気づけるものが変わる。このガイドはText DifferenceWord Frequency CounterCharacter CounterRemove Extra Spacesと組み合わせて使ってください。

Text Differenceは2つのバージョンを比較し、目で見つけるよう求める代わりに、何が変わったか——追加、削除、移動したテキスト——を正確にハイライトする。

手動比較が編集を見逃す理由

人間の校正はパターン認識であり、その能力は、ほぼ同一のテキストではうまく機能しない。目は記憶しているものと95%同じ文の上を滑り、意味を反転させる否定語、更新された数字、綴りを間違えた名前といった、唯一変わった単語は違うものとして記録されない。コンテンツに詳しくなればなるほど、これは改善するのではなく悪化する。慣れがあなたに、実際にページに書かれていることではなく、期待していることを読ませてしまうからだ。

diffツールが実際にどう差異を見つけるか

ほとんどのテキストdiffツールは、Myersのdiffアルゴリズム(git diffの背後にある同じアプローチ)のバリエーションに基づいており、一つのテキストを別のテキストに変換するための最短の挿入と削除の並びを見つける——実質的には両バージョン間の最長共通部分列だ。だからこそ、良いdiffは単に"これらの行は異なる"とフラグを立てるだけでなく、変更された行の中でどの具体的な単語が追加され、削除され、あるいはそのまま残されたかを示す。

単語レベルと文字レベルのdiffの違い

単語レベルのdiffは各単語を一つの単位として扱う——散文に有用で、"変わった→変更された"を、個々の変更された文字の混乱ではなく、単一の置き換えとしてハイライトするからだ。文字レベルのdiffはより細かく、コード、識別子、短い文字列に適している。そこでは一つの変更された文字(タイプミス、バージョン番号、変数名)がまさに探しているものであり、単語レベルのdiffはそれを"単語全体が変わった"ブロックの中に埋もれさせてしまう。

2つの草稿をレビューするワークフロー

  1. Text Differenceに、片方に元の文章を、もう片方に編集後のバージョンを貼り付ける。
  2. まずハイライトされた変更をスキャンする——テキスト全体を最初から最後まで読み直すのはやめよう。それこそがまさに避けようとしている手動の方法だ。
  3. ハイライトされた各変更について、それが意図的なものであることを確認する。編集した記憶がないものはすべて、もう一度見る価値がある。
  4. 草稿が複数回の編集を経ている場合は、直前のバージョンだけでなく、元の原稿と比較する——小さな変更は積み重なり、元の意図から徐々にずれていくことがある。

避けるべきよくある間違い

  • 実際のdiffの代わりに"何を変更したか"という記憶に頼ること——記憶こそがまさにここで失敗するものだ。
  • コードに単語レベルのdiffを使い、長い識別子の中で入れ替わった一文字を見逃すこと。
  • "ちょっとした編集だから"とdiffを完全にスキップすること——小さな編集こそが手動レビューで見逃されるものだ。
  • 文書が複数回の修正を経ている場合に、本当の原本と比較しないこと。

diffツールは、ある変更が良いかどうかについての編集上の判断に取って代わるものではない。それが取って代わるのは、そもそも変更が起きたことに気づくという信頼できないプロセスだ。