2つのテキストファイルを比較して変更点を確認する方法
2つのテキストファイルを比較する最速の方法は、両方をサイドバイサイドのdiffツールに貼り付け、 ハイライトされた行を読むことです。追加された箇所は緑、削除された箇所は赤で表示され、 変更された行はその両方として表示されます。インストール不要、アップロード不要、 数秒で完了します。
これでほとんどのケースをカバーできます。しかし、画面上では同一に見える2つのファイルでも、 バイト単位では一致しないことがあり、そこで人は午後を丸ごと失ってしまいます。 このガイドでは、素早い方法、実例、知っておく価値のある目に見えない差異、 そしてChatGPTのようなAIチャットボットが実際に役立つ場面を紹介します。 ツールだけが必要な場合は、 テキスト比較ページでブラウザ上のすべてを処理できます。
「2つのテキストファイルを比較する」とは実際どういうことか
テキストファイルは、行に分割された文字の並びです。2つを比較するとは、 一致する部分を並べ、一致しない部分をフラグとして立てることを意味します。 この古典的なツールがUnixの diff ユーティリティであり、当社を含むあらゆる現代的なdiffビューアは、 同じ仕事をより親しみやすい表示で行います。
ほとんどのdiffツールはまず行単位で動作します。これにより長いファイルでも高速に処理でき、 人の読み方にも合致します。移動した行を探し、その中で変わった単語を見るという流れです。 当社のエンジンはGoogleの diff-match-patch を基盤としており、個々の文字を見る前に行モードのパスを実行するため、 1000行のログでも即座にdiffできます。
2つのテキストファイルを比較する方法
唯一の正しい方法はありません。ファイルがどこにあるか、 どれだけ厳密である必要があるかによって異なります。
| 方法 | 向いている場面 | 厳密か? | 手間 |
|---|---|---|---|
| サイドバイサイドで読む | 数行、明らかな1箇所の編集 | 判断はあなた次第 | 低 |
| オンラインdiffツール | クイックチェック、どこからでも貼り付け | はい、文字単位で正確 | 低 |
コマンドライン(diff、git diff) | ディスク上のファイル、スクリプティング、巨大なファイル | はい | 中 |
| コードエディタ(VS Codeの「比較」) | すでにエディタで開いているファイル | はい | 低 |
| AIチャットボット(ChatGPT) | 変更内容を平易な言葉で要約 | いいえ、見落としや言い換えの可能性 | 低 |
1回限りのチェックなら、ブラウザツールが速度面で優れています。インストールするものがなく、 メール、ログ、コードレビューから直接貼り付けられるからです。すでにリポジトリで 追跡されているファイルなら、git diffがすぐそこにあります。 AIという選択肢については後で触れます。適切な用途では本当に役立ち、 不適切な用途では罠になるからです。
ブラウザで2つのテキストファイルを比較する手順
誰かが2つのバージョンのドキュメントを送ってきて「何が違うの?」と聞いてきたときの ルーティンです。約10秒で完了します。
- テキスト比較ツールを開く。
- 左に元のバージョン、右に新しいバージョンを貼り付ける。またはアップロードでディスクから直接ファイルを読み込む。
- ハイライトを読む。追加された行は緑、削除された行は赤、変更された行は赤と緑のペアとして表示される。
- 変更された行をスクロールする。各行の中で異なる正確な単語がマークされているため、行全体を読み直す必要はない。
- 2つのファイルが想定よりはるかに異なって見える場合は、下の目に見えない差異のセクションに進む。
実例
同僚が編集した段落を返してきて、変更を確認してほしいと頼んできたとします。 こちらがあなたの元の文章です:
The service starts at 9am on weekdays.
Refunds are processed within 14 days.
Contact [email protected] for help.
そしてこちらが同僚のバージョンです:
The service starts at 8am on weekdays.
Refunds are processed within 30 days.
Contact [email protected] for help.
Priority support is available on request.
両方をdiffに入れると、文章では読み飛ばしやすいものの、実際の話は短くなります:
| 行 | 変更前 | 変更後 | 変更 |
|---|---|---|---|
| 開始時刻 | 9am | 8am | 変更 |
| 返金期間 | 14 days | 30 days | 変更 |
| サポート窓口 | [email protected] | [email protected] | 変更なし |
| 優先サポート | なし | Priority support is available on request. | 追加 |
2つの数値が変わり、1文が追加されました。返金期間が14日から30日へと倍増するような編集は、 出荷前に捉えたいものであり、しかも1文字の違いで見落とされかねません。 これこそが、目に頼るのではなくテキストをdiffする理由のすべてです。
人がつまずく目に見えない差異
画面上では同一に見える2つのファイルを、diffがまったく別物として描き出すことがあります。 原因はほぼ常に、目に見えない文字です。よくある容疑者を挙げます。
| 目に見えない差異 | どこから来るか | 対処法 |
|---|---|---|
| 改行コード:CRLF vs LF | 一方のファイルはWindowsで保存され、もう一方はmacOSまたはLinuxで保存された | 改行コードを正規化する。改行の規則を参照 |
| 末尾の空白 | 行末に残されたスペースやタブ | 末尾の空白をトリムする、またはツールが対応していれば無視する |
| バイトオーダーマーク(BOM) | エディタが最初の行に目に見えないマーカーを追加した | BOMなしのUTF-8で保存する |
| タブ vs スペース | 異なるエディタやインデント設定 | どちらかに統一して変換する。画面上では両方とも同じに見える |
| テキストエンコード | 一方はUTF-8、もう一方はLatin-1で、アクセント文字のバイトが異なる | 両方をUTF-8で保存し直す |
| ノーブレークスペース | Webページやワープロから貼り付けられた | 通常のスペースに検索置換する |
最も厄介なのが改行コードです。Windowsのファイルは各行末にキャリッジリターンとラインフィード (CRLF)を使い、MacやLinuxのファイルはラインフィード(LF)だけを使います。 両方を同じエディタで開くと同じに見えますが、すべての行がバイトレベルで異なるため、 素朴なdiffはクリスマスツリーのように光ります。ファイル全体が変更として表示される場合は、 まずこれを確認してください。
ChatGPTは2つのファイルを比較できるか?
できます。そして今では多くの人がまさにそうしています。2つのバージョンを ChatGPT (または別のAIアシスタント)に貼り付けて「何が変わった?」と尋ねるのです。 短いファイルではうまく機能し、素のdiffにはできないものを提供してくれます。 それは日常の言葉による要約です。「返金期間が14日から30日に変わり、 優先サポートの行が追加された」という説明は、赤と緑の壁よりも忙しい読者にとって 有用なことが多いのです。
問題は精度です。言語モデルはdiffアルゴリズムではありません。1文字の変更を見落としたり、 要約の際に行をこっそり言い換えたり、長いファイルで容量が尽きて中間を飛ばしたりすることがあります。 また、テキストを第三者に渡すことにもなり、機密性の高いものには避けたいかもしれません。 つまり、この2種類のツールはライバルではなく補完し合う関係です。
良いワークフロー:まずファイルを決定論的な diffツールに通して、正確で文字単位に正しい変更リストを取得し、 その短いリストをAIチャットボットに貼り付けて、影響を平易な言葉で説明してもらいましょう。 diffの正確さと要約の読みやすさの両方が得られ、どちらか一方に相手の仕事を任せる必要もありません。
コマンドラインでのファイル比較
ファイルがすでにディスクにある場合、組み込みの
diffコマンドは1行です:
diff old.txt new.txt
Gitが使う統一フォーマットには-uを、空白の差異を無視するには
-wを追加します。リポジトリ内のファイルなら、
git diff old.txt new.txtが同じことを色付きと単語レベルのハイライトで行います。
ブラウザツールはこれのターミナル不要版です。貼り付けて、読んで、完了。
関連ツール
比較するのはプレーンテキストだけとは限りません。ファイルが構造化されている場合は、 フォーマットを認識したビューの方が読みやすくなります。 JSON比較は並び替えられたキーやインデントのノイズを処理し、 CSV比較は行と列を揃えます。diffする前に散らかったリストを きれいにするなら、重複行の削除と 行のソートの出番です。
よくある質問
- テキストファイルをオンラインで比較するとどこかにアップロードされますか?
- comparetext.orgでは比較はブラウザで実行されます。両方のファイルはあなた自身のマシン上のJavaScriptによってdiffされるため、保存や共有を意図的にクリックしない限り、サーバーには何も送信されません。そのため、下書き、契約書、設定ファイル、そしてキーストロークのたびにアップロードするサイトに貼り付けたくないあらゆるものにとって安全です。
- 2つのテキストファイルがすべての行で差異があると表示されるのはなぜですか?
- ほぼ常に改行コードが原因です。一方のファイルはWindows(CRLF)で保存され、もう一方はmacOSまたはLinux(LF)で保存されたため、同一に見えてもすべての行がバイトレベルで異なります。最初の行の隠れたバイトオーダーマーク(BOM)や、タブとスペースの違いも同じ結果を招きます。改行コードを正規化し、両方をUTF-8で保存し直してから、もう一度diffしてください。
- 何もインストールせずに2つのテキストファイルを比較できますか?
- はい。テキスト比較ツールを開き、一方のファイルを左に、もう一方を右に貼り付けるか、アップロードを使ってディスクから読み込みます。diffは変更された行がハイライトされた状態で、ブラウザ内に即座に表示されます。ダウンロードするものも、作成するアカウントもありません。
- ChatGPTは2つのファイルを比較してくれますか?
- できますし、短いファイルで何が変わったかを平易な言葉で要約するには便利です。しかし言語モデルはdiffアルゴリズムではありません。小さな編集を見落としたり、要約の際に行を言い換えたり、長いファイルの中間を飛ばしたりすることがあります。正確で文字単位に正しい比較にはdiffツールを使い、それを言葉で説明してほしければ、その結果をAIに渡してください。
- 2つのファイルを比較して空白を無視するにはどうすればよいですか?
- コマンドラインでは、
diff -w old.txt new.txtが空白の差異を無視し、diff -bが空白の量の変化を無視します。ブラウザでは、貼り付ける前に末尾のスペースをトリムして改行コードを正規化してください。それらがdiffを最も散らかしやすい空白の変更だからです。目標は、意味を変える編集だけを残すことです。 - テキストの比較とコードの比較の違いは何ですか?
- 仕組みは同じです。どちらも一致する行を揃え、残りをフラグとして立てます。違いは何が本物の変更とみなされるかです。散文では、単語が1つ動いただけでも、段落が再整形されると大きな編集のように見えます。コードでは、インデントや移動した関数が重要です。JSON比較のようなフォーマットを認識したビューや言語を認識したエディタは、構造化ファイルのそのノイズを減らします。
試してみませんか?2つのファイルを テキスト比較ツールに貼り付けて、何が変わったか確認しましょう。