住所データの正規化

ShopifyとPOSで異なる住所形式を統一し、データ品質を維持する方法

住所正規化都道府県変換データ品質
読了時間: 9分

この記事について

ShopifyとPOSで住所の形式が異なるため、そのまま保存すると検索や表示に問題が生じます。特に日本の住所は都道府県の表記が英語・日本語で異なります。住所データの正規化について解説します。

なぜ正規化が必要なのか

ShopifyとPOSの住所形式の違い

問題: そのまま保存すると「Tokyo」と「東京都」が混在してしまう

正規化しないと起きる問題

正規化の方針

都道府県の変換

(全47都道府県を定義)

変換ルール:

  • 完全一致で変換
  • 大文字小文字は区別しない
  • 見つからない場合は元の値を維持

変換処理の流れ

Shopify住所取得

Shopifyから顧客の住所情報を取得

都道府県変換

英語表記を日本語表記に変換

住所結合

都道府県、市区町村、番地を結合

POS保存

正規化した住所をPOSに保存

変換の詳細

住所全体の正規化

住所正規化の例
入力(Shopify形式)

Province: Tokyo, City: Shibuya, Address1: 1-2-3 Dogenzaka, Address2: ABC Building 5F

変換処理

Province: Tokyo → 東京都、City: そのまま、Address: 元の値を維持

出力(POS形式)

住所: 東京都 Shibuya 1-2-3 Dogenzaka ABC Building 5F

補足: 完璧な日本語化は困難なため、都道府県の変換を優先し、それ以外は入力値を維持

変換テーブルの例

実装上の考慮点

変換できない場合の対応

双方向の考慮

考慮点:

  • 変換は可逆ではない(「渋谷区」→「Shibuya」の変換は複雑)
  • 元データを別フィールドに保存(original_address メタフィールドなど)
  • 基本的にはShopify → POS の一方向

データ品質の維持

バリデーションルール

ログと監視

監視アラート: 変換失敗率が閾値を超えたら通知

運用上の注意点

顧客による住所変更

住所変更時の対応
顧客が住所変更

ShopifyのマイページでS顧客が住所変更

変更イベントをキャッチ

Webhookで変更を検知

新しい住所を正規化

英語→日本語変換を適用

POSの住所を更新

正規化した住所をPOSに保存

考慮点:

  • 変更のタイミング(リアルタイムか、バッチか)
  • 競合の可能性(同時に店舗でも変更された場合)
  • 履歴の保持(古い住所は配送履歴用に残す)

手動修正の許容

自動変換で不完全な住所の例: 「東京都 Shibuya 1-2-3」

運用ルール:

  • 明らかな誤りは手動修正OK
  • 修正したら記録を残す
  • 同期設定で「手動修正値を保護」をON

この正規化がもたらす効果

データ品質

  • 都道府県が統一された形式で保存
  • 検索や集計が正確に動作
  • 帳票出力の品質向上

運用効率

  • 住所に関する問い合わせが減少
  • 配送トラブルの予防
  • 地域別分析が可能に