Slide 1

Slide 1 text

romajip 📮 日本の住所データを活用した英語住所変換ライブラリを作った話 2024-11-23 / JSConfJP / Sangun Kang

Slide 2

Slide 2 text

姜 相雲(カン サンウン) / 韓国 日本6年目 / GMOペパボ

Slide 3

Slide 3 text

もくじ ● 「romajip」ってなに? ● 巨大な住所の世界へ ○ こだわり ○ 苦労した部分 ● 今後やること

Slide 4

Slide 4 text

「romajip」ってなに? 普段の英語住所を検索する方法

Slide 5

Slide 5 text

「romajip」ってなに? https://romajip-demo.vercel.app/ 郵便番号を使わず、 「日本語住所」を「英語住所」に変換するライブラリ

Slide 6

Slide 6 text

● WHOISで必要な英語住所情報入力 を簡単にしたい ● リポジトリだけ作って1年放置 ● お盆休みで作った ムームードメイン 「romajip」ってなに?

Slide 7

Slide 7 text

巨大な住所の世界へ

Slide 8

Slide 8 text

都道府県: 43 市区町村: 1,714 町名: めっちゃ多い romajiでは小字は除外 巨大な住所の世界へ

Slide 9

Slide 9 text

巨大な住所の世界へ       日本の住所マスタは郵便局とデジタル庁がCSVで提供 郵便番号ベースの郵便局 もっと具体的な住所を集めたデジタル庁

Slide 10

Slide 10 text

巨大な住所の世界へ 一般的には郵便局の住所を利用

Slide 11

Slide 11 text

巨大な住所の世界へ     「romajip」はデジタル庁のデータを利用 目的は「日本語」住所を「英語」に変換

Slide 12

Slide 12 text

こだわり

Slide 13

Slide 13 text

巨大な住所の世界へ - こだわり 男は数字に 頼らない 郵便番号を使わないと決心 → 郵便番号使った方が圧倒的に楽 → 「日本語」を使うパタンがない → データセットの設計、処理に苦労 設定Zero,すぐ使えるOSSを目指す → デカいCSVを必要な情報だけ最適化して ライブラリのバンドルに含める その結果。。

Slide 14

Slide 14 text

巨大な住所の世界へ - こだわり ユーティル系ライブラリとして許せないサイズ

Slide 15

Slide 15 text

苦労した部分

Slide 16

Slide 16 text

● 標準化されてそうで そうでもない各自の住所 ● 日本橋と日本橋 ● 志布志市志布志町志布志 ● 兵庫県南あわじ市市市 巨大な住所の世界へ - 苦労した部分

Slide 17

Slide 17 text

巨大な住所の世界へ - 苦労した部分 ● 初期は行政区画の基準にデータ セットを生成 ● 日本語住所もそれを基準にSplit ● 探せないケース多い ● 地域によって少し違う

Slide 18

Slide 18 text

巨大な住所の世界へ - 苦労した部分 ● 初期のデータセットを捨てる ● 各地域の関係性を単純に 上位Treeと下位Treeに変更 ● split -> Longest Match

Slide 19

Slide 19 text

事前に用意されたデータセットを基準に 日本語住所を「longest match」し、下 位Nodeが無くなるまで繰り返す 住所のデータセットは 日本語 : 英語 形 式のオブジェクトになる 「Longest Match」とは? 入力文字列の先頭から、一番長く一致する部分を探す手法 例えば「福岡県福岡市中央区」の場合: 1. 最上位Nodeでは「福岡県」が一致する -> 「Fukuoka-ken」を返す 2. 下位Nodeでは「福岡市」が一致する -> 「Fukuoka-shi」を返す 3. 下位Nodeでは「中央区」が一致する -> 「chuo-ku」を返す これにより、市市(イチシ)のように行政区画名が入る地名も安全に検索ができる 巨大な住所の世界へ - 苦労した部分

Slide 20

Slide 20 text

巨大な住所の世界へ - 苦労した部分 デジタル庁の でマスタデータは150MB

Slide 21

Slide 21 text

● 必要情報だけ抽出 ● 小字を消す ○ 字は住所体系から廃止 ● 「町、村」など接尾辞を略語にする ○ 処理で担保 ○ 塵を集めて大山を作る(5MB程度) 巨大な住所の世界へ - 苦労した部分

Slide 22

Slide 22 text

今後やること ● バンドルサイズを縮小 ○ データセットが4MB ○ ビルドのやり方を改善 ● 郡、市から検索できるように ○ 都道府県は省略するケースが多い ● いろんな読み方に対応

Slide 23

Slide 23 text

📮ありがとうございました 📮 github.com/Sangun-Kang/romajip x.com/ksu_302