💡Listoru(リストル)は、Web上の情報から企業の営業リストを自動で収集・作成するツールです。
この「企業DB開発日誌」では、数ある機能の裏側に隠された、私たちの試行錯誤を綴っていきます。
エラー画面には出ない問題や、データとの静かな対話から見えてきたもの。
正解のない開発現場のリアルな空気を、少しだけおすそ分けさせてください。
今日もリストルの裏側で起きた、ひとつの物語をお届けします。
自動化されたデータ連携の死角。サイレントに増殖するインポート時の異常
リストルには、情報を集めてくるツールがあります。
集めた結果は、表の形で企業データへ送られます。
会社名。住所。電話番号。ファックス番号。
メールアドレス。問い合わせページの場所。
決まった順番で並んだ表を、そのまま受け渡す。
以前は、この受け渡しを手でやっていました。
書き出して、確認して、取り込む。
いまは、自動です。
集め終わったら、そのまま送られ、そのまま取り込まれます。
手間が減りました。そして、確認する目も、1つ減りました。

ある日、企業データを眺めていて、手が止まりました。
電話番号の欄に、電話番号ではないものが入っていました。
打ち間違い、という見え方ではありません。
欄そのものが、別の用途に使われているような入り方でした。
1件ではありません。その日に取り込まれた分、まとめてです。
最初は、集めてきた情報のほうが変なのだと思いました。
拾ってくる場所を間違えているのではないか。
ページの中の別の数字を、電話番号として拾ったのではないか。
けれど、拾ってきた側のデータを見ると、電話番号は、正しい欄に入っていました。
送り出す前は、合っている。受け取ったあと、ずれている。
疑える場所が、ひとつずつ消えていきます。
残ったのは、いちばん疑っていなかった場所でした。
あいだの、受け渡しです。
列が、ずれていました。
スキーマ変更のミスマッチ。正常な顔をしてデータが破損する恐怖
表というのは、位置で意味が決まります。
3列目にあるものは電話番号。
4列目にあるものはファックス番号。
そう決めておいて、その順番で読み込む。
どこか1か所で列が1つ増えたり減ったりすると、そこから右側が、まるごと1つずつ横へ動きます。
電話番号の欄には、その左隣にあったものが入る。ファックス番号の欄には、電話番号が入る。
ずれ方は一定なので、1件だけを見ても、間違いに見えません。
表そのものは、崩れていません。どのマスにも、何かがきちんと入っています。
崩れないまま、全部が間違っている。それが、このずれのいちばん嫌なところでした。
住所の欄に住所らしきものが入っていれば、人はそこで納得してしまいます。
気づいたのは、電話番号の欄でした。
電話番号だけは、形が決まっています。数字とハイフンでできている。
そこに別のものが入ると、明らかに違って見えます。

形の決まっている欄だけが、声を上げてくれました。
逆に言えば、他の欄は黙っていました。
備考の欄に、営業時間が入っていても気づきません。
業種の欄に、代表者名が入っていても気づきません。
文字が入っている、というだけで、正しく見えてしまいます。
いつからずれていたのかを調べると、気づいた日より、少し前からでした。
さかのぼる作業は、静かに嫌なものです。
1日戻るごとに、直す件数が増えていきます。
そのあいだに取り込まれた分は、すべて直す必要がありました。
取り込んだ日付で絞り込み、まとめて戻して、正しい列の並びで入れ直しました。
自動で入ったものを、手作業で戻す。いちばん割に合わない作業です。
しかも、この作業は、何も前へ進めません。
終わって得られるのは、ずれる前と同じ状態です。
気づいたのは、たまたまでした。
その日、別の用件で企業データを開いていました。
一覧を眺めていて、電話番号の列が目に入りました。
作業のついでに、目が滑って、止まった。
もし、その日その画面を開いていなければ、数日は、そのまま入り続けていたはずです。
自動化した処理の異常を、人の偶然で見つけている。
その状態自体が、直すべきものでした。
原因は、送り出す側にありました。
集めてくるツールのほうで、項目を1つ増やしていました。
増やしたこと自体は、意図したことです。
新しく集められるようになった情報がありました。
問題は、それを表の途中に足したことでした。
送り出す側は、新しい表を作ったつもりです。
受け取る側は、前の表のつもりで読んでいます。
どちらも、自分の仕事は正しくしています。
そして、あいだで意味がずれました。
カラム名によるマッピングと、バリデーション(入力チェック)によるフェイルセーフ

