どこでもない郵便番号は存在しますか?

いいえ。

郵便番号とは

郵便番号・バーコードマニュアルによれば、郵便番号とは以下のような特徴を持つ番号である。

  • 7桁の算用数字を使用して表記される。
  • 3桁目と4桁目の間にハイフンを入れる。
  • ある郵便番号は1つの町域(町、字、大口配達先、超高層ビル)に対応する。

郵便区番号

郵便番号が7桁になったのは、1998年のことである1。それまでは、1968年の郵便番号導入以降3桁(大規模局)と5桁(それ以外の局)の地域が混在していた2

郵便番号の上3桁または5桁は、旧郵便番号から引き継いだ郵便区番号を表している。郵便区とは、配達を受け持つ郵便局の単位で区切った範囲である。郵便区番号一覧によれば、およそ市または特別区の単位で郵便区が設定されていることが分かる。

ここで注目すべき点は、郵便番号の上2桁が郵便区番号をまとめた地域番号となっているということである。00(北海道関連)から99(山形県関連)まで、おおよそ都道府県をベースにした地域でまとめられている。この地域番号は00~99まで隙間なく割り振られており、郵便番号の上2桁を取り出せばどの地域か必ず判明する。

町域番号

旧郵便番号がそれぞれ7桁になるように町域番号を付加することで、あらゆる郵便番号は7桁となった。旧3桁地域の4桁目と5桁目については、以下のようなルールで運用されている。

  • 00、08~09、80~84、88~89は郵便区内の大ブロックを表す。
  • 85~87は大口配達先や私書箱の個別番号を表す。

町域番号は町や字、大字だけではなく、大口配達先の個別番号や超高層ビルの階層に割り振られることもある。

「存在しない」郵便番号

郵便番号データを用いることで、存在しない郵便番号の候補を抽出できる。

最も大きな郵便番号ブロックが必要なら、郵便番号データに存在しない上3桁を取り出すといいだろう。

#!/bin/bash
diff -u \
  <(grep -oP '(?<=^")[0-9]{3}' KEN_ALL_ROME.CSV | sort | uniq) \
  <(seq -f %03g 0 999) | grep -oP '(?<=^\+)[0-9]+'

以下のような結果が得られる。

000
008
009
032
109
...
748
908
909
977
978

この上3桁に任意の4桁の数字を付加すれば、存在しない郵便番号を作ることができる。もちろん、現行の郵便番号運用ルールには気を払うべきだろう。

もしもっと小さなブロックが欲しいのなら、上5桁で取り出すこともできる。

#!/bin/bash
diff -u \
  <(grep -oP '(?<=^")[0-9]{5}' KEN_ALL_ROME.CSV | sort | uniq) \
  <(seq -f %05g 0 99999) | grep -oP '(?<=^\+)[0-9]+'

以下のような結果が得られる。

00000
00001
00002
00003
00004
...
99995
99996
99997
99998
99999

3桁の結果と比較すると、999で始まる郵便番号は存在するが、999-99で始まる郵便番号は存在しないということが分かる。

「どこでもない」郵便番号

しかし、存在しない郵便番号は、例外なくいずれかの地域に所属してしまう。先述の通り、郵便番号の上2桁が地域番号としてあらゆる都道府県に割り振られているからだ。

実際、存在しない上2桁を取り出す以下のスクリプトは何も返さない。

#!/bin/bash
diff -u \
  <(grep -oP '(?<=^")[0-9]{2}' KEN_ALL_ROME.CSV | sort | uniq) \
  <(seq -f %02g 0 99) | grep -oP '(?<=^\+)[0-9]+'

とはいえ、創作の中で7桁の郵便番号を用いる限りは、おそらく日本か日本によく似た地域を想定することが多いだろう。そう考えれば、むしろ舞台設定の助けになるのかもしれない。

演習問題

以下の郵便番号がどこの地域に属するか推測しよう。

参考

「読んだ」を押すと、あなたがボタンを押した事実を明示的に通知してこのページに戻ります。
このページに戻ってからブラウザの「戻る」ボタンを押すと、何度か同じページが表示されることがあります。

More information...