Diffツールでコードレビューを効率化する|複雑なリファクタリングは追えない
:::note ※コードレビューでDiffを使いたい人向けの「用途特化」記事です :::
結論(私の判断基準)
GitHubが使えない場面でのコード比較に使う。ただし、複雑なリファクタリングはDiffでは追えない。
関数の分割、ファイルの移動、構造の大幅な変更。こういうときはDiffではなく、変更した本人に「何を変えたか」を聞く方が早い。
GitHubが使えない場面
コードの差分確認といえばGitHub。だが、こんな場面では使えない:
- クライアントからメールで届いた修正コード
- Slackに貼られたスニペットの比較
- Git管理していないレガシーコード
- サーバー上の設定ファイルの変更確認
- 「ちょっとこの2つ比べたい」だけの時
リポジトリにコミットするほどでもない。そういう時に使う。
Diffの限界(ここから先は人が見る)
限界1:複雑なリファクタリング
関数を分割した、クラス構造を変えた、ファイルを移動した。
Diffでは「削除」と「追加」として表示される。元のコードと対応が取れない。
こういうときはDiffで無理に追わない。変更した本人に聞く。
限界2:ロジックの正しさ
Diffは「どこが変わったか」を見せる。「そのロジックが正しいか」は教えてくれない。
変更箇所を特定した後、そのコードを読んで判断するのは人間の仕事。
限界3:副作用の検出
A関数を変えた影響が、B関数に出る。Diffでは分からない。
影響範囲の調査はDiffではできない。
コードレビュープリセット
「コードレビュー」を選ぶと、以下が自動設定される:
| 設定項目 | 値 | 理由 |
|---|---|---|
| 比較単位 | 行 | コードは行単位で読む |
| 空白 | 無視 | インデント差を除外 |
| フィルタ | 変更箇所のみ | 変わっていない行は非表示 |
| 行番号 | 表示 | 元ファイルの位置を把握 |
使いどころ(私が実際に使う場面)
設定ファイルの変更確認
.htaccess、nginx.conf、wp-config.php など。本番適用前に差分を目視確認。
1行の違いで障害が起きることがある。だから目で見る。
外部から受け取ったコード
クライアントや外注先から「修正しました」と送られてきたコード。何が変わったか一目で分かる。
デバッグ時の比較
「動いていた時のコード」と「動かなくなった後のコード」を比較。変更点から原因を特定。
空白無視の注意点
インデントに意味がある言語では、空白無視をオフにする:
| 言語 | 空白無視 |
|---|---|
| Python | オフ推奨 |
| YAML | オフ推奨 |
| Makefile | オフ推奨 |
| JavaScript | オンでOK |
| PHP | オンでOK |
Diffで「やってはいけないこと」
複雑なリファクタリングをDiffで追う
追えない。時間の無駄。変更した本人に聞く。
「Diffで確認したから大丈夫」と安心する
Diffは差分を見せるだけ。そのコードが動くかは教えてくれない。
この記事で解決しない場合
- オプション設定を知りたい → オプション設定ガイド
- Diffの思想を知りたい → Diffツールは「判断コスト削減」の道具
Diffは「どこが変わったか」を教えてくれる。そのコードが正しいかは、あなたが読んで判断する。