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
romajip: 日本の住所CSVデータを活用した英語住所変換ライブラリを作った話
Search
sangun kang
November 22, 2024
Programming
0
3.1k
romajip: 日本の住所CSVデータを活用した英語住所変換ライブラリを作った話
https://jsconf.jp/2024/talk/kang-sangun/
sangun kang
November 22, 2024
Tweet
Share
More Decks by sangun kang
See All by sangun kang
ペパボ ホスティング事業部のブラウザレンダリング基本知識 2022 / Browser Rendering Basics of pepabo hosting division
sangunkang
0
9.1k
Other Decks in Programming
See All in Programming
データベースコネクションプール(DBCP)の変遷と理解
fujikawa8
1
270
来たるべき 8.0 に備えて React 19 新機能と React Router 固有機能の取捨選択とすり合わせを考える
oukayuka
2
820
無関心の谷
kanayannet
0
180
Webの外へ飛び出せ NativePHPが切り拓くPHPの未来
takuyakatsusa
2
190
ドメインモデリングにおける抽象の役割、tagless-finalによるDSL構築、そして型安全な最適化
knih
11
2k
レガシーシステムの機能調査・開発におけるAI利活用
takuya_ohtonari
0
610
データの民主化を支える、透明性のあるデータ利活用への挑戦 2025-06-25 Database Engineering Meetup#7
y_ken
0
280
既存デザインを変更せずにタップ領域を広げる方法
tahia910
1
240
すべてのコンテキストを、 ユーザー価値に変える
applism118
2
450
ktr0731/go-mcpでMCPサーバー作ってみた
takak2166
0
170
生成AIコーディングとの向き合い方、AIと共創するという考え方 / How to deal with generative AI coding and the concept of co-creating with AI
seike460
PRO
1
320
Blazing Fast UI Development with Compose Hot Reload (droidcon New York 2025)
zsmb
1
110
Featured
See All Featured
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
181
53k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
48
2.8k
Into the Great Unknown - MozCon
thekraken
39
1.9k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
For a Future-Friendly Web
brad_frost
179
9.8k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.5k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
22k
How to Think Like a Performance Engineer
csswizardry
24
1.7k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
124
52k
Building Adaptive Systems
keathley
43
2.6k
Transcript
romajip 📮 日本の住所データを活用した英語住所変換ライブラリを作った話 2024-11-23 / JSConfJP / Sangun Kang
姜 相雲(カン サンウン) / 韓国 日本6年目 / GMOペパボ
もくじ • 「romajip」ってなに? • 巨大な住所の世界へ ◦ こだわり ◦ 苦労した部分 •
今後やること
「romajip」ってなに? 普段の英語住所を検索する方法
「romajip」ってなに? https://romajip-demo.vercel.app/ 郵便番号を使わず、 「日本語住所」を「英語住所」に変換するライブラリ
• WHOISで必要な英語住所情報入力 を簡単にしたい • リポジトリだけ作って1年放置 • お盆休みで作った ムームードメイン 「romajip」ってなに?
巨大な住所の世界へ
都道府県: 43 市区町村: 1,714 町名: めっちゃ多い romajiでは小字は除外 巨大な住所の世界へ
巨大な住所の世界へ 日本の住所マスタは郵便局とデジタル庁がCSVで提供 郵便番号ベースの郵便局 もっと具体的な住所を集めたデジタル庁
巨大な住所の世界へ 一般的には郵便局の住所を利用
巨大な住所の世界へ 「romajip」はデジタル庁のデータを利用 目的は「日本語」住所を「英語」に変換
こだわり
巨大な住所の世界へ - こだわり 男は数字に 頼らない 郵便番号を使わないと決心 → 郵便番号使った方が圧倒的に楽 → 「日本語」を使うパタンがない
→ データセットの設計、処理に苦労 設定Zero,すぐ使えるOSSを目指す → デカいCSVを必要な情報だけ最適化して ライブラリのバンドルに含める その結果。。
巨大な住所の世界へ - こだわり ユーティル系ライブラリとして許せないサイズ
苦労した部分
• 標準化されてそうで そうでもない各自の住所 • 日本橋と日本橋 • 志布志市志布志町志布志 • 兵庫県南あわじ市市市 巨大な住所の世界へ
- 苦労した部分
巨大な住所の世界へ - 苦労した部分 • 初期は行政区画の基準にデータ セットを生成 • 日本語住所もそれを基準にSplit • 探せないケース多い
• 地域によって少し違う
巨大な住所の世界へ - 苦労した部分 • 初期のデータセットを捨てる • 各地域の関係性を単純に 上位Treeと下位Treeに変更 • split
-> Longest Match
事前に用意されたデータセットを基準に 日本語住所を「longest match」し、下 位Nodeが無くなるまで繰り返す 住所のデータセットは 日本語 : 英語 形 式のオブジェクトになる
「Longest Match」とは? 入力文字列の先頭から、一番長く一致する部分を探す手法 例えば「福岡県福岡市中央区」の場合: 1. 最上位Nodeでは「福岡県」が一致する -> 「Fukuoka-ken」を返す 2. 下位Nodeでは「福岡市」が一致する -> 「Fukuoka-shi」を返す 3. 下位Nodeでは「中央区」が一致する -> 「chuo-ku」を返す これにより、市市(イチシ)のように行政区画名が入る地名も安全に検索ができる 巨大な住所の世界へ - 苦労した部分
巨大な住所の世界へ - 苦労した部分 デジタル庁の でマスタデータは150MB
• 必要情報だけ抽出 • 小字を消す ◦ 字は住所体系から廃止 • 「町、村」など接尾辞を略語にする ◦ 処理で担保
◦ 塵を集めて大山を作る(5MB程度) 巨大な住所の世界へ - 苦労した部分
今後やること • バンドルサイズを縮小 ◦ データセットが4MB ◦ ビルドのやり方を改善 • 郡、市から検索できるように ◦
都道府県は省略するケースが多い • いろんな読み方に対応
📮ありがとうございました 📮 github.com/Sangun-Kang/romajip x.com/ksu_302