テキスト差分比較とは
テキスト差分比較(diff)は、2つのテキストを比較して、追加・削除・変更された部分を視覚的に表示する機能です。
差分比較が役立つシーン
| シーン | 用途 |
|---|---|
| コードレビュー | 変更されたコードの確認 |
| 契約書チェック | 修正箇所の特定 |
| 翻訳チェック | 原文と訳文の対応確認 |
| 設定ファイル | 環境間の設定差分確認 |
| 文書校正 | 編集前後の変更点把握 |
| データ比較 | CSVデータの変更検出 |
diff の基本概念
差分の種類
差分表示では、一般的に以下の色分けが使われます。
| 表示 | 意味 | 色(一般的) |
|---|---|---|
+ 追加行 | 新しいテキストに追加された行 | 緑 |
- 削除行 | 古いテキストから削除された行 | 赤 |
| 変更なし | 両方のテキストに存在する行 | グレー/白 |
表示形式
| 形式 | 説明 | 用途 |
|---|---|---|
| サイドバイサイド | 左右に並べて比較 | 視覚的に分かりやすい |
| インライン(統合形式) | 変更部分を上下に並べる | Git のデフォルト |
| 文字レベル差分 | 行内の変更文字をハイライト | 細かい変更の確認 |
活用法1: コードレビュー
Git diffの使い方
# 作業中の変更を確認
git diff
# ステージング済みの変更を確認
git diff --staged
# 特定のコミット間の差分
git diff abc123 def456
# 特定ファイルの差分
git diff -- path/to/file.js
# ブランチ間の差分
git diff main..feature-branch
# 変更されたファイル名だけ表示
git diff --name-only
# 統計情報(追加/削除行数)
git diff --stat
コードレビューのポイント
差分を確認する際のチェックリスト:
- ロジックの正しさ — バグが含まれていないか
- 命名の適切さ — 変数名・関数名が分かりやすいか
- エッジケース — 境界値や異常系の処理
- パフォーマンス — 不必要なループやクエリがないか
- セキュリティ — 入力バリデーション、SQLインジェクション等
- テスト — テストコードが追加されているか
GitHub / GitLab のdiff機能
GitHub のPull Request画面では、以下の便利な機能が使えます。
| 機能 | 説明 |
|---|---|
| Files changed | 変更ファイル一覧と差分表示 |
| インラインコメント | 特定の行にコメント |
| Suggestion | コード修正案を提案 |
| Viewed | 確認済みファイルのチェック |
| ファイルフィルタ | 特定の拡張子だけ表示 |
活用法2: 契約書・法務文書の比較
なぜ差分比較が重要か
契約書の改訂版を受け取った際、変更箇所を目視で探すのは非常に手間がかかり、見落としのリスクがあります。
Word文書の比較
Microsoft Wordには文書比較機能が内蔵されています。
- 「校閲」タブを開く
- 「比較」→「比較」を選択
- 「元の文書」と「変更された文書」を指定
- 「OK」をクリック
変更箇所が赤字・取り消し線で表示されます。
PDF文書の比較
PDF形式の契約書を比較する方法:
| ツール | 料金 | 特徴 |
|---|---|---|
| Adobe Acrobat Pro | 有料 | PDF比較に最適 |
| DiffPDF | 無料 | テキスト比較 + 外観比較 |
| オンラインdiffツール | 無料 | テキスト抽出→比較 |
契約書チェックのポイント
差分を確認する際に特に注意すべき箇所:
- 金額・数量 — 数字の変更は重大な影響
- 期間・日付 — 契約期間、支払期日
- 免責条項 — 責任範囲の変更
- 解約条件 — 解約に関する条件の追加・変更
- 知的財産権 — 権利帰属の変更
- 機密保持 — 守秘義務の範囲
活用法3: 設定ファイルの比較
サーバー設定の差分確認
本番環境とステージング環境の設定差分を確認する際にdiffが役立ちます。
# ローカル設定とリモート設定の比較
diff local.env remote.env
# サイドバイサイドで表示
diff -y local.env remote.env
# 差分のみ表示(共通行を省略)
diff -y --suppress-common-lines local.env remote.env
設定比較のチェックリスト
- データベース接続先
- APIキー・シークレット
- ログレベル
- キャッシュ設定
- CORS設定
- 環境固有のURL
活用法4: 翻訳・ローカライゼーション
翻訳ファイルの差分
多言語対応のアプリケーションでは、翻訳ファイル(JSON、YAML等)の差分確認が重要です。
# 翻訳ファイルの差分
diff ja.json en.json
# キーの差分(翻訳漏れの検出)
jq 'keys' ja.json > ja_keys.txt
jq 'keys' en.json > en_keys.txt
diff ja_keys.txt en_keys.txt
おすすめの差分比較ツール
オンラインツール
| ツール | 特徴 | 無料 |
|---|---|---|
| Assisty diff | ブラウザ完結・日本語対応 | ○ |
| Diffchecker | シンプルで使いやすい | ○ |
| Text Compare | 文字レベル差分対応 | ○ |
デスクトップアプリ
| ツール | OS | 料金 | 特徴 |
|---|---|---|---|
| VS Code(内蔵diff) | 全OS | 無料 | エディタ統合 |
| Beyond Compare | 全OS | 有料 | 高機能。フォルダ比較対応 |
| WinMerge | Windows | 無料 | 定番。フォルダ比較対応 |
| Meld | Linux/Mac | 無料 | 3ウェイマージ対応 |
| Kaleidoscope | Mac | 有料 | 美しいUI |
VS Codeでの差分比較
VS Codeには強力なdiff機能が内蔵されています。
# コマンドラインからdiffを開く
code --diff file1.txt file2.txt
VS Code内での操作
- エクスプローラーで1つ目のファイルを右クリック →「比較するファイルを選択」
- 2つ目のファイルを右クリック →「選択したファイルと比較」
コマンドラインの diff
# 基本的な差分表示
diff file1.txt file2.txt
# カラー表示
diff --color file1.txt file2.txt
# 統合形式(unifiedformat)
diff -u file1.txt file2.txt
# ディレクトリの再帰比較
diff -r dir1/ dir2/
# 空白の違いを無視
diff -w file1.txt file2.txt
# 大文字小文字の違いを無視
diff -i file1.txt file2.txt
差分比較の実践テクニック
空白・改行の違いを無視する
Windows(CRLF)とMac/Linux(LF)の改行コードの違いで大量の差分が出ることがあります。
# 改行コードの違いを無視
diff --strip-trailing-cr file1.txt file2.txt
# 空白の違いも無視
diff -b file1.txt file2.txt
大きなファイルの差分
大きなファイルの差分を見る場合は、コンテキスト行数を制限すると見やすくなります。
# 変更箇所の前後3行のみ表示
diff -U3 file1.txt file2.txt
よくある質問
Q: バイナリファイルの比較はできる?
テキストベースのdiffツールではバイナリファイルの比較はできません。画像の比較にはBeyond CompareやKaleidoscopeが対応しています。
Q: 3つ以上のファイルを同時に比較できる?
3ウェイマージ(3-way merge)に対応したツール(Meld、Beyond Compare、VS Code等)を使えば、3つのファイルを同時に比較できます。Gitのマージコンフリクト解決に便利です。
Q: Excelファイルの差分比較は?
Excelファイルを直接diffすることは困難です。CSVに変換してからテキスト差分を取るか、Spreadsheet Compare(Microsoft Office Professional Plus付属)を使います。
まとめ
テキスト差分比較は、あらゆる文書作業の効率化に役立ちます。
- コードレビュー → Git diff + GitHub/GitLab
- 契約書チェック → Word比較機能 or オンラインdiffツール
- 設定ファイル → コマンドラインdiff
- 日常的なテキスト比較 → VS Code or オンラインツール
テキストの差分比較は Assistyのテキスト差分比較ツール で簡単に行えます。ブラウザ上で2つのテキストを貼り付けるだけで、変更箇所が一目で分かります。