このページの内容は、郵政事業庁(旧郵政省)の『「新郵便番号制導入にともなう料金減額制度の改善」関連資料』1・2・3(リンク切れ)や、t-iwataさんの郵便バーコードのページの情報をもとにして作成しています。どうもありがとうございます。
●住所を記号化する方法
カスタマーバーコードや局内バーコードには、住所の情報が詰まっています。住所を20字分の記号にして、さらにそれをバーコードに変換しているのです。ここでは住所がどうやってバーコードに変換されているのか、体系立てて書いてみたいと思います。
例えば、「東京都千代田区霞が関1丁目2番1号」という住所を考えてみます。
これをまず郵便番号が定められている部分とそうでない部分に分けます。「ポスタルガイド」などを見てみると、「東京都千代田区霞が関」には「100ー0013」という番号がついているので、ここが区切りです。20字のうち7字が、この7つの数字「1000013」となります。郵便番号の間のハイフンは取り除きます。
次に、残りの部分を見てみます。残った「1丁目2番1号」は、数字とハイフンからなるデータ「1ー2ー1」と変換されます。
この二つを合わせたデータ「10000131ー2ー1」が、この住所を表すデータとなります。
●データを抜き出すルール
もちろん日本中の住所がこんな簡単に変換できるわけではありません。そこで、いろいろな住所に対応できるように、住所からデータを抜き出すときの「抜き出しのルール」というものがあります。以下は、「新郵便番号・・・関連資料」の2に書いてあることと同じです。
ーーーーーーーーーーーー
(1)抜き出しの基本ルール
1) まず、データ内にあるアルファベットの小文字は大文字に置き換えます。
2) 同様に、データ内にある「&」等の下記の文字は取り除き、後ろのデータを詰めます。
・「&」(アンパサンド)
・「/」(スラッシュ)
・「・」(中グロ)
・「.」(ピリオド)
3) 1)および2)で整理したデータから、算用数字、ハイフンおよび連続していないアルファベット1文字を必要な文字情報として抜き出します。
4) 次に、抜き出された文字の前にある
・漢字
・かな文字
・カタカナ文字
・漢数字
・2文字以上連続したアルファベット文字
・ブランク
は、ハイフン1文字に置き換えます。
5) 4)の置き換えで、ハイフンが連続する場合は1つにまとめます。
6) 最後に、先頭がハイフンの場合は取り除きます。
(2)抜き出しの補足ルール
1) 漢数字が下記の特定文字の前にある場合は抜き出し対象とし、算用数字に変換して抜き出します。
「丁目」「丁」「番地」「番」「号」「地割」「線」「の」「ノ」
2)連続していないアルファベット1文字は抜き出し対象となりますが、算用数字に続くアルファベット1文字「F」に限っては抜き出し対象としません。
3)2)で更に「F」以降のデータに抜き出し対象となる文字がある場合、「F」はハイフン1文字に置き換えます。
4)抜き出し後のバーコードデータについて、アルファベット文字の前後にあるハイフンは取り除きます。このときに2文字以上の連続したアルファベット文字が残った場合、取り除かないでそのままにします。
ーーーーーーーーーーーー
●いくつか変換してみます。
それでは、いくつかの例を挙げてみます。
例2:「東京都板橋区新河岸2丁目10ー15ー107」
「東京都板橋区新河岸」には、「175ー0081」という番号がついているので、これからハイフンを取り除いた「1750081」が始めの7文字となります。残った「2丁目10ー15ー107」は、「丁目」がハイフンに置き換わるため「2ー10ー15ー107」となります。
これを合わせた「17500812ー10ー15ー107」がデータとなります。
例3:「東京都新宿区西新宿1丁目5ー1小田急別館ハルクM2」
「東京都新宿区西新宿」は「160ー0023」という番号がついています。残りの部分を「基本ルール」に沿って取り出すと「1ー5ー1ーM2」となり、さらに補足ルールの(4)によってこれは「1ー5ー1M2」になります。
これらを合わせた「16000231ー5ー1M2」がデータとなります。
例4:「東京都中央区八重洲1丁目7ー4」
「東京都中央区八重洲」には、郵便番号が二つあって、八重洲1丁目は「103ー0028」、2丁目は「104ー0028」と記されています。この場合、後ろのデータは「1丁目7ー4」として、「10300281ー7ー4」がデータとなります。
●アルファベットと余白を数字にします
さらにこれに一処理ほどこします。
データ内の数字(0〜9)はそのまま使います。またハイフンもそのまま使いますが、ハイフンには数字「10」を当てはめておきます。
残るのはアルファベットですが、これは以下のように2つの数字に置き換えます。
2文字目 0 1 2 3 4 5 6 7 8 9
1文字目
11 A B C D E F G H I J
12 K L M N O P Q R S T
13 U V W X Y Z
このようにすると、例3のデータは「160002311051011222」となります。
一番最初に「20文字」と言いましたが、住所によってはこれより長くなってしまうこともあります。この時は、21文字以降を切り捨てます。
例5:「長野県上伊那郡飯島町田切2739ー4ー53ーEー9」
これは、「3993701273910410531011510」となって、最後の9が切れます。
また、20文字に満たないこともあります。まずほとんどの場合そうだと思います。この時は、20文字になるまで「14」を付けていきます。例3のデータは、「1600023110510112221414141414」となります。
なお、最後の「14を付ける」というのは報道発表によるもので、「新郵便番号・・・関連資料」の3に書かれていますが、自分のところに来た郵便物の中で、郵便局が貼った転送用の住所シールには「17」がつけられていました。このあたり、厳しい決まりはないのかもしれません。
●チェックデジット
最後に、これが一番興味深いのですが、上のようにして得られた20個の数字を全部加えていきます。「3993701273910410531011510」なら121ですが、この数に0〜18の数を加えて19の倍数になるようにします。
ここでは121+12=133=19×7となるので、12がその数にあたります。これを最後に書き加えるのです。「399370127391041053101151012」というようになります。
この数字を「チェックデジット」と言って、たぶんバーコード内に間違いがないか確認する役割があるのだと思いますが、これについて詳しくは分からないのでここでは書きません。
●バーコードを解読します
こうして無事に、住所一つ一つが20(+1)個の数字に置き換わりました。次に、この数字とバーコードの対応、そしてIDバーコードの解読をしてみたいと思います。