テキスト差分チェッカー
2つのテキストを行単位で比較し、追加・削除・変更なしの行をハイライト — ブラウザ内で完結。
入力
結果
テキスト差分とは?
テキスト差分(diff)は2つのテキスト間の比較であり、何が追加、削除、そのまま変更されたかを示します。「diff」という言葉は「difference(差異)」に由来し、この形式は1970年代からプログラミングの定番です。2つの文書を並べて目で変更を探す代わりに、差分アルゴリズムがそれらを整列し、異なるすべての行をマークするので、レビュー者は正確な編集を一目で確認できます。
典型的な差分は各行に接頭辞を付けます:プラス記号(+)は新バージョンにのみ存在する行、マイナス記号(-)は旧バージョンにのみ存在する行、空白は同一の行を示します。このコンパクトな表記により、1ページで編集の完全な履歴を表現でき、これがあなたが目にするすべてのコードレビューツール、パッチファイル、マージリクエストの基礎です。
一般的な差分アルゴリズム
差分を生成できるアルゴリズムはいくつかあり、主に2つのテキスト間で一致する最長行シーケンスを見つける方法が異なります。古典的なHunt–McIlroyアルゴリズムは最長共通部分列(LCS)を構築し、その外側をすべて追加または削除として扱います。これが元のUnix diffコマンドが使用した方法で、人間が読みやすいクリーンで最小の出力を生成します。
新しいバリアントは異なる目標を最適化します。Gitが使用するMyersアルゴリズムは最短編集スクリプトを見つけ、典型的なソースコードで非常に高速です。ヒストグラムおよびpatienceアルゴリズムは関数シグネチャのような「アンカー」行を安定に保とうとし、プログラマーが実際に考える方法により近い差分を生成します。本ツールはLCSベースのアプローチを使用し、推論が容易で散文、設定ファイル、ソースコードのいずれにも適しています。
差分チェッカーを使う場面
差分チェッカーが時間を節約しミスを防ぐ日常的な場面は数多くあります。最も一般的なものは以下の通りです:
- 編集のレビュー。 契約書、記事、メールの前後バージョンを貼り付けて何が変更されたかを正確に確認し、編集を見逃さないようにする。
- 設定ファイルの比較。 ある環境が別の環境と異なる動作をする理由をデバッグする際、2つのバージョンの設定ファイル間の差を見つける。
- 学生の課題確認。 提出された小論文と以前の下書きを比較し、議論がどう発展したかを確認する。
- ノートの統合。 2人がオフラインで同じ文書を編集した場合、差分が各自の追加内容を示すので意図的に統合できる。
- データエクスポートの監査。 2つのCSVやJSONダンプを差分比較し、エクスポート間でどの行やキーが変化したかを見つける。
2つのテキスト間のギャップ——単に等しいかどうかではなく、どこでどのように異なるか——を理解する必要がある場合、差分チェッカーが適切なツールです。
バージョン管理における差分
Git、Mercurial、Subversionのようなバージョン管理システムは差分を中心に構築されています。各コミットはスナップショットとして保存されますが、システムはスナップショット間の差分を表示し、変更が実際に何をするかをレビューできるようにします。プルリクエストやマージリクエストは本質的に、人間が承認前に読む差分です。本ツールで見るのと同じ記法——追加行は緑、削除行は赤——がコードレビュー者が一日中見つめているものです。
差分はコラボレーションの中核であるため、読むことを学ぶことはコードや構造化テキストを扱うすべての人にとって中核スキルです。良い差分は変更を自己文書化します:追加行は作者の意図を示し、削除行は何を置き換えたかを示し、周囲の変更なし行が変更を理解可能にするコンテキストを提供します。本ツールはリポジトリなしで、任意の2つのテキストに同じ明確さを提供します。
2つのテキストを比較する方法
本ツールで2つのテキストを比較するのは数秒で、完全にブラウザ内で実行されます。以下の3ステップに従ってください:
- 元のテキストを貼り付け。 左側の「元のテキスト」ボックスに最初のバージョンを貼り付けます。
- 変更後テキストを貼り付け。 「変更後テキスト」ボックスに2番目のバージョンを貼り付けます。
- 比較。 「比較」をクリックし、右側の結果を読みます:緑行が追加、赤行が削除、灰色行が変更なし。「コピー」をクリックして差分をプレーンテキストとしてコピーします。
比較は純粋なJavaScriptとして自分のデバイス上で実行されるため、テキストはブラウザから離れません。これによりツールは機密文書、契約書、第三者サービスにアップロードできないソースコードにも安全に使用できます。
この差分チェッカーは無料ですか?
はい、完全に無料で、登録、透かしなし、デバイスのメモリ以外に制限はありません。
テキストはサーバーにアップロードされますか?
いいえ。比較は完全にJavaScriptとしてブラウザ内で実行されるため、テキストはデバイスから離れません。これにより機密文書にも安全に使用できます。
どのアルゴリズムを使用しますか?
最長共通部分列(LCS)アルゴリズムを使用し、古典的Unix diffと同じ系統です。最長の一致行シーケンスを見つけ、残りをすべて追加または削除としてマークします。
大きなテキストを処理できますか?
数千行を快適に処理します。LCSアルゴリズムはメモリ使用量が両側の行数の積に比例するため、非常に大きな入力では遅くなる可能性がありますが、日常的な文書、ソースファイル、設定は瞬時に比較できます。