Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
与信管理を形にする: Ruby の柔軟性が支える高速データ収集・自動化基盤
Search
5hun
December 06, 2025
1
98
与信管理を形にする: Ruby の柔軟性が支える高速データ収集・自動化基盤
北陸Ruby会議01で発表しました
5hun
December 06, 2025
Tweet
Share
More Decks by 5hun
See All by 5hun
ぼっちが秘める可能性〜孤高のRubyistが語る交流会サバイバル術〜
5hun
1
11
君もRailsもアップグレード!
5hun
1
2
完璧主義にこだわり続けるとシステム開発は不幸になると思った
5hun
0
22
OSSコントリビュート初体験:Rubocopのバグを修正した話
5hun
0
32
地道なリファクタを続けてRspec高速化した話
5hun
0
34
“技術カンファレンスで何か変わる?” ──RubyKaigi後の自分とチームを振り返る
5hun
0
220
Featured
See All Featured
Build your cross-platform service in a week with App Engine
jlugia
234
18k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Why Our Code Smells
bkeepers
PRO
340
57k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.2k
Speed Design
sergeychernyshev
33
1.4k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
54k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
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の可能性 –
やろうと思えば何でもできる、、が、 – 壊れる時はちゃんと壊れてくれる – どんな複雑な機能でも、道を外さずに作れる 仕組みや情報がたくさんある