テキスト差分比較
このツールについて
使い方
左右のテキストエリアにそれぞれテキストを入力すると、行単位で差分をハイライト表示します。
表示モード
「サイドバイサイド」は左右に並べて差分を表示します。 「インライン」は1カラムで差分を表示し、追加行には + マーク、削除行には - マークを付けます。
空白無視
「空白を無視」を有効にすると、行内のスペース・タブの違いを無視して比較します。 インデントの違いだけを除外したい場合に便利です。
空行無視
「空行を無視」を有効にすると、空行を比較対象から除外し、差分表示にも空行は含まれません。 末尾に改行だけ追加されたケースや、見栄えのための空行挿入を差分として扱いたくない場合に便利です。 「空白を無視」と組み合わせると、空白のみで構成された行も空行として扱われます。
よくある質問
- Q. 比較対象のテキストはどこで処理されますか?
- A. 比較処理はすべてブラウザ内で実行され、テキストが外部に送信されることはありません。ソースコードや業務文書など機密情報を含むテキストもそのまま貼り付けて比較できます。
- Q. 行内の単語単位で差分を表示できますか?
- A. このツールは行単位の比較を基本としています。1行内の細かな違いを確認したい場合は、改行位置を揃えてから比較するか、別途 word-diff 系のツールをご利用ください。
- Q. 大きなファイルでも比較できますか?
- A. 数千行程度であれば問題なく処理できます。数万行を超えるとブラウザの動作が重くなる場合があるため、必要な箇所を抜粋しての比較をおすすめします。
- Q. 改行コード (LF / CRLF) の違いも差分として表示されますか?
- A. 表示上は同じ行として扱われますが、内部の比較で差として現れる場合があります。事前にエディタで改行コードを統一すると、ノイズのない差分結果になります。
- Q. コピーした「+/- 付き」テキストはどこで使えますか?
- A. GitHub の Issue や Pull Request、Slack、Markdown 文書のコードブロックに貼り付けると、変更点を視覚的に伝えやすくなります。
豆知識
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)
このツールの更新履歴
テキスト差分比較ツールを公開
2 つのテキストの差分をサイドバイサイド・インラインで表示します。