コード差分チェッカー
変更前と変更後のコードを貼り付けて、追加・削除された行を行頭の「+」「-」、行の背景色、2列の行番号で示すコード差分チェッカーです。統合表示と左右並べを切り替えられ、タブ幅の選択や空白・大文字小文字の違いの無視に対応し、unified diff形式の比較結果をそのままコピーできます。入力した内容は端末の外に送信されません。
ツール
0文字
0文字
表示形式
タブ幅
文脈行数
仕様
本ツールの仕様は以下の通りです:
- 比較の単位: 変更前と変更後のコードを行単位で比較し、追加された行、削除された行、変更のない行を判定します。差分の計算にはMyersの差分アルゴリズム(jsdiff)を使います。計算の方法はテキスト差分比較と同じです
- 表示形式: 初期表示は「統合」です。「統合」は1列で、変更前と変更後の行番号を2列に並べて表示します。「左右並べ」は左に変更前、右に変更後を表示し、組になった削除行と追加行を同じ高さに並べます。行番号は1から数えます。表示形式はすぐに切り替わり、「リセットする」を押すと「統合」に戻ります
- 色と記号(統合): 追加された行は緑系の背景で行頭に「+」、削除された行は赤系の背景で行頭に「-」を表示します。変更のない行は色を付けず、行頭は空白です。削除された行は変更前の行番号だけ、追加された行は変更後の行番号だけを表示します
- 色と記号(左右並べ): 行に背景色は付けず、行頭の「+」「-」も表示しません。変更のあった行は、行番号を赤系の背景にします。追加された文字は緑系、削除された文字は赤系の背景に下線を付けます。片側にしかない行の反対側は、行番号のない灰色の空欄になります
- 行内の強調: 同じ変更箇所の中で、削除された行と追加された行を先頭から1行ずつ組にし、組になった行(変更された行)は違う文字を濃い背景と下線で強調します。強調は文字単位(Unicodeのコードポイント単位)で、単語単位ではありません
- 等幅フォントとタブ幅: 入力欄と比較結果は等幅フォントで表示します。タブ文字の表示幅は2文字分、4文字分、8文字分から選べ、初期値は4文字分です。タブ幅は比較結果とunified diffの見た目だけを変え、比較の結果やコピーされるテキストは変わりません。タブ幅の変更はすぐに反映されます
- シンタックスハイライト: プログラミング言語ごとの色分けには対応していません
- 空白の違いを無視: オンにすると、行頭と行末の空白を除き、行の中で連続した空白を1つとみなして比較します。対象の空白は半角スペース、タブ、全角スペースです。行頭の空白も無視するため、インデントの深さだけが違う行は差分になりません。統合の表示とunified diffには変更後の元の行を、左右並べの左側には変更前の元の行をそのまま表示します
- 大文字小文字を無視: オンにすると、大文字と小文字を区別せずに比較します。表示は元の文字のままです
- 集計: 追加、削除、変更なしの行数、変更前と変更後の行数、差分箇所の数を表示します。変更された行は、削除1行と追加1行として数えます。差分箇所は、続けて変更された行のまとまりの数です
- unified diff: 差分があるときは、比較結果の下に「unified diff」として常に表示し、全体をコピーできます。1行目に「--- before」、2行目に「+++ after」を出力し、続けて変更箇所ごとに「@@ -開始行,行数 +開始行,行数 @@」の見出しと、行頭に「+」「-」「空白」を付けた行を出力します。行数が1のときは「,行数」を省略し、行数が0のときの開始行は直前の行の番号になります(GNU diffと同じ形式です)。差分の前後に付ける変更のない行は3行で、「差分のある箇所だけ表示」をオンにしたときは選んだ文脈行数になります。間にある変更のない行が文脈行数の2倍以下のときは、1つの見出しにまとめます
- 差分のある箇所だけ表示: オンにすると、差分の前後に文脈行数(0、1、3、5、10行から選択。初期値は3行)の行だけを残し、間を「… N行省略」の行に折りたたみます
- 改行の扱い: 改行コード(CRLFとLF)の違いは比較しません。最後の行の末尾の改行は行の終わりとして扱うため、末尾の改行の有無だけが違うコードは差分になりません。unified diffに末尾の改行がないことを示す行は出力しません
- 上限: 入力できるのは、変更前と変更後それぞれ100000文字、5000行までです。上限を超えると「比較する」ボタンを押せません(入力は切り捨てません)。差分の表示は3000行までで、超えた分は省略します(unified diffには全件が含まれます)。組になった行(変更された行)のうち、10000文字を超える行や違いの大きい行は、行内の強調を省略します
- 処理時間の上限: 差分の計算はブラウザのバックグラウンド処理(Web Worker)で行い、10秒を超えた場合は中止します
- 処理方式: ブラウザ内で処理し、入力内容はサーバーに送信しません
使い方
本ツールの使い方は以下の通りです:
- 「変更前のコード」欄に比較元のコード、「変更後のコード」欄に比較先のコードを貼り付けます。片方が空でも比較できます(すべての行が追加または削除になります)。
- 必要に応じて「空白の違いを無視」「大文字小文字を無視」をオンにします。
- 「比較する」ボタンをクリックします。
- 下部に結果が表示されます。
- 集計:追加、削除、変更なしの行数と、差分箇所の数が表示されます。違いがないときは「差分はありません」と表示されます。
- 比較結果:初期表示の「統合」では、追加された行は緑系で行頭に「+」、削除された行は赤系で行頭に「-」が付き、左に変更前と変更後の行番号が並びます。「左右並べ」に切り替えると、左に変更前、右に変更後が並びます。
- unified diff:差分があるときは、比較結果の下に、差分をunified diff形式のテキストで常に表示します。
- 「表示形式」で「統合」と「左右並べ」を切り替えられます。初期値は「統合」です。「タブ幅」で、タブ文字の表示幅を2、4、8文字分から選べます。「差分のある箇所だけ表示」をオンにすると、差分の前後の行だけを残して、変更のない行を折りたたみます。前後に残す行数は「文脈行数」で選べます。表示形式、タブ幅、差分のある箇所だけ表示、文脈行数の設定は、すぐに反映されます。
- 「空白の違いを無視」「大文字小文字を無視」を変えた後は、再度「比較する」ボタンをクリックすると反映されます。
- 必要に応じて以下を選択することができます。
- コピーボタン(「unified diff」の見出しの下、説明文の右にあるアイコン)
- unified diffのテキスト全体をクリップボードにコピーできます。コピーできると、アイコンがチェックマークに変わります。
- 「リセットする」ボタン
- 入力内容と結果を消去し、オプションを初期値に、表示形式を「統合」に、タブ幅を4文字分に戻します。
- コピーボタン(「unified diff」の見出しの下、説明文の右にあるアイコン)
※ 空白の違いを無視すると、インデントの深さだけが違う行も差分になりません。
※ 改行コード(CRLFとLF)の違いは比較されません。
※ 処理に時間がかかる場合(10秒を超えた場合)は中止され、エラーが表示されます。コードを短くするか、分けて比較してください。
※ 入力した内容はブラウザ内で処理され、サーバーには送信されません。