CreaTools LogoCreaTools
Diff

Diffツールでコードレビューを効率化する|複雑なリファクタリングは追えない

2025-11-12

:::note ※コードレビューでDiffを使いたい人向けの「用途特化」記事です :::

結論(私の判断基準)

GitHubが使えない場面でのコード比較に使う。ただし、複雑なリファクタリングはDiffでは追えない。

関数の分割、ファイルの移動、構造の大幅な変更。こういうときはDiffではなく、変更した本人に「何を変えたか」を聞く方が早い。


GitHubが使えない場面

コードの差分確認といえばGitHub。だが、こんな場面では使えない:

  • クライアントからメールで届いた修正コード
  • Slackに貼られたスニペットの比較
  • Git管理していないレガシーコード
  • サーバー上の設定ファイルの変更確認
  • 「ちょっとこの2つ比べたい」だけの時

リポジトリにコミットするほどでもない。そういう時に使う。


Diffの限界(ここから先は人が見る)

限界1:複雑なリファクタリング

関数を分割した、クラス構造を変えた、ファイルを移動した。

Diffでは「削除」と「追加」として表示される。元のコードと対応が取れない。

こういうときはDiffで無理に追わない。変更した本人に聞く。

限界2:ロジックの正しさ

Diffは「どこが変わったか」を見せる。「そのロジックが正しいか」は教えてくれない。

変更箇所を特定した後、そのコードを読んで判断するのは人間の仕事。

限界3:副作用の検出

A関数を変えた影響が、B関数に出る。Diffでは分からない。

影響範囲の調査はDiffではできない。


コードレビュープリセット

「コードレビュー」を選ぶと、以下が自動設定される:

設定項目理由
比較単位コードは行単位で読む
空白無視インデント差を除外
フィルタ変更箇所のみ変わっていない行は非表示
行番号表示元ファイルの位置を把握

使いどころ(私が実際に使う場面)

設定ファイルの変更確認

.htaccessnginx.confwp-config.php など。本番適用前に差分を目視確認。

1行の違いで障害が起きることがある。だから目で見る。

外部から受け取ったコード

クライアントや外注先から「修正しました」と送られてきたコード。何が変わったか一目で分かる。

デバッグ時の比較

「動いていた時のコード」と「動かなくなった後のコード」を比較。変更点から原因を特定。


空白無視の注意点

インデントに意味がある言語では、空白無視をオフにする:

言語空白無視
Pythonオフ推奨
YAMLオフ推奨
Makefileオフ推奨
JavaScriptオンでOK
PHPオンでOK

Diffで「やってはいけないこと」

複雑なリファクタリングをDiffで追う

追えない。時間の無駄。変更した本人に聞く。

「Diffで確認したから大丈夫」と安心する

Diffは差分を見せるだけ。そのコードが動くかは教えてくれない。


この記事で解決しない場合


Diffは「どこが変わったか」を教えてくれる。そのコードが正しいかは、あなたが読んで判断する。