変更点を見つける:Text Diffガイド
正気を失わずにファイル、設定、コードバージョン間の違いを発見。
何かが壊れました。設定ファイルは同じに見えます。でも違います——その500行のどこかで、1文字が変わりました。
手動で見つけるのは頑張ってください。
Diffツールはまさにこのために存在します。2つのバージョンを比較し、何が変わったかを見る。デバッグ時間が数時間から数秒に減ります。
Diffが助けてくれる時
設定ファイル。 デプロイが壊れた?動作する設定と現在のものを比較。
コードレビュー。 このプルリクエストで実際に何が変わった?
APIレスポンス。 なぜ同じエンドポイントが今異なるデータを返すの?
ドキュメントバージョン。 クライアントは契約で何を変更した?
Diff出力を読む
ほとんどのdiffツールは表示:
- 削除された行 を赤で(
-プレフィックス) - 追加された行 を緑で(
+プレフィックス) - コンテキスト行 変更なし、周辺コンテンツを表示
function process(data) {
- return data.toLowerCase();
+ return data.toLowerCase().trim();
}
1行が変更。古いバージョンはtrimしなかった、新しいバージョンはします。
サイドバイサイド vs 統一
統一diff はインラインで変更を表示。コンパクト、小さな変更に良い。
サイドバイサイド は古いバージョンと新しいバージョンを並べて表示。より大きな変更の理解に良い。
比較するものに基づいて選びましょう。
文字レベルDiff
行diffはどの行が変わったかを表示。文字diffはそれらの行内の正確にどの文字かを表示。
設定のデバッグには、文字レベルが見つけるのを助けます:
- 余分なスペース
- 間違った引用符(' vs ")
- 不可視文字
- 大文字小文字の違い
実践的なコツ
重要でない時は空白を削除。 末尾スペースと異なる改行コードはノイズを生みます。
適切な時は大文字小文字を無視。 時々「TRUE」と「true」は同じです。
コンテキストを使う。 周辺行を見ると変更の理解を助けます。
構造化データを慎重にdiff。 JSONとXMLは比較前に同一にフォーマットされるべき、さもないとフォーマット違いが実際の変更を隠します。
よくある使用例
環境違いのデバッグ。 ステージング設定を本番と比較。違いが通常バグです。
時間経過の変更追跡。 変更前後のバージョンを保存。Diffが正確に何をしたかを教えます。
マイグレーション検証。 マイグレーション前後のデータベースダンプを比較。予期しない違いはマイグレーションバグを意味します。
コードレビュー。 著者が主張したものではなく、実際に何が変わっているかを見る。
行Diffが十分でない時
バイナリファイル。 Diffツールはテキストで動作。画像、PDF、実行ファイルには専用ツールが必要。
意味的に同一だがフォーマットが異なる。 同じデータの2つのJSONファイルだが異なるフォーマットは多くの違いを表示。まず正規化。
移動されたコード。 標準diffは削除と追加を別々に表示。高度なツールは移動を検出できます。
Diffは過小評価されたデバッグツール。何かが「同じに見える」けど異なる動作をする時、推測をやめて比較しましょう。違いはそこにあります——見るだけです。