文章の違いを比較する

比較する粒度
例を入れて試す:

比較結果

2つの文章を入力すると、ここに違いを表示します。

入力と同時に比較します。Ctrl + Enter で変更後の文章をコピーできます。

日本語の文章を差分比較すると読みにくい理由

差分ツールには、空白で区切った単語ごとに違いを出すものが多くあります。 英語では単語の境目が空白なので読みやすくなりますが、日本語の文章には通常、単語の間に空白がありません。 そのため助詞を1文字直しただけでも、文全体が変更されたように見えてしまいます。

反対に1文字ずつ比較すると、細かな修正は分かる一方で、長い文章では変更箇所が虫食いになりがちです。 このツールでは、行・文・文字の3つから、用途に合う粒度を選べます。単語単位は日本語では安定して使えず、 形態素解析を加えると処理も複雑になるため、扱いません。

粒度の選び方

粒度向いているもの特徴
行コード、ログ、箇条書き改行ごとの変更を追えます
文日本語の文章句点・感嘆符・改行で区切ります。括弧や引用符の内側は特別扱いしない近似です
文字細かな修正、英数字絵文字や結合文字を途中で割らない、見た目に近い単位で比較します

迷ったときの初期値は「文字」です。句点のないコードや箇条書きでも差分を出せるためです。 日本語の段落を読み比べる場合は、「文」に切り替えると変更のまとまりを追いやすくなります。

差分はどう計算しているか

追加・削除の回数が最も少なくなる並びを探す、Myers の差分アルゴリズムを使っています。 置換も「削除して追加」として表示するため、何がなくなり何が加わったかを1つの流れで確認できます。 同じ箇所が長く続くときは、変更の前後3要素だけを残して折り畳みます。

実測では、同一の10万文字を2つ比較した場合は約28ms、完全に異なる1万文字を2つ比較した場合は約1秒でした。 差分が小さいほど速く、全く異なる長文ほど時間がかかります。入力は各10万文字まで、選んだ粒度での要素数は合計2万件までにしています。

うまく表示されない場合