リストル:企業データベース開発日誌 第18話「会社名のない会社」〜「空欄に寛容な設計」の落とし穴。会社名のないデータが名寄せ処理を破壊する直前の気づき〜

リストル:企業データベース開発日誌 第18話「会社名のない会社」〜「空欄に寛容な設計」の落とし穴。会社名のないデータが名寄せ処理を破壊する直前の気づき〜 企業DB開発日誌

💡Listoru(リストル)は、Web上の情報から企業の営業リストを自動で収集・作成するツールです。
この「企業DB開発日誌」では、数ある機能の裏側に隠された、私たちの試行錯誤を綴っていきます。
エラー画面には出ない問題や、データとの静かな対話から見えてきたもの。
正解のない開発現場のリアルな空気を、少しだけおすそ分けさせてください。
今日もリストルの裏側で起きた、ひとつの物語をお届けします。

成果を出す営業リスト3000件が無料で試せる👇
📝営業リスト収集ツール「リストル」
本当に欲しい企業が見つかるか、まずは無料で試してみませんか? ホームページのない企業も含め、最大3,000件まで営業リストを収集できます。

データインポート要件の死角。「空欄に寛容な設計」が許容した異常データ

企業データは、ファイルから取り込むことができます。

これまで使っていた別の道具から書き出したもの。
展示会でいただいた名簿。
自分たちで集めた一覧。

形式はさまざまですが、表の形になっていれば、取り込めます。
このとき、こちらは中身に口を出しません。

住所が途中までしか入っていない。
電話番号が抜けている。
業種が空欄になっている。

そういうデータは、当たり前に来ます。
むしろ、それを埋めるためのツールです。
だから、空欄には寛容でいる。
そう決めていました。
空欄に寛容であること自体は、いまも変えていません。
問題は、どこまで寛容でいるかの線引きでした。

ある日、取り込みの処理を確認していて、手が止まりました。
会社名の欄も、空欄で通ることに気づいたのです。

試しに、会社名だけを空にした行を作って、入れてみました。
どこかで止まるだろう、と思っていました。
さすがに名前が無ければ、何か言われるだろうと。

登録されました。エラーは出ません。
「1件を取り込みました」と表示されます。
一覧を開くと、そこに1行あります。
名前のない行が。

画像

欠損値の大量登録によるサイレントエラーと、データクレンジングの肥大化

住所も、電話番号も、入っています。
名前だけが、ありません。その住所が誰のものなのか、その行からは、もう分かりません。

1件なら、笑い話です。消せばいい。
実際、そのときはそう思いました。
試しに入れたものだから、消して終わりだと。
手が止まったのは、そのあとです。

こちらが試しに1件入れられるということは、お客様も、うっかり1,000件入れられるということでした。
問題は、これが1件で終わらない場面です。
他社のツールから書き出したファイルを想像します。
そのツールでは、会社名にあたる項目の名前が違います。
「取引先名」かもしれない。「顧客名」かもしれない。
「Account Name」かもしれない。

こちらは「会社名」という名前の列を探します。
見つかりません。見つからなければ、その列は空として扱われます。
そのファイルに1,000行あれば、会社名のない会社が、1,000件生まれます。

エラーは出ません。
「1,000件を取り込みました」と表示されます。

処理は、何も間違えていません。
頼まれたとおりに読み、頼まれたとおりに登録して、頼まれたとおりに報告しています。数字だけを見れば、成功です。
そして、この1,000件を消すのは、簡単ではありません。

会社名が空、という条件で消せばいい。
そう思えますが、そう単純にはいきません。
取り込んだあと、名寄せが走っています。
既存の会社に情報が足されているかもしれません。
担当者が割り当てられているかもしれません。
連絡した記録が付いているかもしれません。

取り込んだ直後なら、まとめて戻せます。
1日経つと、他の記録と絡み始めます。
だから、入り口で止めるしかない。
入ってしまえば、後片付けの費用は跳ね上がります。

名寄せアルゴリズムの暴走。「Null(空)」と「Null(空)」の一致判定が生む二次災害

画像

ここで厄介なのは、あとの工程です。

名前のない会社が、名寄せの対象になります。
名寄せは、会社名を手がかりに、同じ会社を探します。
名前が空のものどうしは、どう見えるでしょうか。

会社名が一致している、と見えます。
空と空は、文字として一致します。
住所も空なら、住所も一致します。

つまり、名前のない会社は、たがいに「同じ会社かもしれない」と判定され得ます。名前のない会社が2件あれば、その2件は候補です。
1,000件あれば、どうなるか。

1つの空欄が、統合の判定にまで波及していきます。
判定の側でも、対策を入れました。
空の値どうしは、一致とみなさない。

