テキストを比較して違いを見つける方法

· 5 分で読めます

文書、設定ファイル、コードの2つのバージョンの間で何が変わったかを見つけるのは、よくある作業です。両方のバージョンを読んで手動で違いを見つけるのは遅く信頼できません、特に長いテキストでは。差分チェッカーはそれを瞬時に行い、すべての変更をハイライトします。Gitのコミット履歴、GitHubのプルリクエストレビューインターフェース、Unixのdiffコマンドを動かす同じアルゴリズムが、これまで使ったすべてのビジュアル差分ツールの基盤になっています。

テキストを比較する手順

  1. 両方のバージョンを貼り付ける: 左に元のテキスト、右に修正されたテキストを入力します。
  2. ハイライトを確認: 追加された行は緑、削除された行は赤で表示されます。変更された行は古いバージョンと新しいバージョンの両方を表示します。
  3. エクスポートまたはコピー: 差分の結果をコピーするか、レポートをダウンロードします。

比較は両方のペインにテキストが入った時点で行われます。クリックする「比較」ボタンはありません。どちらかの編集が差分をリアルタイムに再実行するため、修正を反復しながら即座に効果を見たいときに便利です。

差分の読み方

差分の出力はシンプルな色システムを使います:

これはGit、GitHub、GitLab、Bitbucket、すべての主要なバージョン管理システムで使われている同じ慣習です。色は恣意的ではありません。追加に緑、削除に赤というのは、最初のビジュアル差分ツール(sdiffコマンドなど)がUnixで出荷された1970年代以降の標準です。モダンなツールは「変更」(両方に存在するが異なる行)を示すために黄色やオレンジを追加することがありますが、赤と緑は普遍的な追加/削除のままです。

diffの簡単な歴史

diffアルゴリズムは1976年にBell LabsのDouglas McIlroyによって初めて発表され、Eugene Myersによる後の改良(1986年のO(ND)アルゴリズム)に基づいています。これがインタラクティブな使用に十分な速度をdiffに与えました。McIlroyの元のアルゴリズムは1979年のUnix V7リリースとともに発表され、それ以降すべてのUnix系オペレーティングシステムの一部になっています。Myersアルゴリズムはモダンなdiff実装を動かすものです。Gitのdiff、GitHubのWebインターフェース、Beyond CompareからVS Codeまでのすべての差分GUI。

ビジュアルなサイドバイサイド差分形式はアルゴリズムより古いです。出版での手動校正の慣習(2列のテキストを表示し、変更を余白に印付ける)にまで遡ります。1970年代のソフトウェアは、編集者が何世紀も紙でやっていたことを自動化しただけです。「unified diff」形式(パッチファイルで見る---+++ヘッダーのもの)は1990年にGNU diffで導入され、今ではテキストで変更を共有する事実上の標準です。

差分チェックが役立つ場面

行ベース対文字ベースの差分

差分チェッカーは行ベースの比較を使います。つまり、各行を最小の差分単位として扱います。1行に1単語を変更すると、行全体が変更として表示され(古い行が赤、新しい行が緑)、単語レベルの違いは自分で見つける必要があります。

行ベースの差分は、コードと設定ファイルの標準です。これらは典型的に行指向(1行に1ステートメント、1行に1設定オプション)だからです。速く、予測可能で、Gitとすべてのコードレビューツールの動き方と一致します。

行レベルの変更が粗すぎる散文の比較には、行内の変更された単語だけをハイライトする単語レベルや文字レベルの差分を提供するツールもあります。それはより精密ですが、コードでは読みにくくなります。単語レベルの差分が必要なら、「word diff」や「intra-line diff」と明記されたツールを探してください。

プライバシーと機密コンテンツ

差分チェッカーは完全にブラウザ内で動作します。両方のテキストはデバイス上に留まり、何もアップロードされません。これは差分したいテキストがしばしば機密だからです。交渉中の契約、プレスリリースの下書き、内部ポリシー文書、NDA下のソースコードなど。クラウドの差分ツール(DiffChecker.com、JsonDiff.com、オンラインマージツール)は両方のテキストを第三者のサーバーにアップロードする必要があり、これは機密コンテンツに対してまさに避けたいことです。ブラウザベースの差分にはその露出が一切ありません。

セッションもステートレスです。タブを閉じた後は何も残りません。差分の記録を残す必要があるなら、出力をコピーするか、移動する前にスクリーンショットを撮ってください。

よくある落とし穴

使いこなしのヒント

よくある質問

差分は文字ごとに比較しますか?

Gitとほとんどのプロの差分ツールと同じアプローチで、行ごとに比較します。1文字でも変更されると、行全体が変更済みとして強調表示されます。

サイズ制限はありますか?

厳密な制限はありませんが、非常に大きなテキスト(10,000行以上)は、比較がブラウザ内で完全に実行されるため、処理に時間がかかる場合があります。

コードファイルを比較できますか?

はい。差分はソースコードを含む任意のテキストで動作します。シンタックスハイライトはコード差分をより簡単に読むのに役立ちます。

テキストはサーバーに送信されますか?

いいえ。比較はブラウザ内で行われます。テキストがデバイスを離れることはありません。