この記事について
ShopifyとPOSで住所の形式が異なるため、そのまま保存すると検索や表示に問題が生じます。特に日本の住所は都道府県の表記が英語・日本語で異なります。住所データの正規化について解説します。
なぜ正規化が必要なのか
ShopifyとPOSの住所形式の違い
| 項目 | Shopify(国際形式) | POS(日本形式) |
|---|---|---|
| 国 | Japan | - |
| 都道府県 | Tokyo(英語表記) | 東京都(日本語表記) |
| 市区町村 | Shibuya | 渋谷区 |
| 住所 | 1-2-3 Dogenzaka | 道玄坂1-2-3 |
| 郵便番号 | 150-0001 | 150-0001 |
国
Shopify(国際形式)Japan
POS(日本形式)-
都道府県
Shopify(国際形式)Tokyo(英語表記)
POS(日本形式)東京都(日本語表記)
市区町村
Shopify(国際形式)Shibuya
POS(日本形式)渋谷区
住所
Shopify(国際形式)1-2-3 Dogenzaka
POS(日本形式)道玄坂1-2-3
郵便番号
Shopify(国際形式)150-0001
POS(日本形式)150-0001
問題: そのまま保存すると「Tokyo」と「東京都」が混在してしまう
正規化しないと起きる問題
| 問題 | 具体例 | 影響 |
|---|---|---|
| 検索の不一致 | 「東京都」で検索しても「Tokyo」がヒットしない | 顧客検索に支障 |
| 帳票の不統一 | DM宛先が英語と日本語で混在 | ブランドイメージ低下 |
| 分析の困難 | 地域別集計で同じ地域が別カウント | 経営判断に支障 |
| 配送ミス | 住所形式の不整合で配送トラブル | 顧客満足度低下 |
検索の不一致
具体例「東京都」で検索しても「Tokyo」がヒットしない
影響顧客検索に支障
帳票の不統一
具体例DM宛先が英語と日本語で混在
影響ブランドイメージ低下
分析の困難
具体例地域別集計で同じ地域が別カウント
影響経営判断に支障
配送ミス
具体例住所形式の不整合で配送トラブル
影響顧客満足度低下
正規化の方針
都道府県の変換
| 英語 | 日本語 |
|---|---|
| Tokyo | 東京都 |
| Osaka | 大阪府 |
| Hokkaido | 北海道 |
| Kyoto | 京都府 |
| Aichi | 愛知県 |
| Kanagawa | 神奈川県 |
| Saitama | 埼玉県 |
| Chiba | 千葉県 |
| Hyogo | 兵庫県 |
| Fukuoka | 福岡県 |
Tokyo
日本語東京都
Osaka
日本語大阪府
Hokkaido
日本語北海道
Kyoto
日本語京都府
Aichi
日本語愛知県
Kanagawa
日本語神奈川県
Saitama
日本語埼玉県
Chiba
日本語千葉県
Hyogo
日本語兵庫県
Fukuoka
日本語福岡県
(全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
補足: 完璧な日本語化は困難なため、都道府県の変換を優先し、それ以外は入力値を維持
変換テーブルの例
| 英語 | 日本語 | 備考 |
|---|---|---|
| Tokyo | 東京都 | 都 |
| Osaka | 大阪府 | 府 |
| Kyoto | 京都府 | 府 |
| Hokkaido | 北海道 | 道 |
| Aichi | 愛知県 | 県 |
| Fukuoka | 福岡県 | 県 |
| Okinawa | 沖縄県 | 県 |
Tokyo
日本語東京都
備考都
Osaka
日本語大阪府
備考府
Kyoto
日本語京都府
備考府
Hokkaido
日本語北海道
備考道
Aichi
日本語愛知県
備考県
Fukuoka
日本語福岡県
備考県
Okinawa
日本語沖縄県
備考県
実装上の考慮点
変換できない場合の対応
| ケース | 入力例 | 対応 | 理由 |
|---|---|---|---|
| Provinceが空 | Province = "" | そのまま空で保存 | 必須でないフィールドの場合がある |
| 変換テーブルにない | Province = "Toky"(タイポ) | 元の値をそのまま保存 | 下手に変換するより元データを維持 |
| 日本以外の住所 | Country = "United States" | 変換せずそのまま保存 | 日本の住所形式に変換する必要がない |
Provinceが空
入力例Province = ""
対応そのまま空で保存
理由必須でないフィールドの場合がある
変換テーブルにない
入力例Province = "Toky"(タイポ)
対応元の値をそのまま保存
理由下手に変換するより元データを維持
日本以外の住所
入力例Country = "United States"
対応変換せずそのまま保存
理由日本の住所形式に変換する必要がない
双方向の考慮
| 同期方向 | 変換内容 |
|---|---|
| Shopify → POS | 英語 → 日本語 に変換 |
| POS → Shopify | 日本語 → 英語 に変換(必要な場合) |
Shopify → POS
変換内容英語 → 日本語 に変換
POS → Shopify
変換内容日本語 → 英語 に変換(必要な場合)
考慮点:
- 変換は可逆ではない(「渋谷区」→「Shibuya」の変換は複雑)
- 元データを別フィールドに保存(original_address メタフィールドなど)
- 基本的にはShopify → POS の一方向
データ品質の維持
バリデーションルール
| 項目 | ルール | エラー時の対応 |
|---|---|---|
| 郵便番号 | 7桁の数字(ハイフンは除去) | 警告ログ、値は保存 |
| 都道府県 | 変換テーブルに存在 | 変換失敗なら元の値を保存 |
| 住所全体 | 空でないこと | 空なら警告ログ |
郵便番号
ルール7桁の数字(ハイフンは除去)
エラー時の対応警告ログ、値は保存
都道府県
ルール変換テーブルに存在
エラー時の対応変換失敗なら元の値を保存
住所全体
ルール空でないこと
エラー時の対応空なら警告ログ
ログと監視
| ログ項目 | 正常ケース | 変換失敗ケース |
|---|---|---|
| type | address_normalization | address_normalization |
| status | success | partial_failure |
| input.province | Tokyo | Toky |
| output.prefecture | 東京都 | Toky |
| warning | - | Province not found in conversion table |
type
正常ケースaddress_normalization
変換失敗ケースaddress_normalization
status
正常ケースsuccess
変換失敗ケースpartial_failure
input.province
正常ケースTokyo
変換失敗ケースToky
output.prefecture
正常ケース東京都
変換失敗ケースToky
warning
正常ケース-
変換失敗ケースProvince not found in conversion table
監視アラート: 変換失敗率が閾値を超えたら通知
運用上の注意点
顧客による住所変更
住所変更時の対応
顧客が住所変更
ShopifyのマイページでS顧客が住所変更
変更イベントをキャッチ
Webhookで変更を検知
新しい住所を正規化
英語→日本語変換を適用
POSの住所を更新
正規化した住所をPOSに保存
考慮点:
- 変更のタイミング(リアルタイムか、バッチか)
- 競合の可能性(同時に店舗でも変更された場合)
- 履歴の保持(古い住所は配送履歴用に残す)
手動修正の許容
自動変換で不完全な住所の例: 「東京都 Shibuya 1-2-3」
| 対応方法 | 詳細 |
|---|---|
| POS管理画面で手動修正 | 管理者が正しい住所に修正 |
| 修正後は手動値を優先 | 自動同期より手動修正を優先 |
| 上書き防止 | 次回同期で上書きしない設定も検討 |
POS管理画面で手動修正
詳細管理者が正しい住所に修正
修正後は手動値を優先
詳細自動同期より手動修正を優先
上書き防止
詳細次回同期で上書きしない設定も検討
運用ルール:
- 明らかな誤りは手動修正OK
- 修正したら記録を残す
- 同期設定で「手動修正値を保護」をON
この正規化がもたらす効果
データ品質
- 都道府県が統一された形式で保存
- 検索や集計が正確に動作
- 帳票出力の品質向上
運用効率
- 住所に関する問い合わせが減少
- 配送トラブルの予防
- 地域別分析が可能に