この件の怖さは、規模ではありません。速度です。
手作業だったころは、こうはなりませんでした。
書き出したファイルを開けば、目に入ります。
取り込む前に、1度は見る。おかしければ、そこで止まります。
自動になってから、その1度が無くなりました。
集める。送る。取り込む。
誰も見ないまま、企業データに入ります。
そして、翌日もまた同じ流れで入ります。
自動化は、正しいものを速く増やします。
同じ速さで、正しくないものも増やします。
直したことは、3つあります。
ひとつ。列の位置で読むのを、やめました。
表の1行目に、それぞれの列が何であるかを書いておく。
受け取る側は、その名前を見て中身を割り当てます。
こうすると、途中に列が増えても、位置は関係なくなります。
ふたつ。受け取った直後に、形の確認をするようにしました。
電話番号の欄に、電話番号らしくないものが多く入っていないか。
メールアドレスの欄に、記号が含まれているか。
決まった形のある欄だけでも確認すれば、ずれは、その場で見つかります。
みっつ。おかしいと判断したときは、取り込みを止めます。
止まれば、人が見ます。人が見れば、たいてい5分で分かります。
止めることには、迷いがありました。
自動化した意味が薄れるからです。
毎回止まっていては、手作業と変わりません。
そこで、止める条件を厳しくしました。
数件おかしいくらいでは止めません。一定の割合を超えて形が合わないときだけ止めます。
1件の誤りは、あとから直せます。
全件の誤りは、あとから直すのが大変です。
止める判断も、どちらの側に倒れたら困るか、で決めました。
自動化によって抜け落ちる「暗黙知」と、異常検知アラートの重要性

この話には、大きな数字が出てきません。
被害が大きくなる前に気づいたからです。
気づいた理由は、電話番号の形が特徴的だったから。
つまり、運が良かった。
備考欄でずれていたら、おそらく、しばらく気づきませんでした。
自動化を進めるときに、私たちが減らしたつもりだったのは「手間」でした。実際に減っていたのは、「目」のほうでした。
手間は、減らしていい。
目は、減らしたぶんだけ、どこかに置き直さなければいけません。
人が見ていたときは、その人が、無意識にたくさんのことを確認していました。
件数が例年どおりか。
見慣れない値が混ざっていないか。
なんとなく、いつもと違わないか。
この「なんとなく」を、仕様に書き起こすのは大変です。
だから、自動化のときに落ちます。
落としたことにも、気づきません。
もともと、誰も書いていなかったからです。
書かれていた仕事は、自動化しても残ります。
書かれていなかった仕事だけが、黙って消えます。
いちばん価値のあった確認が、いちばん静かに消えていました。
いまは、自動化するときに、必ず1つ用意することにしました。
止めるための条件です。
どういう状態になったら、自動を止めて人を呼ぶのか。
これを決めずに自動化すると、止まらない仕組みができあがります。
止まらない仕組みは、うまくいっているときは最高で、おかしくなったときは最悪です。
自動化は、間違いも自動で増やします。
そして、増えていることに気づくのは、たいてい、人が久しぶりに画面を見た日です。
今回、その日が早く来たのは、電話番号という、形の決まった欄があったからでした。
数字とハイフンでできている。それだけの性質が、見張り役になっていました。
形の決まっている項目は、データの中で、いちばん正直な部分です。
━━━━━━━━━━━━━━━━━━━━━━━━
次回予告
第18話「会社名のない会社」
会社名の欄が空でも、登録できる作りでした。
他社の書式のファイルを入れたら、どうなるか。
エラーは、出ません。
━━━━━━━━━━━━━━━━━━━━━━━━
リストルは、今日もどこかを直しています。
→ 営業リスト探しに、もう時間をかけない。
業種別に企業情報をまとめて収集できるリストルを、まずは3,000件まで無料でお試しください。👇

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