差分チェッカー
2つのテキストを比較して差分を可視化。追加、削除、変更なしの行を表示。
関連ツール
Diffとは?
diff(「difference」の略)は、2つのバージョンのテキスト間の変更を表示します。何が追加、削除、または変更されたかを強調表示します - あらゆるテキストのための変更履歴機能のようなものです。
なぜdiffが重要か:
- コードレビュー: プルリクエストで何が変わったかを正確に確認
- デバッグ: バージョン間で何が壊れたかを見つける
- ドキュメント: 時間の経過とともにコンテンツの変更を追跡
- コラボレーション: 複数の人の作業をマージ
diff形式は1970年代にUnix用に発明され、Git などの現代のバージョン管理システムの基盤となっています。
Diffビューの種類
1. 統一Diff(最も一般的)
@@ -1,4 +1,4 @@
function greet(name) {
- return "Hello, " + name;
+ return `Hello, ${name}!`;
}
-で始まる行は削除された+で始まる行は追加された- プレフィックスのない行(コンテキスト)は変更なし
2. サイドバイサイド 視覚的に比較しやすいが、より多くのスペースを使用。
3. インライン/単語Diff 行内の変更を強調表示。
Diffの読み方
ヘッダー
--- a/file.txt
+++ b/file.txt
@@ -10,7 +10,8 @@
---= 古いファイル+++= 新しいファイル@@ -10,7 +10,8 @@= 位置情報- 10行目から始まり、7行を表示(古い)
- 10行目から始まり、8行を表示(新しい)
プロのヒント: 変更されていない行の前のスペースは意図的です!整列を保持し、diffを解析可能にします。
Diffアルゴリズム
異なるアルゴリズムは異なる結果を生成します:
| アルゴリズム | 最適な用途 | トレードオフ |
|---|---|---|
| Myers | 一般的な使用 | 高速、移動を見逃す可能性 |
| Patience | コードの再構築 | 低速、より明確な出力 |
| Histogram | 大きなファイル | バランス |
| Word | ドキュメント | より詳細 |
実用的な用途
🔍 コードレビュー
git diff main feature-branch
マージ前にすべての変更を確認。
📜 ファイル比較
diff file1.txt file2.txt
任意の2つのテキストファイルを比較。
📝 設定の変更 サーバー設定を比較して違いを見つける:
diff /etc/nginx/nginx.conf nginx.conf.backup
より良いDiffのためのヒント
✅ Diffを読みやすくする:
-
小さく焦点を絞ったコミットを作成
- レビューしやすい
- 必要な場合に元に戻しやすい
-
リファクタリングと機能を分離
- フォーマット変更は実際の変更を隠す
- 別のコミットでリフォーマットを行う
-
意味のあるコミットメッセージを書く
- 何をだけでなくなぜを説明
- 未来のあなたが現在のあなたに感謝する
❌ よくある落とし穴:
- 空白ノイズ:
diff -wで無視 - 改行の問題:
\r\nvs\n - バイナリファイル: Diffは画像、PDFを処理できない
Gitヒント: より良い散文diffのために git diff --color-words を設定。行全体ではなく単語レベルの変更を強調表示します。
人気のDiffツール
コマンドライン:
diff- Unix標準git diff- Gitの組み込みcolordiff- 色付き出力
GUIツール:
| ツール | プラットフォーム | 特徴 |
|---|---|---|
| VS Code | すべて | 組み込み、優秀 |
| Beyond Compare | すべて | 三方向マージ |
| Meld | Linux/Windows | 視覚的マージ |