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

マッピング定義のズレとセマンティックエラー。「担当者」の解釈違いが招いたデータ汚染
前回の話には、続きがあります。
列を結べるようにしたことで、取り込めるファイルは、確かに増えました。増えた結果、これまで起きなかった種類の間違いが出てきます。
ツールを1つ足すと、そのツールでしか起きない問題が、必ず1つ出る。
ファイルの列と、こちらの欄を、人が結ぶ。
推測できるものは、あらかじめ結んでおく。
これで、取り込みの問題は片付いたと思っていました。
ある日、取り込んだあとのデータを見ていて、手が止まりました。
営業の担当者の欄に、知らない名前が入っていました。
社内の誰でもありません。別の会社の方の名前でした。

最初に考えたのは、単純な入力の間違いでした。
手で入れるときに、欄を取り違えることは、誰にでもあります。
それなら、直して終わりの話です。
ただ、知らない名前は、1件ではありませんでした。同じ形の間違いが、並んでいました。
手の間違いは、1件ずつ起きます。
同じ間違いが並んでいるなら、それは手ではなく、仕組みです。
たどっていくと、取り込んだファイルに行き着きました。
そのファイルには、「担当者」という列がありました。
こちらは、それを営業の担当者だと解釈しました。
自然な解釈です。
企業データにおける「担当者」は、その会社を担当している自社の営業を指します。こちらの画面では、ずっとその意味で使ってきました。
けれど、そのファイルでの「担当者」は、先方の窓口になっている方のことでした。そのファイルを書き出したツールでは、自社の営業を入れる欄が、別の名前で用意されています。
つまり、あちらの世界では、「担当者」は先方の人を指すのが自然でした。
どちらの言葉づかいにも、筋が通っています。ただ、同じファイルの上では、どちらか一方の意味しか採用できません。
翻訳の失敗に、いちばん近いと思います。同じ言葉が、別の世界では、別のものを指す。ただ、翻訳と違うところが1つあります。
ここには、どちらが原文か、という答えがありません。
どちらの世界でも、「担当者」は原文でした。
バリデーションをすり抜ける異常と、自動化の落とし穴。「推測」が確認を素通りさせる
気づいたのは、担当者の一覧を見ていたときでした。
自社の営業は、限られた人数です。名前も、全員分かります。
そこに、見覚えのない名前が並んでいれば、さすがに目に付きます。
もし、こちらが大きな組織で、担当者が数百人いたとしたら、気づかなかったかもしれません。規模が小さいことが、このときは、見張り役になりました。普段、規模の小ささは、弱みの側に数えられます。この日だけは、逆に働きました。全員の顔が浮かぶことが、そのまま検査でした。

推測して結んでおく、という部分に、落とし穴がありました。
名前が一致していれば、自動で結ばれます。
人は、その状態を見て、そのまま進めます。
すでに結ばれているものを、わざわざ疑う人は、多くありません。
推測は、親切です。親切なぶん、確認を素通りさせます。
空欄なら、人は考えます。埋まっていれば、人は先へ進みます。
埋めたのが機械でも、埋まっているという見た目は、同じだからです。
似た話は、他にもありました。
「担当者」という言葉が、採用の担当を指している場面。
求人の情報を扱うところでは、そう使われます。
「取引先」が、仕入先を指す会社と、販売先を指す会社があります。
「顧客」が、契約している会社を指す場合と、見込みの段階を含む場合があります。
「部署」が、先方の部署なのか、自社の担当部署なのか。
どれも、その業界では当たり前の使い方です。
そして、どの使い方も、間違っていません。
この種の食い違いが厄介なのは、形が正しいことです。
第17話の列のずれは、電話番号の欄に電話番号でないものが入ったので、気づけました。今回は、名前の欄に、人の名前が入っています。
形式としては、完全に正しい。文字数も、書き方も、違和感がありません。
違っているのは、意味だけです。意味の間違いは、機械には見つけられません。そして、この誤りは、あとの工程に静かに効きます。
自社の担当者ごとの件数を集計すると、知らない名前が並びます。
担当者別の実績が、正しくなくなります。
通知の宛先も、おかしくなります。
数字が合わない、という形で表に出るまでに、少し時間がかかります。
そのころには、どの取り込みが原因だったのかを、たどるのが難しくなっています。
フェイルセーフとヒューマンインザループの設計。意味の取り違えを防ぐUI改善
入ってしまった値は、戻しました。
取り込んだ日付で絞り込み、その欄だけを空に戻して、正しい欄へ入れ直します。幸い、気づくのが早かったので、他の記録とは絡んでいませんでした。
直したことは、いくつかあります。

