リスト比較ツール(共通行・差分抽出)

2つのテキストリスト(1行1項目)を比較し、両方に共通する行・Aのみの行・Bのみの行を集合演算で自動抽出します。メールリストの突合や在庫リストの重複チェックに便利。比較処理はすべてブラウザ内で完結し、入力内容がサーバーに送信されることはありません。

リスト比較ツールとは

2つのリストを見比べて「両方にあるもの」「片方にしかないもの」を仕分ける作業は、目でやると必ず見落とします。このツールは1行1項目のテキストを2つ貼り付けるだけで、共通行・Aのみの行・Bのみの行を集合演算で自動的に振り分けます。メールアドレスの突合、在庫リストの照合、名簿の差分確認など、Excelの関数を組まずに済ませたい場面のためのものです。

行の並び順は無視します。同じ内容の行が違う位置にあっても共通行として扱うため、ソート状態が揃っていないリスト同士でも比較できます。前後の空白は自動で取り除き、空行は無視します。重複する行は1つにまとめて数えます。大文字・小文字を区別するかどうかは切り替えられ、区別しない設定でも表示される行は入力どおりの表記のままです。処理はすべてブラウザー内で完結し、貼り付けた内容がサーバーへ送られることはありません。

2つのリストを比較する手順

  1. リストAを貼り付ける 1行につき1項目の形で入力します。スプレッドシートの1列をそのままコピーして貼り付けられます。
  2. リストBを貼り付ける 比較したいもう一方のリストを同じ形式で入れます。行数が違っていても問題ありません。
  3. 大文字・小文字の扱いを決める メールアドレスの突合のように表記ゆれを吸収したい場合は、区別しない設定にします。IDやコードのように厳密に照合したい場合は区別する設定のままにします。
  4. 3つの結果を読む 共通行・Aのみ・Bのみが同時に表示されます。それぞれコピーできるので、そのまま次の作業へ渡せます。

使いこなすためのヒント

  • メールマガジンの配信リストと退会済みリストを比較すれば、配信対象から除外すべきアドレスを一括抽出できます。
  • 在庫リストと発注リストを比較して、まだ発注していない商品だけを素早く洗い出すといった使い方もできます。
  • 各行は前後の空白を自動で除去してから比較するため、コピー&ペースト時に混入した余分なスペースを気にする必要はありません。
  • 同じ行が複数回登場していても、結果には重複を除いた一意な行だけが表示され、リストの整理にも役立ちます。
  • 「大文字・小文字を区別する」のチェックを外すと、表記ゆれ(Example.com と example.com など)を同一行として扱えます。

こんなときに使えます

メール配信リストの突合

配信済みリストと全体リストを比べて未送信の宛先だけを取り出せます。大文字・小文字を区別しない設定にすると、表記ゆれのあるアドレスも同一として扱えます。

在庫リストと棚卸し結果の照合

帳簿上の型番一覧と実地で数えた一覧を比べ、帳簿にあって現物が無いもの・その逆を一度に洗い出せます。

退会者・新規登録者の抽出

先月の会員IDリストと今月のリストを比べると、Aのみが退会者、Bのみが新規登録者になります。

設定ファイルのキー比較

本番と検証環境の環境変数名を並べて、どちらかにしか無いキーを見つけられます。値ではなくキーの有無を確かめたいときに向きます。

リスト比較の用語

共通行(積集合)
AとBの両方に現れる行です。数学の積集合にあたります。並び順が違っていても内容が同じなら共通行になります。
Aのみの行(差集合)
Aにはあるが B には無い行です。A から B を引いた差集合にあたります。
集合演算
重複と順序を考えずに「含まれるか含まれないか」だけで要素を扱う考え方です。本ツールが並び順を無視するのはこのためです。
差分(diff)との違い
差分ツールは行の並びを保ったまま、どこが挿入・削除されたかを示します。順序が入れ替わっただけでも差分として検出されます。 本ツールは順序を無視するため、内容が同じなら共通行として扱います。目的に応じて使い分けてください。
大文字・小文字の区別
区別しない設定では比較時だけ小文字に揃えて照合します。画面に出る行は入力した表記のままなので、元の大文字・小文字が失われることはありません。

よくある質問

Diff比較ツールは2つのテキストを行の並び順を保ったまま1行ずつ照合し、追加・削除された行を検出します。本ツールは並び順を無視し、集合として共通行・片方だけの行を抽出する点が異なります。同じ内容の行が別の順序で並んでいる場合、Diff比較ツールでは差分として検出されますが、本ツールでは共通行として扱われます。

同じ内容の行が複数回入力されていても、比較結果には重複を除いた一意な行として1回だけ表示されます。出現回数を含めた比較には対応していません。

デフォルトでは大文字・小文字を区別して比較します。「大文字・小文字を区別する」のチェックを外すと、Exampleとexampleのような表記の違いを同一の行として扱えます。

前後の空白は自動的に除去され、内容が空になった行(空行)は比較対象から除外されます。空行の有無を気にせずリストを貼り付けられます。

いいえ。比較処理はすべてブラウザ内のJavaScriptで完結し、入力したリストの内容がサーバーに送信されることはありません。メールアドレスなど個人情報を含むリストでも安心してご利用いただけます。
ツールくん

余談ですが ― 「集合演算」でリストを比較するという考え方

2つのリストの「違い」を求める方法は一つではありません。テキスト差分(Diff)ツールのような行単位のdiffアルゴリズムは、行の並び順を保ったまま対応関係を探すため、プログラムのソースコードや設定ファイルの変更履歴を追うのに向いています。一方、メールアドレスや在庫コードのようにそもそも順序に意味がないリストを比較する場合は、数学の集合演算(積集合・差集合)で考えた方が直感的です。本ツールは後者の考え方を採用しています。

集合演算における「積集合(intersection)」は両方の集合に共通して含まれる要素、「差集合(difference)」は片方の集合にしか含まれない要素を指します。本ツールの「共通行」は積集合(A∩B)、「Aのみの行」「Bのみの行」はそれぞれ差集合(A−B、B−A)に相当します。数学的には単純な操作ですが、実務では顧客リストの名寄せや配信対象の絞り込みなど幅広い場面で使われています。

実装上の工夫として、本ツールは行を比較する際にJavaScriptのMapオブジェクトを使い、正規化したキー(大文字小文字を区別する場合はそのまま、区別しない場合は小文字化した文字列)ごとに最初に出現した表記を記録しています。これにより、数千行規模のリストでも高速に比較でき、かつ出力される行は元の表記(大文字小文字を含む)をそのまま保持できます。