ToolActToolAct

テキスト比較ツール

元のテキストOLD
1
新しいテキストNEW
1
0 行追加0 行削除
UTF-8

テキスト比較とは?

テキスト差分ツールは、2 つのテキストを比較し、追加、削除、変更、未変更の行や部分を分かりやすく示すツールです。コード片、設定ファイル、翻訳、契約書の草案、Markdown 文書、プロンプトの版、リリースノート、ログ抜粋などを、左右で目視確認する負担を減らして確認できます。長い文章の中に小さな編集が紛れている場合や、空白、句読点、順序、書式が意図せず変わった可能性がある場合に特に有用です。ただし差分は内容の正しさを判断しません。どこが違うかを明確にし、レビューを集中させるための補助です。

使い方

使い方

  1. 左側の入力ボックスに元のテキストを貼り付けます
  2. 右側の入力ボックスに変更後のテキストを貼り付けます
  3. システムが自動的に差分を計算してハイライトし、ステータスバーに追加・削除行数が表示されます

レビューのヒント

  • 実際の変更が内容の場合は、比較前に改行コードと空白を正規化してください。
  • コードや法的文書では、ハイライトされた変更を手動で確認してください。自動差分は差異を表示するのみで、意図や正当性は判断しません。

利用シーン

2つのテキストを1行ずつ比較元のテキストと変更後のテキストを並列エディタに貼り付けると、動的計画法の編集距離アプローチで行差分を計算します。追加行は右側でハイライトされ、削除行は左側でハイライトされます。ステータス行には追加・削除行数が表示され、変更の規模を一目で把握できます。
Git ワークフローなしで小さな編集をレビュー元のテキストと新しいテキストのパネルには行番号、クリア・ペーストアクション、追加・削除行数のステータスが含まれます。リポジトリ外の翻訳、設定スニペット、生成テキスト、コピーしたメモの比較に便利です。ブラウザでの簡易差分は、コミット履歴ではなくコンテンツに集中させます。
構造的な変化を素早く発見比較は行レベルで動作するため、挿入された行と削除された行が強調され、文字レベルの誤字には弱いです。段落、リスト、JSON フラグメント、ドキュメントセクション、複数行の出力に最適です。文字レベルの校正には、結果を別の文字レベル差分やスペルチェッカーと組み合わせてください。
マージ前にプロンプトや設定の変更をレビュー以前のプロンプトと新しいプロンプトを2つのパネルに貼り付けると、どの行が追加、削除、並べ替えされたかを正確に確認できます。バージョン間で温度やシステムメッセージ、指示ブロックが変更された場合に、全文を再読するより高速です。行レベルビューは、単語数比較では見逃すセクションの誤った移動を検出します。
Myers アルゴリズムと LCS で生成された差分を監査内部では、差分エンジンは最長共通部分列(LCS)上で Myers O(ND) アルゴリズムを実行して編集スクリプトを生成し、セマンティッククリーンアップを適用します。これにより、単語境界のシフト(例:2行にまたがる文)は2つの隣接する赤/緑ブロックではなく1つの変更行に collapse します。結果は通常の行差分として読み取りますが、LCS ベースのため、サイドバイサイドビューには最小限の編集セットが表示されます。

仕組み

行レベルの差分比較は最長共通部分列(LCS)問題に基づいています。2つの行シーケンス A と B が与えられたとき、両方に同じ相対順序で出現する最長のシーケンスを見つけます。LCS に含まれないものはすべて、挿入(B にあるが A にない)または削除(A にあるが B にない)であり、これはサイドバイサイドビューで表示される赤と緑の行の集合と正確に対応します。素朴な LCS 動的計画法テーブルは O(M × N) の時間と空間を必要とします。ここで M と N は2つの入力の行数です。 実際には、diff エンジンは Myers 差分アルゴリズム(Eugene Myers、1986年)を使用しており、同じ問題を O((M + N) × D) の時間で解きます。D は2つのファイル間の編集距離です。大部分が同一の2つのファイルでは D が小さいため、Myers は完全な DP テーブルに比べて大幅に高速です。Git のデフォルトの diff バックエンド、GitHub の Web 差分ビュー、ほとんどの IDE の diff パネルはすべて、まさにこの理由から Myers またはその派生アルゴリズム(patience diff、histogram diff)を使用しています。Patience diff はさらに一意に出現する行を優先的にアライメントするため、コードブロックが移動された場合により読みやすいハンクを生成します。 出力は等価/挿入/削除操作のシーケンスであり、CLI ツールでは unified diff(@@ -m,n +p,q @@ ハンクヘッダーと各行に +/- プレフィックス)として、Web UI ではサイドバイサイドの色付き行として描画されます。文字レベルや単語レベルの差分は、より細粒度のシーケンスに同じアルゴリズムを適用したもので、置換を1つの操作としてカウントする必要がある場合は Levenshtein 距離(挿入 + 削除 + 置換コスト)と組み合わせることがあります。Neil Fraser による diff-match-patch ライブラリは、Web ベースの文字レベル差分の一般的なリファレンス実装です。

  • LCS の基礎: 2つの行配列の最長共通部分列が変更されていない行を定義。それ以外はすべて挿入または削除
  • Myers 差分(1986年): O((M + N) × D) の時間。D は編集距離。Git、GitHub、ほとんどの IDE の diff ビューのデフォルトバックエンド
  • 素朴な DP: O(M × N) の時間と空間。小規模な入力には問題ないが、二次関数的なメモリ使用量により大きなファイルには非実用的
  • Patience diff: 一意に出現する行を優先的にアライメント。移動や並べ替えられたブロックに対してよりクリーンなハンクを生成
  • 出力形式: CLI 用の @@ -m,n +p,q @@ ハンクヘッダー付き unified diff。Web UI 用のサイドバイサイド色付き行
  • 粒度: 行/単語/文字の差分は同じアルゴリズムを異なる入力の分割に適用
  • Levenshtein 距離: 挿入 + 削除 + 置換をカウント。diff-match-patch は Web ライブラリのリファレンス実装

