テキスト差分比較
このツールについて
使い方
左右のテキストエリアにそれぞれテキストを入力すると、行単位で差分をハイライト表示します。
表示モード
「サイドバイサイド」は左右に並べて差分を表示します。 「インライン」は1カラムで差分を表示し、追加行には + マーク、削除行には - マークを付けます。
空白無視
「空白を無視」を有効にすると、行内のスペース・タブの違いを無視して比較します。 インデントの違いだけを除外したい場合に便利です。
空行無視
「空行を無視」を有効にすると、空行を比較対象から除外し、差分表示にも空行は含まれません。 末尾に改行だけ追加されたケースや、見栄えのための空行挿入を差分として扱いたくない場合に便利です。 「空白を無視」と組み合わせると、空白のみで構成された行も空行として扱われます。
diff の歴史
Unix の diff コマンドは1974年に Douglas McIlroy が Hunt-McIlroy アルゴリズムをベースに実装しました。 テキストファイルの差分を効率的に表示するこのツールは、 ソフトウェア開発のワークフローに欠かせない存在となりました。
Myers アルゴリズム
1986年に Eugene Myers が発表した差分アルゴリズムは、 最小編集距離を O((M+N)D) の計算量で求めることができます。 Git の内部差分エンジンにも採用されており、 変更が少ない場合に特に高速に動作します。
diff の応用
差分比較の技術はバージョン管理 (Git) だけでなく、 DNA 配列のアラインメント (生物情報学)、自然言語の校正ツール、 データベースのレプリケーション同期など、 幅広い分野で活用されています。
- An O(ND) Difference Algorithm and Its Variations - Eugene W. Myers
Git 等で使われる差分アルゴリズム (Myers Diff) の原論文
- Git - Documentation
バージョン管理システム Git の公式ドキュメント (git diff 等)
- Longest common subsequence problem - Wikipedia
差分計算の基礎となる最長共通部分列問題 (LCS)