2025-06-00 に公開
こんにちは、ここあです。
最近は日本郵便のデジタルアドレスAPIや郵便番号APIを簡単に利用できるKotlinマルチプラットフォームライブラリ「Latte」の開発を進めており、それの紹介です。
Latteは、日本郵便が提供するデジタルアドレスAPIと郵便番号APIにアクセスするためのKotlinマルチプラットフォームライブラリです。
✅ 日本郵便の各種APIに対応
✅ 直接利用とプロキシ利用の両方をサポート
✅ トークンの自動再利用機能
✅ Kotlin Coroutines対応
✅ クロスプラットフォーム
まずはLatteクライアントを作成します:
// APIに直接接続する場合
val latte = Latte.of(
url = "https://stb-ssss.da.pf.japanpost.jp",
clientId = "<your client id>",
secretKey = "<your secret key>",
)
// プロキシを使用する場合
val latte = Latte.of(
ConnectionInfo.Proxy(
host = "http://localhost:12345"
).with(DefaultCredentialsProvider)
)
Latteはトークンの取得と管理を簡単にします:
// トークンを取得
val token = latte.token()
// または、withToken()を使って自動的にトークンを管理
latte.withToken { token ->
// ここでAPIを呼び出す
}
withToken()メソッドは、トークンが有効期限内であれば再利用し、期限切れの場合は自動的に新しいトークンを取得します。
郵便番号やデジタルアドレスから住所を検索する例:
latte.withToken { token ->
val result = latte.search(
token = token,
searchCode = "100", // 郵便番号やデジタルアドレス
params = SearchCodeRequest(
limit = 50,
choiki = ChoikiType.WithoutBrackets
)
)
// 結果を処理
result.data.forEach { address ->
println("${address.zipCode}: ${address.prefecture}${address.city}${address.town}")
}
}
住所情報から郵便番号を検索する例:
latte.withToken { token ->
val result = latte.addressZip(
token = token
){
// DSLスタイルでリクエストを構築
this.prefCode = "13" // 東京都
this.cityName = "足立区"
}
// 結果を処理
result.data.forEach { zipCode ->
println("${zipCode.zipCode}: ${zipCode.prefName}${zipCode.cityName}${zipCode.townName}")
}
}
ここでいうプロキシサーバとは、いわゆる日本郵便APIとクライアントの間に構築する中間サーバを指します。
プロキシサーバを利用することで、以下のメリットが見込まれます。
.envファイル):# 日本郵便API設定
LATTE_ENDPOINT_URL=https://stb-ssss.da.pf.japanpost.jp
LATTE_CLIENT_ID=your_client_id
LATTE_SECRET_KEY=your_secret_key
# プロキシサーバー設定
LATTE_SERVER_PORT=12345
LATTE_TOKEN_REFILL_PERIOD=300
LATTE_CALL_TOKEN_COUNT=60
cd server
./gradlew run
val latte = Latte.of("http://localhost:12345")
// 通常通りAPIを利用
latte.withToken { token ->
// APIを呼び出す
}
Latteは内部でKtorを使用してHTTPリクエストを行い、Kotlin Serializationを使用してJSONデータをシリアライズ/デシリアライズします。エラーハンドリングも組み込まれており、ネットワークエラーやAPIエラーを適切に処理します。
// 内部実装の例(簡略化)
suspend fun token(): TokenResponse {
return executeCatching {
ktorHttpClient().post(connectionInfo.host.trimEnd('/') + connectionInfo.tokenPath) {
// リクエスト設定
}
}
}
Latteを使うことで、日本郵便のデジタルアドレスAPIや郵便番号APIを簡単に利用できます。トークン管理やエラーハンドリングなどの面倒な処理はライブラリが担当するので、開発者はビジネスロジックに集中できます。
また、プロキシサーバーを活用することで、セキュリティの向上やリソースの共有も実現できます。
Kotlinマルチプラットフォームに対応しているため、Android、iOS、Webなど、様々なプラットフォームで同じコードを使用できるのも大きなメリットです。