ZIP Code・Postal Code・Postcode・PIN Code:世界の郵便番号の違いを徹底解説

Bob
Bob
ENJAKORUZH

ひとことで言うと: ZIP Code はアメリカ、Postal Code はカナダ、Postcode はイギリスとオーストラリア、PIN Code はインドで使われる呼び方です。どれも「郵便物を正しい届け先に届ける」という目的は同じですが、フォーマット・文字種・桁数・区切り文字のルールはそれぞれ異なります。国際対応のアドレスフォームを開発するとき、すべてを「zip code」という 1 つのフィールドで済ませようとすると、バグの温床になります。

各用語の意味

ZIP Code(アメリカ)

ZIP は Zone Improvement Plan の略で、1963 年に USPS が導入しました。基本フォーマットは 5 桁の数字(例:90210)。拡張形式の ZIP+4 はハイフンのあとに 4 桁を追加し(例:90210-1234)、特定のブロックや建物まで絞り込めます。

Postal Code(カナダ)

カナダでは A1A 1A1 というパターンの 6 文字を使います。英字と数字が交互に並び、真ん中にスペースが入ります。前半 3 文字(Forward Sortation Area)が地理的な区域、後半 3 文字(Local Delivery Unit)が具体的な届け先を示します。混同を避けるため、D・F・I・O・Q・U の英字は使われません。

Postcode(イギリス)

UK のポストコードはやや複雑で、「英字 1〜2 文字 + 数字 1〜2 桁 + 任意の英字 + スペース + 数字 1 桁 + 英字 2 文字」という構造です。例えば SW1A 1AA(バッキンガム宮殿)や EC2R 8AH。スペースの前(outward code)がエリアと地区、後ろ(inward code)がセクターと届け先を表します。

PIN Code(インド)

PIN は Postal Index Number の略で、6 桁の数字だけで構成されます(例:110001)。1 桁目が地域、2 桁目が副地域、3 桁目が仕分け区、残りの 3 桁が具体的な郵便局を示します。

国別比較表

呼称フォーマット桁数文字種区切り
アメリカZIP CodeNNNNN or NNNNN-NNNN5 or 10数字のみ10001, 90210-1234ZIP+4 でハイフン
カナダPostal CodeA1A 1A17(スペース込み)英字+数字K1A 0B1, V6B 3K9中央にスペース
イギリスPostcodeA9 9AAAA9A 9AA6-8(スペース込み)英字+数字SW1A 1AA, M1 1AE末尾 3 文字の前にスペース
オーストラリアPostcodeNNNN4数字のみ2000, 3000なし
ドイツPostleitzahl (PLZ)NNNNN5数字のみ10115, 80331なし
日本郵便番号NNN-NNNN8(ハイフン込み)数字のみ100-00013 桁目の後にハイフン
インドPIN CodeNNNNNN6数字のみ110001, 400001なし
フランスCode PostalNNNNN5数字のみ75001, 13001なし
ブラジルCEPNNNNN-NNN9(ハイフン込み)数字のみ01001-0005 桁目の後にハイフン
韓国우편번호NNNNN5数字のみ03171, 06164なし

開発者がこの違いを知っておくべき理由

複数の国のユーザーに対応するアプリで、zip_code VARCHAR(5) や数字のみの正規表現を使っていると、世界の大半の国で不具合が起きます。ありがちなミスを見ていきましょう。

ミス 1:数字だけの入力を強制する

カナダの郵便番号(V6B 3K9)や UK のポストコード(SW1A 1AA)など、英字を含む国は多数あります。数字のみのバリデーションルールは、これらの国の正当なアドレスを即座に弾いてしまいます。

ミス 2:スペースを除去する

UK ポストコードやカナダ Postal Code のスペースには意味があります。Royal Mail の宛名ガイドラインによると、SW1A1AA のようにスペースを取った形式は厳密には非標準です。郵便物は届くかもしれませんが、厳密なバリデーションには通りませんし、その国のユーザーから見ると「間違っている」ように映ります。

ミス 3:固定桁数を強制する

郵便番号の長さは 3 文字(アイスランド:101)から 10 文字(米国 ZIP+4:90210-1234)まで幅があります。桁数をハードコードすると、想定外の国の正規コードを拒否してしまいます。

ミス 4:万能な正規表現を 1 つだけ使う

すべての国の郵便番号を正しくバリデーションできる単一の正規表現は存在しません。米国 ZIP 用の ^\d{5}(-\d{4})?$ は、カナダ・UK・日本・ブラジルのコードをすべて不正と判定します。国ごとに分けたバリデーションが唯一の確実な方法です。

ミス 5:すべての国のユーザーに「ZIP Code」と表示する

カナダやイギリスのユーザーがいるフォームで「ZIP Code」と書くと、混乱を招きます。その用語を知らなかったり、「アメリカ専用のフォームだ」と思われたりします。「Postal Code」や「Postcode」を汎用ラベルにするか、選択された国に応じてラベルを動的に切り替えましょう。

