Licence
MIT
Version
1.0.202607
Deps
0
Size
108.4 MB
Vulns
0
Weekly
0
Jpostcode
郵便番号から日本の住所を検索する JavaScript ライブラリです。フォームの住所自動入力など、外部 API を呼ばずにブラウザや Node.js だけで完結します。
特徴
- 毎月自動更新 — 上流の jpostcode-data の更新を検知して新バージョンを npm に自動公開(バージョン
MAJOR.MINOR.YYYYMM) - 公式 CDN あり — Cloudflare Pages からライブラリ本体と郵便番号データを配信
- API サーバー不要 — ブラウザだけで完結
- TypeScript 対応 — 完全な型定義付き
- Node / ESM / ブラウザ対応 — どの環境でも使える
クイックスタート(ブラウザ + CDN)
コピペで動きます。
<script src="https://jpostcode-js.pages.dev/dist/jpostcode-web.js"></script>
<script>
Jpostcode.setBaseUrl('https://jpostcode-js.pages.dev/data/json/');
Jpostcode.find('1000001').then(addresses => {
console.log(addresses[0]?.prefecture); // 東京都
});
</script>ライブラリ本体・郵便番号データともに Cloudflare Pages から配信しています。
- 上流データの月次更新を反映して自動再配信
- 東京を含む Cloudflare エッジから低レイテンシで配信
- JSON データには
s-maxage=2592000(エッジ 30 日)/max-age=86400(ブラウザ 1 日)のキャッシュヘッダ
フォーム住所自動入力の例
7 桁の郵便番号が入力されたら、都道府県・市区町村・町域を自動で埋める例です。
<input id="zip" placeholder="郵便番号(例: 1000001)">
<input id="prefecture" placeholder="都道府県">
<input id="city" placeholder="市区町村">
<input id="town" placeholder="町域">
<script src="https://jpostcode-js.pages.dev/dist/jpostcode-web.js"></script>
<script>
Jpostcode.setBaseUrl('https://jpostcode-js.pages.dev/data/json/');
document.getElementById('zip').addEventListener('input', async (e) => {
const zip = e.target.value.replace(/[^0-9]/g, '');
if (zip.length !== 7) return;
const [address] = await Jpostcode.find(zip);
if (!address) return;
document.getElementById('prefecture').value = address.prefecture;
document.getElementById('city').value = address.city;
document.getElementById('town').value = address.town;
});
</script>インストール(npm)
npm install jpostcodeNode.js (CommonJS)
const { Jpostcode } = require('jpostcode');
const addresses = Jpostcode.find('0010000');
for (const address of addresses) {
console.log(`${address.prefecture} ${address.city} ${address.town}`);
console.log(`(カナ: ${address.prefectureKana} ${address.cityKana} ${address.townKana})`);
}Node.js (ESM) / TypeScript
import { Address, Jpostcode } from 'jpostcode';
const addresses: Address[] = Jpostcode.find('0010000');
console.log(addresses[0]?.prefecture);Jpostcode.find() は配列を返します(同じ郵便番号に複数住所が紐づく場合があるため)。郵便番号が存在しない場合は空配列を返します。
ブラウザ・Bundle 版(全データ同梱・同期 API)
すべてのデータを JS に同梱するためファイルサイズは大きくなりますが、ネットワークを使わずに同期 API で呼び出せます。
<script src="https://cdn.jsdelivr.net/npm/jpostcode@latest/dist/jpostcode-web-bundle.js"></script>
<script>
const addresses = Jpostcode.find('1000001'); // Promise ではなく同期
console.log(addresses[0]?.prefecture);
</script>データの鮮度について
- 上流の jpostcode-data が月次で日本郵便の最新データを取り込みます
- 本ライブラリは GitHub Actions で上流の更新を検知し、新バージョンを自動で npm / CDN に公開します
- バージョン
MAJOR.MINOR.YYYYMMのYYYYMMがデータ取得時期を表します(例:1.0.202605は 2026 年 5 月版) - npm を使う場合は依存を更新するだけ、CDN を使う場合は何もしなくても最新になります
デモ
ライブデモ: https://matzlika.github.io/jpostcode-js/
ローカルで動かす場合:
npm install
npm run build
mkdir -p docs/dist && cp -r dist/* docs/dist/
npx http-server docs -p 8000開発
npm install
npm run build # CommonJS / ESM / ブラウザ版を生成
npm test貢献
issue や Pull Request を歓迎します。
謝辞
このライブラリは jpostcode-data (Copyright 2023 SmartHR, Inc., MIT License) のデータを使用しています。メンテナと貢献者の皆様に感謝いたします。
ライセンス
MIT。サードパーティ著作権表示は NOTICE を参照してください。
English: README.en.md