Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
与信管理を形にする: Ruby の柔軟性が支える高速データ収集・自動化基盤
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
5hun
December 06, 2025
1
170
与信管理を形にする: Ruby の柔軟性が支える高速データ収集・自動化基盤
北陸Ruby会議01で発表しました
5hun
December 06, 2025
Tweet
Share
More Decks by 5hun
See All by 5hun
ぼっちが秘める可能性〜孤高のRubyistが語る交流会サバイバル術〜
5hun
1
29
君もRailsもアップグレード!
5hun
1
8
完璧主義にこだわり続けるとシステム開発は不幸になると思った
5hun
0
27
OSSコントリビュート初体験:Rubocopのバグを修正した話
5hun
0
38
地道なリファクタを続けてRspec高速化した話
5hun
0
36
“技術カンファレンスで何か変わる?” ──RubyKaigi後の自分とチームを振り返る
5hun
0
240
Featured
See All Featured
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
0
3.4k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
0
1.1k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
180
Designing Powerful Visuals for Engaging Learning
tmiket
0
240
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
140
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
0
2.4k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
1
110
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.3k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
470
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
260
Transcript
与信管理を形にする: Rubyの柔軟性が支える高速データ収集・自動化基盤 北陸Ruby会議01
自己紹介 • 5hun • @5hun_s • アラームボックス株式会社 エンジニア • Ruby/Rails
歴2年 • 金沢2回目 • 楽器が好き
本日話すこと • アラームボックスのシステムの紹介 • なぜRubyが最適だったのか
与信管理とは • 企業間取り引き→後払い – 破産するとお金の回収不可 – そのリスクを管理すること • つまり企業が信頼できるか知る必要がある
集めている企業情報 • 法人のプロフィール情報 – 会社名 – 代表者名 – 住所 とか
• ネガティブ情報
与信管理のための基盤を マイクロサービスで構築(イメージ図) 信用チェック 企業特定 法人情報管理
企業の信用リスクをスコアリング化 • ネガティブ情報の種類ごとに深刻度を設定 • 組み合わせて専門家の与信判断をプログラム化 →多様かつ膨大なネガティブ情報で精度向上 ※詳しくは、アラームボックスの「信用チェック」を参照してください
様々なネガティブ情報の収集例 • 公式API – 法人番号API – インボイス番号API • 外部提供情報(だいたいエクセル) –
官公庁 – 他調査会社 • スクレイピング • 社員の調査情報 • 顧客提供情報(支払い遅延の報告など)
大量データ収集時の注意点 どの会社の情報であるか、 判別しなければならない
企業特定を成功するために 1. 社内の法人情報を充実させる 2. 断片的な情報から、正確に法人の特定を するロジックを確立させる
法人情報取り扱いの課題 • 多種多様な表記揺れ – 法人名や代表者名の全角/半角、スペースの有無など – 株式会社 or ㈱ or
(株) or (株) – 1丁目2番3号 or 1ー2ー3 or 1-2-3 • 法人情報の一元管理 – DB共通で色々なシステムで閲覧、追加、更新 しており、表記揺れの統制ができない • 法人名などがいつの間にか変更されると検索できなくなる
履歴テーブルを管理 • 各種履歴をhas_many関係で紐づけ • 最新履歴への外部キーを別途追加 – 最新情報だけは直接参照もできるように
法人の作成更新をAPI化 • 保存前に統一の正規化処理を適用 • 法人名の関連項目を同時登録(抜け漏れ防止)
企業特定を成功するために 1. 社内の法人情報を充実させる 2. 断片的な情報から、正確に法人の特定を するロジックを確立させる
企業特定の課題 • 基本は法人番号 • それだけではなく、コツが必要(一部紹介)
人間とRubyの共同正規化作業 • Elasticsearchで候補検索 – 法人番号 / 法人名 / 代表者名 /
住所 など • Rubyで正規化して検索 – スペース除去 / 全角半角統一 / 異体字修正 • 人の知見を加えて、さらに精度を高めて検索 – 法人格 / 拠点名の除去(定数管理) – 履歴テーブル – 都道府県・市区町村マスタとの照合
なぜRubyが最適だったのか
自社内向けツールに求められるもの • +α • 自社専用機能 = システムの価値 過度なエンジニアリングをせずに、 多様な業務要件に対応したい
Rubyの柔軟性 • ライブラリ豊富 – Faraday(API) / roo (Excel) / itaiji(正規化)
/ mechanize(スクレイピング) • シンプル記法でビジネスロジックの表現に集中 – ()省略 / return省略 / & /述語メソッド表現 • Try & Error – 要件に応じてコンソールで効果的な実装方法を検証 しながら作る
結論:Rubyいいね! • ニッチなサービスを運用 – 前例が(ほぼ)ない – 実装は自分たちで考えなければならない • Rubyの可能性 –
やろうと思えば何でもできる、、が、 – 壊れる時はちゃんと壊れてくれる – どんな複雑な機能でも、道を外さずに作れる 仕組みや情報がたくさんある