⚙️ Vault運用
2026-08-06_作業ログ
最終更新 2026年08月07日 / 90_Meta/Claude作業ログ/2026-08-06_作業ログ.md
作業ログ 2026-08-06
15:34 - /handoff 実行(全テーマ)
このセッションで扱ったテーマ(全部)
- SCALE LIST → SCALE CRM 連携の仕上げ — システム — 完了(実運用に乗った)
- NGリスト機能の新設 — システム — 完了
- セグメント画面・追加モーダルの作り込み — システム+判断 — 完了
- 不具合の修正(8件) — システム — 完了
- HPを増やす手段の検討 — 相談+データ —
.jpは掘り尽くし・方針決着 - スクショ取り込みの体制構築 — システム — 完了(運用待ち)
- 部署・拠点データの整備 — システム+相談 — 完了
- 部署で会社を絞る機能 — システム+相談 — 完了
- SNS(LinkedIn/X/Instagram/Facebook)の取得 — 相談 — 未着手(次の一手)
テーマ別の詳細
1. SCALE LIST → SCALE CRM 連携の仕上げ
- 大串が実際にテストして成功。デモ案件へ10件→5件→4件と入り、CRM側の実データで全項目が正しい形だと確認
- セグメントは絞り込み条件から自動生成(大串判断)。同じ条件なら作り直さない(
slFiltersに条件を控える) - 均等抽出は常時オン(5項目=都道府県・大業界・中業界・売上・従業員)
- 1回の上限 5,000 → 1,000件(大串「他の人のリスト奪っちゃう」)
- 追加はワンタップ(確認ダイアログを撤去)。内訳は押す前に出す
- 担当案件はユーザー管理でチェックボックスで割り当て(CRMの
member_rowsは書き換えない)
2. NGリスト機能(新設)
- メニュー →「NGリスト」。案件ごとにカードで並ぶ
- スプレッドシートの中身を貼り付けるだけ
- 法人番号は自動で引く(会社名+住所から。先方にも大串にも書かせない)
- 決まらない行は「確認が必要」として画面の上に出す
- CRM追加時、その案件のNGは必ず外れる。別案件では出る(大串の明言)
- 実測: 会社名+住所だけの5行で4行が自動で埋まった
先方に書いてもらう項目(負担最小): 会社名 / 住所 / 電話番号 / ホームページURL / NG理由
3. セグメント画面・追加モーダル
- 「リスト追加履歴」→ 「セグメント」 に作り替え(該当・追加ずみ・残りが見える)
- 追加モーダルに内訳(選んでいる企業 ▶ 電話番号がない ▶ この案件で使用済み ▶ NGリスト = 追加できる)
- 使用済みとNGは案件を選ばないと出せない(案件ごとにしか決まらない)
- 完了モーダルは案A(数字を主役に・680px)
4. 直した不具合(8件)
| 真因 | |
|---|---|
| セグメントがCRMに現れない | updated_at がスペース区切りだった(CRMはISO)。文字列比較で常に「古い」判定 |
| 企業詳細リンクが崩れる | /companies/… は誤り。正しくは /company?cn=…(CRM側120行も修正) |
| 大業界のチェックが押せない | チェックの絵が <label> 内にあり、label の既定動作を止めていた |
| 中業界が外れない | setLarge が if (on) のときだけ描き直していた |
| 連絡先情報タブの下線が動かない | 選択表示は Mui-selected クラスが描いており style では動かない |
| 無効な電話番号 | 000-0000-0000 が54件。CSV由来 |
| 空欄で1件だけ入る | Math.max(parseInt("")||0, 1) が 1 になっていた |
| 数え置きが除外を知らない | 件数と一覧が食い違っていた |
5. HPを増やす手段(相談・決着)
.jp系のドメインは掘り尽くした(co.jp / or.jp / 汎用jp / ne.jp すべて完走)- 残るのは ed.jp・ac.jp・gr.jp・go.jp = 学校・団体・役所で営業対象外
- → これ以上クロールではHPを増やせない。残る手段は SalesNow の CSV とスクショの2つだけ
- 大串の判断: 両方やる
- 実測: SalesNow由来23万社でも電話番号は50.9%しかない(「充足率100%」は画面の印象)
- 分母の違い: SalesNow 196万社 vs SCALE LIST 503万社(国税庁の全法人)
6. スクショ取り込みの体制
scripts/ocr/ocr.swift… macOS標準の Vision で読む(日本語対応・追加インストール不要・1枚1.5秒)scripts/import_screenshots.py… フォルダのスクショを読んで企業データに反映- 保存先:
~/Pictures/Screenshots/SalesNowスクショ/ - Claude に画像を渡さない(画像1枚=数千文字ぶん。数百枚でセッションが潰れる)
- 実測: 14枚→237行、227行の会社が確定
- いま撮っている一覧には電話番号の列が無いので0社しか増えない。
「代表電話番号」の列を出して、中小企業が写る絞り込みで撮る必要がある
7. 部署・拠点データの整備
- 部署名を洗い直し 40.6% → 71.6%(
clean_divisions.py) .ne.jp完走 → HP 349,022(+868)/電話 211,420(+237)- 連絡先情報タブを参考と同じ形に(部署名/部署カテゴリ/電話番号/住所+絞り込み)
- 人物情報パネルは出さない(1件も持っていない・LinkedIn等が出どころ)
- 住所の列は用意した(
division_contacts.address)。中身はこれからクロールで埋める
8. 部署で会社を絞る機能
- 大串の考え「探しているのは会社。部署は条件」に合わせ、画面を分けず絞り込みの1項目にした
- 3層で持つ: カテゴリ(営業/人事・採用…)/型(営業部・営業所…)/部署名
- 型は表記ゆれ対策(大串「法人営業部と営業部の違い的な」)。
「東京営業所356 / 大阪営業所285…」が全部「営業所」に。91%がまとまった - 一覧に「部署・拠点」の列。絞った部署が先に出る
- 実測: 営業部がある会社287社/「人事」を含む会社55社
9. SNS取得(次の一手・未着手)
- 大串「LinkedInの情報も本来は取りたい。XとかInstagram、facebookとか」
- Facebook 1,306社・X 1,009社は既に持っている(
company_contactsにあり絞り込みでも使える) - LinkedIn・Instagram は未取得
- 座組みの検討はこれから
このセッション全体の大串FB(重要なやつ全部)
- 「探しているのは会社」 — 部署・拠点で画面を分ける参考の作りは微妙。絞り込みの条件にすべき
- 「企業が重複していても違う案件だったら全く問題ない」 — 全案件横断の除外は誤り。案件ごとに判定
- 「もう一回全く同じ絞り込みすることなんてない」 — 保存条件・共有・検索条件設定を全撤去
- 「件数は最初から1000件入れず、空白にしておくべき」 — 上限を初期値にすると確かめずに持って行く
- 「文章ってより 電話番号のない企業▶◯件 とかそういう形式がいい」 — 説明文より引き算が見える形
- 「ラベルの部分で y-ogushi とアルファベットやだ」 — メアドの頭でなく日本語の表示名
- 「自分でクリックして更新とか押さないよね?」 — 版は自動で入れ替わるべき
- 「法人番号は会社名と所在地が分かればいける認識」 → 正しい。うちは国税庁データそのものを持っている
- 「NGリストの項目は極力先方負担かけたくない」 — 5項目で十分
- スクショ作戦は工数を考えずやる — ただし電話番号の列を出して撮らないと増えない
自分でやらかしたこと(同じ轍を踏まない)
- 退化チェックが落ちたのにデプロイした(
&&でつないだのに走った)。以後チェックとデプロイは分けて実行 - コメントに参考システム名を書いて退化チェックを落とした。コメントも成果物
- 「会社と役所を分ける」を提案したが、実測したら役所は1.6%しかなく不要だった。目立つ例で判断しない
- 括弧を片方だけ落として「本社(総務部」と余計に汚くした。括弧は対で見る
- 「委員会」「組合」を部署じゃないと判定して捨てていた
追記(〜2026-08-07 未明)— SNS取得・スクショ取り込み・詳細ページ
10. SNS(LinkedIn/X/Instagram/Facebook/YouTube)— 完了
scripts/crawl_sns.py を新設し、企業HP 348,091社のヘッダー・フッターから公式アカウントを読んだ。
| 本番 | 着手前 | |
|---|---|---|
| 63,986社 | 0 | |
| 約42,000社 | 1,694 | |
| X | 35,163社 | 1,308 |
| YouTube | 25,224社 | 0 |
| 1,770社 | 0 |
- 取り違え防止: 共有ボタンは形で落とす/1ページに2つあったら採らない/3社以上に出るアカウントは捨てる/LinkedInは会社ページのみ
- 速くするにはプロセスを分ける(解析がCPU律速・GIL)。スレッド24→56で遅くなった。
--shard i --of 4で2.5倍 - 実らなかった角度: PR TIMES・Wantedly に企業の公式SNSは載っていない。JSON-LD
sameAs・twitter:siteは上積み僅少。深掘りは+5,377社(2.6%) - 数が入らない真因は率でなく母数。届くのはHPが分かっている348,091社=全法人の6.9%
- 次の一手=SNS側からの逆引き(大串「ログインが要るSNS側からの逆引きはゆくゆくやりたい」)
11. スクショ取り込み — 受託開発 2,803社 → 11,190社
大串が受託開発12,695件を948枚で送付。読み取り15,507行→会社決定15,380行(99.2%)→12,807社に反映。
電話番号あり8,450社(着手前2,597社)。
「本番のデータは正しいのに画面の件数だけ古い」を3つ同時に踏んだ:
- 業界の列を読めていなかった(OCRが見出しを途中で切る/隣とまとめて1つの文字にする)
- 数え置きの更新が索引名の衝突で毎回失敗(
index idx_facet already exists)。「更新した」と報告していたが実際は毎回落ちていた - 数え置きは手元DBを数えるのに、取り込みは本番D1にしか書いていなかった
その他: 入れ先が5→11項目/写り込んだ日付を電話番号として読んでいた/業界名に従業員数がくっつき「受託開発0人」が150社入った。
OCRの生データを取っておく(db/screenshot_ocr.json)。解析結果を取っておくと読み取りを直すたびに20分の読み直しになる(2回やった)。
撮影の約束(memory scale-list-screenshot-progress に記録):
中業界を1つずつ/「メインで取り組んでいる業界のみで検索する」のチェックは必ず入れたまま(外すと枚数が4倍。中業界を持つ104,362社中67,255社=64%がサブ業界を平均3.19個持つ)/撮る列は7つ(企業名・企業HP・法人番号・代表電話番号・大業界・中業界・売上)。
12. 企業情報タブA案/部署と拠点の分割
- 企業情報タブを3案出してA案(数字を先に見せる)を採用。連絡先情報タブは参考と同じまま(大串明言)
- 一覧の「部署・拠点」を「部署」「拠点」の2列に分割(基準=部署カテゴリ「拠点」14,862件)
大串FB(このセッション)
- 「Salesnowのデータが正よ。めっちゃ正確だもん」→ 業界は参考システムの値で上書き
- 「連絡先情報はSalesnowと配置も全く同じで、項目とか情報量も同じだからね」→ 連絡先タブは作り替えない
- 「この部署と拠点っていうのわけて欲しい」
- 「ログインが要るSNS側からの逆引きはゆくゆくやりたい」
自分のやらかし(同じ轍を踏まない)
- 「更新した」と報告したが、実際は索引名の衝突で毎回失敗していた。反映系は必ず結果を数えて確かめる
- 掃除SQLが不十分(
REPLACE(industry_mid,'人','')で数字が残り「受託開発0」になった)。文字を消すのでなくRTRIM(値, '0123456789人名,')で端から落とす - 同じ「索引名の衝突」不具合が
sync_contacts_to_d1.pyとrefresh_facets.pyの2か所にあった。1つ直したら同じ形を横断で探す
判断待ち(次セッションへ)
- 部署のFAX行(106行・17社)を直通から外すか残すか
- 業界以外(電話・HP・売上・従業員)も参考システムの値で上書きするか