Diff Checker|テキスト差分検出
2つのテキストを並べて比較し、追加・削除・変更なし行を色分けで即時ハイライト表示します。文字レベルの精度で差分を検出し、ブラウザ内処理でデータは外部送信されません。アカウント不要。
Diff Checkerとは?
Diff Checkerは、2つのテキストブロックを比較してすべての差分をハイライト表示する無料のオンラインツールです。左側に元のテキストを、右側に変更後のバージョンを貼り付けると、追加・削除・変更なしの箇所が文字レベルまで即座に表示されます。
このツールは、開発者・ライター・変更を確認する必要があるすべての人が直面する共通の問題を解決します。2つの類似したテキストを手動で読み比べて差分を見つけるのは、時間がかかりエラーが発生しやすい作業です。Diff Checkerは、プロのコードレビューシステムで使われているdiff-match-patchアルゴリズムを使ってその作業を自動化します。処理はブラウザ内で完全に行われ、テキストがサーバーに送信されることはないため、機密文書・ソースコード・独自データを安全に扱えます。
主な機能
- 横並びテキスト比較 — デフォルト表示では左にOriginal、右にModifiedを配置し、どの行が分岐したかを視覚的に追えます。両方のペインはスクロール可能で、独立してサイズ変更できます。
- 行ごとのdiffハイライト — 各行は色分け表示されます:挿入は緑の背景、削除は赤の背景、変更なしは背景なし。両ペインのすべての行に行番号が表示されます。
- 文字レベルのdiff検出 — 基盤となる
diff-match-patchライブラリは、生のdiffを計算した後にセマンティッククリーンアップパス(diff_cleanupSemantic)を実行します。これにより、単語を任意に分割するのではなく、関連する変更を最も読みやすい単位にグループ化します。 - インラインビュー切替 — ビュー切替ボタンをクリックすると、2カラムレイアウトから削除と挿入をドキュメント順に交互に表示する単一ストリームに切り替えられます。横並びの整列よりも順序を重視する場合に便利です。
- テキストの入れ替え — ワンクリックで両ペインの内容を交換し、どのバージョンを元のテキストとして扱うかを反転できます。
- diff結果のコピー — unified-diffフォーマット(
+、-、またはスペース2つのプレフィックス付き行)でdiffをコピーし、チケット・メール・commitメッセージへの貼り付けに対応します。 - ライブ文字統計 — ステータスバーに追加・削除・変更なしの文字数合計がリアルタイムで表示されます。
Diff Checkerの使い方
ステップ1:元のテキストを貼り付ける
「Text A」とラベルされた左のtextareaをクリックし、比較元となるコンテンツの基準バージョンを貼り付けるか入力します。textareaはプレーンテキスト・コード・設定ファイル・JSON・その他の文字ベースコンテンツを受け付けます。
ステップ2:変更後のテキストを貼り付ける
「Text B」とラベルされた右のtextareaをクリックし、新しい版または変更された版を貼り付けます。両フィールドにコンテンツが入力されると同時にdiffの計算が始まります。送信ボタンを押す必要はありません。
ステップ3:diff出力を確認する
アクションバーの下にある「Differences」パネルまでスクロールします。横並びモードでは以下が表示されます:
- 左のOriginalペイン — 削除された行は赤で表示
- 右のModifiedペイン — 追加された行は緑で表示
- 両バージョンに存在する行は背景色なしで表示
各行の左端に行番号が表示されます。番号はペインごとに独立しています。元のテキストから3行が削除された場合、そのポイントではModifiedペインの番号がOriginalペインより小さくなります。
例:JSON設定の2つのバージョンの比較:
Text A (original):
{
"timeout": 30,
"retries": 3,
"endpoint": "https://api.example.com/v1"
}
Text B (modified):
{
"timeout": 60,
"retries": 5,
"endpoint": "https://api.example.com/v2",
"auth": "bearer"
}
diff出力では30 → 60、3 → 5、v1 → v2、新たに挿入された"auth"行が緑でハイライトされます。
ステップ4:必要に応じてインラインビューに切り替える
アクションバーのビュー切替ボタンをクリックします。横並びモード時はラベルに「Inline」と表示され(クリックでインラインに切替)、インラインモード時は「Side by Side」と表示されます。インラインビューでは、すべての行がドキュメント順に表示されます:削除された行は赤、その直後に置換行が緑で続きます。
ステップ5:コピーまたはクリア
「Copy Diff」をクリックするとunified diffフォーマットで結果がコピーされます。削除セグメントには- 、挿入セグメントには+ のプレフィックスが付き、patchツールやドキュメントとの互換性があります。「Clear」をクリックすると両テキストエリアが空になり、新しい比較を開始できます。比較の方向を逆にするには「Swap」を使用します。
実用例
デプロイ前の設定変更の確認
DevOpsエンジニアがKubernetes ConfigMapの2つのバージョンを持ち、本番環境に昇格する前にリソース制限だけが変更されたことを確認する必要があります。現在のYAMLをText Aに、提案されたYAMLをText Bに貼り付けます。diffは変更された2行(cpu: "250m" → cpu: "500m" と memory: "256Mi" → memory: "512Mi")を数十の変更なし行と対比してハイライトし、変更範囲を数秒で確認できます。
契約書改訂の監査
法律事務スタッフが改訂されたサービス契約書を受け取り、署名済みの原本からすべての変更を特定する必要があります。両バージョンをdiff checkerに貼り付けると、すべての変更フレーズが赤と緑でハイライトされます。インラインビューに切り替えると、文書を順番に読んで重要な条項が密かに書き換えられていないか確認しやすくなります。
予期しないテスト失敗のデバッグ
同僚がfeatureブランチをマージした後、開発者のtest suiteが失敗し始めました。テストfixureから期待される出力文字列をText Aに、test runnerからの実際の出力をText Bにコピーします。文字レベルのdiffにより、通常のテキストエディタでは見えない末尾の改行の違いが判明します。手動では発見に時間がかかるものが素早く修正できます。
ヒントとベストプラクティス
文字統計で変更の範囲を把握する。 アクションバー右側の緑の+N addedと赤の -N removedカウンターは行ではなく文字を計測します。挿入に対して削除が多い場合、コンテンツが追加ではなく書き直された可能性があります。diff全体を読む前の素早い指標になります。
インラインビューは説明文テキストに適している。 散文・ドキュメント・法的文書を比較する場合、インラインビューは読書の流れを保ちます。横並びビューはライン整列が重要なコードに適しています。
空白文字も重要。 diffエンジンはスペースとタブを意味のある文字として扱います。コードで予期しない差分が出る場合、エディタが末尾の空白を追加したり、インデントをタブからスペースに変更していないか確認してください。
逆パッチを生成するにはSwapを使う。 変更を元に戻したい場合は、Swapをクリックしてテキスト Aと Bを反転させます。結果のdiffは「元に戻すために何を変更すればよいか」として読めます。
textareaのサイズ変更。 両入力ペインの右下にresize-yハンドルがあります。長いドキュメントのスクロールを減らすために下にドラッグしてください。
よくある問題とトラブルシューティング
「diff出力ですべての行が変更済みと表示される。」 これは通常、2つのテキストが異なる行末(CRLF vs LF)を使用していることを意味します。Windowsアプリは\r\nを生成し、Unixツールは\nを生成することがよくあります。比較する前に行末を正規化するプレーンテキストエディタでテキストを一度貼り付けてください。
「'Copy Diff'ボタンが無効になっている。」 このボタンはdiffResultがnull以外の場合にのみ有効です。つまり、少なくとも1つのテキストフィールドにコンテンツが必要です。両フィールドにテキストを貼り付けていることを確認してください。
「ペイン間で行番号がずれているように見える。」 これは期待される動作であり、バグではありません。元のテキストから行が削除されたり、変更バージョンに行が挿入されたりすると、各ペインの番号付けは独立して数えます。番号はその文書バージョン内の実際の行位置を反映しています。
「長い行が出力ペインからはみ出す。」 出力は非常に長い行を処理するためにwhitespace-pre-wrapとbreak-allを使用します。単一の行が依然として表示領域を超えて延びているように見える場合は、出力ペイン内の横スクロールを使うか、インラインビューに切り替えてください。
「diffが予期しない箇所で単語を分割している。」 diff_cleanupSemanticパスは人間が読みやすい境界を生成するように変更をグループ化しますが、非常に短い単語や繰り返し文字では依然として細かな分割が生じることがあります。これはdiffアルゴリズムの特性であり、エラーではありません。
プライバシーとセキュリティ
すべての比較処理はdiff-match-patch JavaScriptライブラリを使用してブラウザ内でローカルに実行されます。Text AもText Bもどの時点でも一切のサーバーに送信されません。ページが読み込まれると、インターネット接続なしで動作します。ソースコード・認証情報ファイル・法的文書・医療記録・デバイスから外部に出てはならないその他の機密コンテンツへの使用でも安全です。
よくある質問
Diff Checkerは無料ですか? はい、使用制限なしで完全無料です。ツールのどの部分を使用するにも、アカウント・サブスクリプション・支払いは一切不要です。
オフラインで動作しますか? ページが読み込まれると、比較エンジンはネットワークリクエストなしでブラウザ内で完全に動作します。インターネットから切断しても、テキスト比較を中断なく続けられます。
データは安全ですか? テキストがブラウザを離れることはありません。diffはJavaScriptを使ってブラウザ内で計算されるため、コンテンツはGlyph Widgetsのサーバーや第三者に送信されません。機密ソースコード・契約書・機密設定ファイルへの使用でも安全です。
処理できるテキストの最大サイズは? ツールによる厳密な制限はありません。実際の制約はブラウザのメモリです。数メガバイトまでのテキストはすばやく比較されます;非常に大きなファイル(数十メガバイト)はデバイスによってはページが遅くなることがあります。
コードファイルを比較できますか? はい。JavaScript・Python・SQL・HTML・CSS・JSON・YAML・Markdown・設定ファイルを含むあらゆるプレーンテキストコンテンツを処理します。言語固有の解析は適用しません。すべての入力をプレーンテキストとして扱うため、あらゆるファイルタイプで文字単位の正確なdiffが得られます。
横並びビューとインラインビューの違いは? 横並びビューはOriginalを左、Modifiedを右に同時表示し、対応するセクションを一目で比較できます。インラインビューは、変更ポイントで削除・挿入セグメントが順番に表示される単一テキストストリームを表示します。インラインビューは散文に読みやすく、横並びビューはコードに適しています。
「Copy Diff」はどのフォーマットで出力されますか? コピーされたテキストはシンプルなunified diffフォーマットを使用します:- プレフィックスの行は削除、+ プレフィックスの行は挿入、変更なしの行はスペース2つのプレフィックス。このフォーマットはdiffビューワー・ドキュメントツール・patchユーティリティと幅広く互換性があります。
再入力せずに2つのテキストを入れ替えられますか? アクションバーの「Swap」ボタンをクリックしてください。Text AとText Bのコンテンツを即座に交換します。diffは逆方向を反映するよう即座に再計算されます。
移動したブロックを検出できますか?それとも追加と削除のみ? diff-match-patchアルゴリズムは移動したブロックを元の位置での削除と新しい位置での挿入として扱います。専用の「移動」検出モードはありません。
比較を後で使うために保存できますか? ツールはデフォルトではセッション間で比較を保存しません。プレミアムサポーターはHistoryパネルを使用して以前の比較入力を自動的に復元できます。
関連ツール
JSON Formatter — Diff Checkerで2つのバージョンを比較する前にJSONをフォーマットして検証します。
Text Diff — 散文ドキュメントや書き言葉コンテンツの比較に適したテキスト向けバリアント。
JSON Formatter — 結果の空白ノイズを避けるため、diffの前にJSONフォーマットを正規化します。
Diff Checkerを今すぐ試す: Diff Checker