使用例

段落中の 1 単語の変更を発見

元のテキスト:
  The server starts on port 3000 by default.

変更後:
  The server starts on port 8080 by default.

結果: 1 行の変更(3000 -> 8080)

設定ブロックの 2 バージョンを比較

元のテキスト:                  変更後:
  timeout: 30                     timeout: 60
  retries: 3                      retries: 3
  debug: false                    debug: true
                                  log_level: info

結果: 2 行追加、2 行削除

リリースノートの前後を差分比較

削除(赤):
  - Fixed login redirect on Safari 16

追加(緑):
  - Fixed login redirect on Safari 16 and 17
  - Added dark mode preference sync

結果: 2 行追加、1 行削除

JSON のキー並び替えを検出

元のテキスト:                  変更後:
  { "name": "alice",              { "id": 1,
    "id": 1,                        "name": "alice",
    "role": "admin" }               "role": "admin" }

結果: 2 行の変更(キー順が異なるが値は同一)

よくある質問

どのような差分が表示されますか?

行レベルの差分です。本ページは2つのパネルを並べて表示します。左側では削除された行が赤でハイライトされ、右側では追加された行が緑でハイライトされます。行番号で変更位置を特定でき、ステータスバーには追加・削除された行数が表示されます。

どの差分アルゴリズムを使用していますか?

本ページは行レベルの編集スクリプトを計算するために Longest Common Subsequence(LCS)アルゴリズムを使用しています。一般的な文書サイズであれば入力中もリアルタイムに動作します。このアルゴリズムは、左のテキストを右のテキストに変換するための最短の挿入と削除のシーケンスを求めます。

git diff と表示が違うのはなぜ?

Git は独自の差分実装と設定可能なアルゴリズムを使用しています。本ページはブラウザ内で完結する JavaScript ベースの LCS 差分を使用します。出力フォーマットや hunk の境界が git diff とわずかに異なる場合がありますが、行レベルのテキスト比較における編集検出は正しく機能します。

段落や文の中だけで差分を取れますか?

はい。各バージョンを左右にそれぞれ貼り付けてください。本ページでは変更された行内の文字単位ハイライトも提供しており、これにより「foo を bar にリネーム」が無関係な2変更ではなくインライン置換として表示されます。

空白は無視されますか?

いいえ。差分はデフォルトで空白に敏感です。空白の違い(行末スペース、追加の空行、異なる改行コード)は変更として表示されます。

JSON や XML を構造的に比較できますか?

純粋なテキスト差分は行ベースです。キー単位で JSON を比較したい場合(同じ値で位置 1 から 3 に移動したキー 'a' = 変更なしと判定)、JSON 対応の差分ツール(jsondiffpatch、json-diff など)を使用してください。本ページはあくまでテキスト比較用です。

テキストはアップロードされますか?

いいえ。差分処理はブラウザ内で実行されます。両方の入力はローカルで処理され、送信されません。

関連ツール

正規表現テストツール

オンライン正規表現テストツール。リアルタイムマッチング、結果をハイライト表示。よく使う正規表現ライブラリ対応、正規表現のデバッグと検証に役立ちます。

大文字小文字変換ツール

オンライン大文字・小文字変換ツール。キャメルケース、スネークケース、ケバブケース、定数など複数命名フォーマットの相互変換。プログラマー必須、ワンクリックで変数名フォーマットを変換。

テキスト重複除去ツール

無料オンラインテキスト重複除去ツール、行・単語・文・段落モード対応。大文字小文字区別や順序保持オプションで重複コンテンツを削除。

文字数カウントツール

オンライン文字数カウントツール。文字数、日本語文字数、英単語数、段落数、読書時間をリアルタイム集計。ライティング必須アシスタント。

Markdown エディタ

オンラインMarkdownエディタ。リアルタイムプレビュー、シンタックスハイライト、HTMLエクスポート。テーブル、コードブロック、フローチャートなど拡張構文対応、ライティング効率向上。

JSON フォーマットツール

オンラインJSONフォーマットツール。シンタックスハイライト、エラー検出、圧縮・美化をサポート。ワンクリックでJSONデータを美化し、フォーマットエラーを素早く特定し、開発効率を向上させます。