リスト比較ツール(共通行・差分抽出)
2つのテキストリスト(1行1項目)を比較し、両方に共通する行・Aのみの行・Bのみの行を集合演算で自動抽出します。メールリストの突合や在庫リストの重複チェックに便利。比較処理はすべてブラウザ内で完結し、入力内容がサーバーに送信されることはありません。
Tips
- メールマガジンの配信リストと退会済みリストを比較すれば、配信対象から除外すべきアドレスを一括抽出できます。
- 在庫リストと発注リストを比較して、まだ発注していない商品だけを素早く洗い出すといった使い方もできます。
- 各行は前後の空白を自動で除去してから比較するため、コピー&ペースト時に混入した余分なスペースを気にする必要はありません。
- 同じ行が複数回登場していても、結果には重複を除いた一意な行だけが表示され、リストの整理にも役立ちます。
- 「大文字・小文字を区別する」のチェックを外すと、表記ゆれ(Example.com と example.com など)を同一行として扱えます。
よくある質問
余談ですが ― 「集合演算」でリストを比較するという考え方
2つのリストの「違い」を求める方法は一つではありません。テキスト差分(Diff)ツールのような行単位のdiffアルゴリズムは、行の並び順を保ったまま対応関係を探すため、プログラムのソースコードや設定ファイルの変更履歴を追うのに向いています。一方、メールアドレスや在庫コードのようにそもそも順序に意味がないリストを比較する場合は、数学の集合演算(積集合・差集合)で考えた方が直感的です。本ツールは後者の考え方を採用しています。
集合演算における「積集合(intersection)」は両方の集合に共通して含まれる要素、「差集合(difference)」は片方の集合にしか含まれない要素を指します。本ツールの「共通行」は積集合(A∩B)、「Aのみの行」「Bのみの行」はそれぞれ差集合(A−B、B−A)に相当します。数学的には単純な操作ですが、実務では顧客リストの名寄せや配信対象の絞り込みなど幅広い場面で使われています。
実装上の工夫として、本ツールは行を比較する際にJavaScriptのMapオブジェクトを使い、正規化したキー(大文字小文字を区別する場合はそのまま、区別しない場合は小文字化した文字列)ごとに最初に出現した表記を記録しています。これにより、数千行規模のリストでも高速に比較でき、かつ出力される行は元の表記(大文字小文字を含む)をそのまま保持できます。