RunToolz iconRunToolz
Welcome to RunToolz!
Diffデバッグ開発

変更点を見つける:Text Diffガイド

正気を失わずにファイル、設定、コードバージョン間の違いを発見。

RunToolz Team2026年1月29日5 min read

何かが壊れました。設定ファイルは同じに見えます。でも違います——その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は過小評価されたデバッグツール。何かが「同じに見える」けど異なる動作をする時、推測をやめて比較しましょう。違いはそこにあります——見るだけです。