まず、対応付けの画面に、説明を足しました。
こちらの欄が、どういう意味なのかを短く書く。
「担当者」ではなく、「この会社を担当する、自社の営業担当」と書く。
長くなりますが、意味の取り違えは減ります。
次に、取り込む前の確認を強めました。
最初の数行が、実際にどう入るのかを表示する。
このとき、自社の担当者の欄に、社内に存在しない名前が入っていたら、注意を出します。社内の一覧と照合すれば、これは機械にも分かります。
意味そのものは、機械には確認できません。
ただ、意味がずれたときに出やすい形なら、拾えます。
任せられるところまでを機械に任せて、最後の確認は、画面の前の人に残しました。
そして、先方の窓口を入れるための欄を、別に用意しました。
以前は、先方の担当者を記録する場所が曖昧でした。
場所が無いから、近い欄に入ってしまう。置き場所があれば、そこに入ります。
データディクショナリの整備。データモデリングにおける「言葉の定義」の重要性
この件のあと、社内で言葉の一覧を作りました。
こちらの画面で使っている言葉が、それぞれ何を指すのかを、書き並べたものです。

作ってみると、社内でも揺れているものがありました。
同じ言葉を、人によって少し違う意味で使っている。
資料と画面で、表現が違う。
お客様に説明するときに、そこが揃っていないと、確実に伝わりません。
そして、揃っていない状態でマニュアルを作ると、読んだ人が、それぞれ別の理解をします。同じ画面を見ながら、違う話をすることになります。
言葉の一覧は、社内向けに作ったものでしたが、結果として、いちばん役に立ったのは、お客様への説明のときでした。
この一覧は、あとから作ったものです。
本当は、画面を作るより先に作るべきものでした。
言葉が決まっていないまま画面を作ると、画面ごとに、少しずつ違う言い方が生まれます。そして、あとから揃えるのは、最初に決めるより、はるかに手間がかかります。
データを扱う仕事は、形を揃える仕事だと思われがちです。
桁を揃える。書き方を揃える。空欄を埋める。
けれど、いちばん揃わないのは、言葉の意味です。
形は、機械で確認できます。意味は、人が確認するしかありません。
だから、意味を確認しやすい形にしておくことが、唯一できる手当てでした。
取り込む前に、実際の値を見せる。
自社の一覧と照合できるものは、照合する。
欄の意味を、短くても言葉で書いておく。
どれも、間違いを防ぐ仕組みではありません。
間違いに、人が気づける仕組みです。
意味の食い違いについては、そこまでしかできませんでした。
同じ言葉が、業界によって、違うものを指します。
「担当者」という3文字は、どちらの会社でも、正しく使われていました。
こういう食い違いは、これからも出ます。
業界が変われば、言葉の使い方も変わります。
すべてを先回りして用意することはできません。
できるのは、食い違いが起きたときに、早く見つかる形にしておくことだけです。
そして、見つかったら、言葉を1つ足す。
一覧は、少しずつ長くなっています。
━━━━━━━━━━━━━━━━━━━━━━━━
次回予告
第29話「鍵が漏れた日」
手で書いた設定ファイルを読み込む。
それだけの処理でした。
連携が、一時停止しました。
━━━━━━━━━━━━━━━━━━━━━━━━
リストルは、今日もどこかを直しています。
→ 営業リスト探しに、もう時間をかけない。
業種別に企業情報をまとめて収集できるリストルを、まずは3,000件まで無料でお試しください。👇📝営業リスト収集ツール「リストル」

