はじめに
カスタマバーコード、という、郵便番号と住所を機械で認識しやすくするためのバーコードが存在することを知った。
郵便局のWEBページ→バーコードマニュアル
郵便局のWEBページに、一応カスタマバーコードを作成するページも存在するのだけど……
バラバラの画像の組み合わせになってて、1枚の画像としては簡単に保存できないのである。どうやって使うことを想定しているのだ…?
仕様を読んだら難しくなかったので、SVGで出力するプログラムを作ってみようと思った。
SVGなら拡大してもきれいだし。
まぁ、カスタマバーコードを自分で使う予定はないんだけど。
なので、作ったプログラムを紹介する記事を書いているわけ。
カスタマバーコードって?
はがきとか、封筒とかについてる、↓こんなバーコードのこと。
これは、企業が出すDMのような、大量に送られる郵便物についてることが多い。これには郵便番号と住所が含まれていて、これを付けて出すと郵便料金が割引される。(大量に出さないと割引されないので、個人でバーコードを付ける意味はないよ。というか、個人で勝手にバーコード付けて出してもいいのかな?)
ときどきTwitterとかに住所塗りつぶした手紙の写真載せてる人いるけど、このバーコードも塗りつぶしておかないと住所バレバレ…というのはちょっと前に話題になったやつ。
作ったもの
コマンドラインで、
CustomerBarcodeGenerator.exe <ハイフン無しの郵便番号> <住所表示番号>
のように実行すると、カレントディレクトリに<ハイフン無しの郵便番号>_<住所表示番号>.svg
というファイルが生成される。
レゴランドの場合だと、
CustomerBarcodeGenerator.exe 4558605 2-2-1
となって、
4558605_2-2-1.svg
が生成される。
住所表示番号は、○丁目とか番地とか、マンションだと棟や部屋の番号をハイフンでつなげたもの。□□町3丁目1番地△△マンションB棟123号室とかだと、3-1B123
となる。
詳しくは郵便局のWEBページを見てください。
プログラム自体は、ほぼ、この文字をバーの列に変換する部分がすべてですね。
英字と住所表示番号部の13文字目について
カスタマバーコードで表すことのできる文字数は、固定(郵便番号部7文字、住所表示番号部13文字)である。そのため、住所表示番号が13文字に満たない場合は、制御コード『CC4』で残りを埋める。逆に、超えてしまった場合は、13文字までをコード化して、それ以降は省略する。
また、カスタマバーコードで英字を表す場合は、制御文字と数字の2文字を使ってアルファベットを表す。
ということは、住所表示番号によっては、以下のようにアルファベットの途中で切れることになる。
(Cを表すには、制御コード『CC1』と数字『2』の2文字を使う必要があるが、13文字を超えるため、『2』を入れることができない。)
で、この場合13文字目はどうするのか?
以下のページには、コードの片割れを入れろと書いてある。(上記の図のように、『CC1』を入れる。)
しかし、郵便局WEBのバーコード作成するページでは、はみ出す場合は13文字目は空白のコード『CC4』が入る。
どっちやねん