郵便番号辞書(いわゆる ken_all.csv)のユーティリティです.
- japanpost.jp から辞書 csv を自動ダウンロード
- 住所情報の整形
- 辞書の自動アップデート(月次)
- REST web サーバ付属
- 依存ライブラリ無し
以下の依存を追加します.
dependencies {
implementation 'com.mammb:jpostal:0.2.0'
}
Postal
を生成して初期化します.
Postal postal = Postal.of();
postal.initialize();
生成したインスタンスに郵便番号のクエリを渡すことで、候補の郵便番号と住所が取得できます.
String code = "105001";
Collection<Address> addresses = postal.get(code);
//[{"code": "1050011", "prefecture": "東京都", "city": "港区", "town": "芝公園", "street": ""},
// {"code": "1050012", "prefecture": "東京都", "city": "港区", "town": "芝大門", "street": ""},
// {"code": "1050013", "prefecture": "東京都", "city": "港区", "town": "浜松町", "street": ""},
// {"code": "1050014", "prefecture": "東京都", "city": "港区", "town": "芝", "street": ""}]
REST サーバが必要な場合は jpostal.jar を実行します.
直接ビルドして実行するか、https://github.com/naotsugu/jpostal/releases
から jpostal.jar
をダウンロードして実行します.
$ git clone https://github.com/naotsugu/jpostal.git
$ cd jpostal
$ ./gradlew jar
$ java -jar build/libs/jpostal.jar
または、PostalServer
を使います.
PostalServer server = PostalServer.of(postal);
server.start();
http://localhost:8080/postal/105001
のようにアクセスすることで json フォーマットで結果を取得することができます.
http://localhost:8080/postal/console.html
にアクセスすれば簡易的な住所チェック用のコンソールが表示されます.
以下のオプションがあります.
Postal postal = Postal.of()
.fineAddressSupport(true)
.leftMatchSupport(true)
.leftMatchLimitCount(20)
.officeSourceSupport(false)
.autoUpdateSupport(true);
Option | Default |
---|---|
fineAddressSupport |
true |
leftMatchSupport |
true |
leftMatchLimitCount |
20 |
officeSourceSupport |
false |
autoUpdateSupport |
false |
jpostal.jar
実行時のディレクトリに ken_all.zip
が存在する場合は、このファイルを利用します。
ファイルが存在しない場合は、日本郵政の辞書ファイルを自動でダウンロードします.
ダウンロードしたファイルは jpostal.jar
実行時のディレクトリにダウンロードされるため、次回起動時にはこのファイルを使うようになります.
ダウンロードするファイルは「読み仮名データの促音・拗音を小書きで表記するもの」の全国版です.
オプションで officeSourceSupport
が有効化されていた場合は「事業所の個別郵便番号」jigyosyo.zip
を加えて扱います.
郵政郵便番号は月末に更新分が公開されます。
autoUpdateSupport
を有効にすることで月初(0時〜1時の間のランダムな時刻)に自動更新されます。
leftMatchSupport
を有効にした場合、前方一致で郵便番号を検索します.
leftMatchSupport
を無効にした場合は完全一致検索となります.
前方一致検索で取得する結果件数は leftMatchLimitCount
で指定します.
日本郵政の公開する郵便番号辞書はシステムでそのまま利用できる代物ではないため、各種の整形処理を行っています.
複数行に分割されたレコードを合成した後、com.mammb.code.jpostal.source.TownEditor
にある変換処理を行います.
例えば以下のようなレコードは、
"0580343",..,"北海道","幌泉郡えりも町","東洋(油駒、南東洋、132~156、158~354、366、367番地)"
以下のような住所情報として整形します.
"0580343",..,"北海道","幌泉郡えりも町","東洋","油駒"
"0580343",..,"北海道","幌泉郡えりも町","東洋","南東洋"
"0580343",..,"北海道","幌泉郡えりも町","東洋","366番地"
"0580343",..,"北海道","幌泉郡えりも町","東洋","367番地"
"0580343",..,"北海道","幌泉郡えりも町","東洋",""
fineAddressSupport
オプションを無効にした場合は以下のように編集されます.
"0580343",..,"北海道","幌泉郡えりも町","東洋",""
なお、「事業所の個別郵便番号」については住所情報の編集は行いません.