テキスト差分チェック(行単位):1行挿入すると以降が全部差分になる理由
元の版と修正後の版を貼り付けると、元にしかない行にはマイナス、修正後にしかない行にはプラスが付きます。照合は行番号を基準にした機械的なもので、最長共通部分列は使いません。そのため1行挿入すると、それ以降の行がすべて差分として表示されます。
行単位の差分が向いている場面
文章を直したあとでどの一文が変わったかを知りたい、2つの設定ファイルがずれていないか確かめたい、字幕ファイルのタイミングが崩れていないか見たい、相手から返ってきた契約書で数字だけが変わっていないか確認したい。いずれも全文を読み直すのではなく、どの行が変わったかを見る作業です。
差分は記録としても使えます。結果をチケットやメールに貼れば、どの行が増減したかがそのまま伝わり、2つのファイルを並べて開いてもらう必要がありません。Git や diff ツールを入れられない環境では、ブラウザで完結するのが一番早い方法です。
- 校正の前後でどこが変わったかの確認
- 設定ファイルや環境変数のバージョン比較
- 字幕・台本の行単位のチェック
誤読しないための使い方
最も大事なのは、2つのテキストの行を対応させることです。1行目と1行目、2行目と2行目を比べるため、途中に1行挿入すると以降の行がすべて1行ずつずれ、全部が差分と判定されます。これは不具合ではなく、位置ベースの比較の仕様です。
貼り付ける前に改行コードを揃えてください。片方が Windows の CRLF、もう片方が LF だと、エディタ上は同じに見えても1文字単位の比較では全体が別物と判定されます。行末の空白も差分になるため、先に前後の空白を削っておくと結果が読みやすくなります。
- 行を挿入・削除したら対応を取り直してから再実行
- 両側の改行コード(CRLF と LF)を揃える
- 行末の空白を削って誤検出を防ぐ
使えない場面と代替手段
行の中のどの単語が変わったかは分かりません。それは文字単位の差分ツールの役割です。また、多数の行の中から最小の変更(10行の置き換えではなく1行の挿入)を見つけるには、最長共通部分列に基づく差分が必要で、Git や diff コマンド、エディタの並列表示がそれに当たります。
大文字小文字、空白、空行を無視するオプションもありません。コードレビューや大きなファイルには、ローカルの差分ツールのほうが向いています。未変更部分を畳んで表示でき、単語単位で強調され、コード全体をブラウザに貼る必要もありません。
- 単語単位の強調は文字差分ツールへ
- 大きなファイルやリポジトリは Git かエディタで
- 大文字小文字や空白の無視は専用ツールで
よくある質問
途中に1行足しただけなのに、以降がすべて差分になるのはなぜですか?
行を位置で突き合わせ、内容では照合していないためです。1行挿入すると、元の5行目は6行目になり、相手側の5行目と対応しなくなるので、それ以降がすべて差分になります。対応を取り直してから再実行すると本当の変更が見えます。
大文字小文字や空白の違いは無視できますか?
できません。完全一致だけを同じ行とみなすため、行末の空白1つや大文字小文字の違いでも差分になります。貼り付ける前に両側の行末空白を削り、区別したくない場合は事前に表記を揃えてください。
2つのテキストの行数が違うとエラーになりますか?
なりません。余った行はまるごと削除または追加として表示され、マイナスやプラスが連続するだけです。まず、余分な行が実際の内容なのか、ファイル末尾の空行なのかを確認すると判断しやすくなります。
関連ツール:テキスト差分チェック(行単位)