title: どこでもない郵便番号は存在しますか？
author: Amane Katagiri
summary: いいえ
date: 2021-05-22T11:29:00+09:00
category: tech
license: CC BY 4.0
rating: sfw
ai_summary: 日本の郵便番号（7桁）の仕組みと構造を解説した記事です。郵便区番号や町域番号の規則性を紐解き、公式データから現在使用されていない「存在しない郵便番号」を抽出する方法を提示しています。一方で、上2桁の地域番号は00から99まで全ての数字が都道府県等に割り振られているため、形式的に「どこの地域にも属さない」番号は存在しないと指摘しており、創作物で架空の番号を設定する際の参考になる内容です。
ai_keywords: 郵便番号, 日本郵便, 郵便区番号, 地域番号, 町域番号, 7桁化, データ分析, シェルスクリプト, 都道府県, 創作設定

いいえ。

[TOC]

# 郵便番号とは

[郵便番号・バーコードマニュアル](https://www.post.japanpost.jp/zipcode/zipmanual/p04.html)によれば、郵便番号とは以下のような特徴を持つ番号である。

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

## 郵便区番号

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

[^7digit]: [郵便番号が7桁になったのはいつからですか？ - 日本郵便](https://www.post.japanpost.jp/question/36.html)
[^35digit]: [郵便番号 - Wikipedia](https://ja.wikipedia.org/wiki/%E9%83%B5%E4%BE%BF%E7%95%AA%E5%8F%B7#%E6%97%A5%E6%9C%AC)

郵便番号の上3桁または5桁は、旧郵便番号から引き継いだ郵便区番号を表している。郵便区とは、配達を受け持つ郵便局の単位で区切った範囲である。[郵便区番号一覧](https://www.post.japanpost.jp/zipcode/dl/bangobo/zip_bgb.pdf)によれば、およそ市または特別区の単位で郵便区が設定されていることが分かる。

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

## 町域番号

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

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

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

# 「存在しない」郵便番号

[郵便番号データ](https://www.post.japanpost.jp/zipcode/dl/roman-zip.html)を用いることで、存在しない郵便番号の候補を抽出できる。

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

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

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

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

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

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

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

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

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

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

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

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

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

```sh
#!/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桁の郵便番号を用いる限りは、おそらく日本か日本によく似た地域を想定することが多いだろう。そう考えれば、むしろ舞台設定の助けになるのかもしれない。

# 演習問題

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

* [269-4202](/post/lily-letter-film/#_9)
* [429-4215](/post/lily-letter-film/#_9)
* [977-0868](/post/lily-letter-film/#_9)

# 参考

* [郵便番号・バーコードマニュアル 郵便番号 | 日本郵便株式会社](https://www.post.japanpost.jp/zipcode/zipmanual/p04.html)
* [郵便番号簿PDF（2020年度版）表紙等付属資料](https://www.post.japanpost.jp/zipcode/dl/bangobo/zip_bgb.pdf)
* [郵便番号データダウンロード 住所の郵便番号（ローマ字） zip形式 - 日本郵便](https://www.post.japanpost.jp/zipcode/dl/roman-zip.html)