当たり前のようですが、文字を比べる処理は、素直に書くと一致と判断します。空と空は、同じ文字列です。
「値が無い」ことと「値が同じ」ことは、違います。
機械には、その区別が付きません。

区別を付けるのは、こちらの仕事でした。
この件は、実際に事故が起きた話ではありません。
確認していて、起こり得ることに気づいた話です。
だから、被害の数字はありません。
ただ、他社の書式のファイルを取り込む機能は、このあと実際に使われることになります。

第27話で、その場面が来ます。
そのとき、この穴が塞がっていなければ、1,000件の名前のない会社が、実際に生まれていました。

入り口でのバリデーションとフェイルセーフの構築。地味な防御がシステムを守る

直したことは、いくつかあります。

まず、会社名を必須にしました。
会社名が空の行は、取り込みません。その行を飛ばし、何行を飛ばしたかを表示します。

黙って飛ばさないことが大事でした。
黙って飛ばすと、件数が合わない理由が分からなくなります。
飛ばした行は、書き出せるようにしました。
何行飛ばしたかだけ表示されても、どれが飛んだのかが分からなければ、直せません。飛ばしたぶんを手元に戻して、会社名を入れて、もう一度取り込む。そこまでできて、はじめて親切な機能になります。

次に、取り込む前の確認画面を用意しました。
このファイルには何行あるのか。
そのうち何行が取り込めるのか。
何行が、どういう理由で取り込めないのか。
見てから、決められるようにしました。

そして、列の対応付けです。「会社名」という名前でなくても、どの列が会社名にあたるのかを、人が指定できるようにしました。

この話は、第27話でもう一度出てきます。
他社のツールからの移行で、同じ壁にぶつかりました。

画像

入り口のチェックは、地味な仕事です。作っていて、楽しくありません。
画面も華やかになりません。お客様に説明しても、驚かれません。
「会社名が空だと登録できません」
言われてみれば、当たり前のことです。
当たり前すぎて、要望として上がってきません。
上がってこないので、後回しになります。

けれど、データを扱うツールにとって、入り口を通ったものは、そのあと全部の工程に流れていきます。
名寄せにも。番号の突き合わせにも。出力にも。集計にも。

入り口で1件止めれば、それで終わります。
入り口を通してしまうと、あとの全部で対処が必要になります。
そして、たいていの場合、あとの工程は「変なデータは来ない前提」で作られています。その前提は、書かれていません。
書かれていないので、誰も守っていないことに気づきません。
前提を守る責任は、入り口にあります。
入り口が守らなければ、誰も守りません。

今回の穴は、事故になる前に見つかりました。
見つかったのは、偶然ではありません。
「もし、こういうファイルが来たら」と、起きていないことを試した結果でした。

事故の報告は、向こうから来ます。
起こり得ることは、こちらから試しに行かないかぎり、永遠に「まだ起きていないこと」のままです。

もうひとつ、必須にする項目は、最小限にしました。
会社名だけです。
住所も、電話番号も、必須にはしていません。必須項目を増やすと、取り込めないデータが増えます。そして、取り込めないデータは、たいてい、手作業で埋められることになります。

厳しくすれば安全になる、という話ではありません。
空欄に寛容でいることと、何でも通すことは、違います。
寛容さは、線を引いたうえで持つものでした。線が無いのは、寛容ではなく、無防備です。無いと困るものと、無くても後から埋められるものを、分ける。
会社名だけは、後から埋められません。
その1件が、どの会社のことだったのか、誰にも分からなくなるからです。

入り口のチェックは、地味です。地味ですが、最後の砦です。
そこを通ってしまったものを、あとから見分ける方法は、ありません。

━━━━━━━━━━━━━━━━━━━━━━━━
次回予告

第19話「579万社」

国が公開している、すべての法人のデータ。

約579万社。

そこから、まだ会ったことのない会社を探します。
━━━━━━━━━━━━━━━━━━━━━━━━

リストルは、今日もどこかを直しています。


あなたの営業活動を応援します!
営業リスト作成にお困りではありませんか?

→ 営業リスト探しに、もう時間をかけない。
業種別に企業情報をまとめて収集できるリストルを、まずは3,000件まで無料でお試しください。👇

業種別に企業情報をまとめて収集できるリストルを、まずは3,000件まで無料でお試しください。
ホームページのない企業も含め、欲しい業種の企業情報をまとめて収集。 まずは無料お試しで、最大3,000件の営業リストを作成できます。

📊営業リスト収集ツール「リストル」

営業リスト収集ツール「Listoru(リストル)」| 最短3分で3,000件取得営業リストで新規開拓を仕組み化!Listoruは300以上のWebサイトから企業リストを自動収集。今すぐ無料で体験!

タイトルとURLをコピーしました