データベース設計のおすすめ

すべての国を zip_code CHAR(5) に押し込めるのは やめましょう。実用的なガイドラインはこちらです:

推奨スキーマ:
  postal_code VARCHAR(20)   -- あらゆるフォーマットに対応
  country_code CHAR(2)      -- ISO 3166-1 alpha-2

インデックス:(country_code, postal_code)

ポイント:

  • ユーザーが入力した そのままの形式 で保存する(スペースやハイフンを含めて)
  • 正規化(スペース・ハイフン除去)は検索ロジック側でのみ行い、保存時には変えない
  • CHAR ではなく VARCHAR を使う——末尾パディングが比較バグを引き起こす
  • フィールド長は余裕をもたせる(VARCHAR(20))——エッジケースや将来のフォーマット変更にも対応
  • 郵便番号には必ず country_code をセットで保存——同じ文字列(例:10001)が複数の国で有効な場合がある

国別バリデーション戦略

正しいアプローチは国ごとに分けたバリデーションです。主要フォーマットの正規表現をまとめます:

正規表現パターン備考
アメリカ^\d{5}(-\d{4})?$ZIP+4 は任意
カナダ^[A-Za-z]\d[A-Za-z]\s?\d[A-Za-z]\d$スペースは入力時任意
イギリス^[A-Z]{1,2}\d[A-Z\d]?\s?\d[A-Z]{2}$複雑なのでライブラリ推奨
ドイツ^\d{5}$常に 5 桁
日本^\d{3}-?\d{4}$ハイフンは任意
インド^\d{6}$常に 6 桁
オーストラリア^\d{4}$常に 4 桁
ブラジル^\d{5}-?\d{3}$ハイフンは任意
フランス^\d{5}$常に 5 桁
韓国^\d{5}$常に 5 桁(2015 年以降)

重要: 正規表現が検証するのは フォーマット であって、実在性 ではありません。00000 は米国の正規表現を通過しますが、有効な ZIP Code ではありません。実在性の確認には郵便データベースの照会やバリデーション API が必要です。

複数国の郵便番号処理をテストするには

国際アドレス対応を構築するには、ターゲット国ごとのテストデータが必要です。各国のフォーマットを手動で調べる代わりに、AddressGen でフォーマットの正しいサンプルアドレスを生成できます:

カナダのシステムをさらに詳しく知りたい方は、カナダの郵便番号システム入門もご覧ください。

国ごとにアドレスを生成すれば、以下をカバーするテストマトリクスを作れます:

  • すべての文字種(数字のみ、英字のみ、混合)
  • すべての区切り種別(スペース、ハイフン、なし)
  • 最短と最長の桁数
  • エッジケース(先頭ゼロ、英数字の交互パターン)

開発者向け実装チェックリスト

国際アドレスフォームを作る・レビューするときの確認リストです:

  • 郵便番号フィールドが英字・数字・スペース・ハイフンを受け付ける
  • フィールド長が最低 10 文字ある
  • バリデーションルールが選択された国に応じて切り替わる
  • フィールドラベルが国に合わせて変わる(ZIP Code / Postal Code / Postcode / PIN Code)
  • スペースとハイフンが保存時にそのまま残る
  • データベースカラムが VARCHAR である(CHARINT ではない)
  • 万能正規表現ではなく国別パターンを使っている
  • 先頭ゼロが保持される(例:米国 01001、オーストラリア 0800
  • テストデータがフォーマット規則の異なる 5 か国以上をカバーしている

よくある質問

「ZIP Code」と「Postal Code」は同じものですか?

機能的には同じで、どちらも郵便物を届け先にルーティングする仕組みです。ただし「ZIP Code」は USPS のアメリカ専用商標で、「Postal Code」は国際的な総称です。カナダでは「Postal Code」が正式名称。UI で間違った用語を使うと、ユーザーに違和感を与えます。

郵便番号がゼロで始まるのはなぜ?

アメリカでは北東部の州の ZIP Code が 0 で始まります(例:マサチューセッツ州 Amherst の 01001)。オーストラリアではノーザンテリトリーのコードが 0 始まりです(例:0800)。郵便番号を整数型で保存すると先頭ゼロが消えて無効なコードになります。郵便番号は必ず文字列として保存してください。

同じ郵便番号が複数の国に存在することはありますか?

あります。10001 はアメリカ(ニューヨーク)でも韓国(ソウル)でも有効なコードです。75001 はフランス(パリ)で有効で、他の国でもそれらしく見えるかもしれません。だからこそ、データベースでは郵便番号と国コードを必ずセットで管理する必要があります。

郵便番号のフォーマットは誰が決めていますか?

各国の郵便局がそれぞれ定めています。主な参考先:


本記事は教育・開発の参考を目的としています。対象国の最新の公式郵便ドキュメントでフォーマットをご確認ください。