# 概要
個人で運営しているサービスです。
郵便番号から住所や、住所から郵便番号を検索するAPIの開発をしました。
また、特定の郵便番号が、特定の地域に含まれてるかを判定するAPIを開発しました。
詳しくはzennに記事を書きました。
https://zenn.dev/grasebit/articles/ab4333fcbcc34b
# サイト
https://api-zipcode.jp/
# 主な技術
* PHP7.4
* laravel8.x
* MySQL8.0
* aws (ec2,ALB,Route53)
# 主な取り組み
* laravelを使いスクラッチで開発
* トークン認証
* ユーザーがAPIを使用する際のトークン認証の実装
* ポイント管理システム
* ユーザーはポイントを消費してAPIを利用する従量課金方式のため、クレジットによるポイントの追加と、API使用によるポイント消費の実装
* クレジット決済で外部サービスと連携
* ポイントチャージのためのクレジット決済の実装
* ポイントが少なくなた際に、自動でクレジット決済してポイントをチャージする仕組みの実装
* 日本郵便が公開してる郵便番号csvからデータベースへの取り込みやデータ整形の実装
# 苦労した点
個人でクレジット決済を導入するための調査や準備と、PAY.JPの審査から承認までの作業がわからないことが多く苦労しました。規約やプライバシーポリシーの作成や、ポイントに有効期限を設定する必要があり、期限切れになったポイントを自動で無効にする機能が必要でした。
日本郵便が公開してる郵便番号csvは約14万行あり、また一つの郵便番号が複数行に分かれていたりと非常にクセのある構造のため、それを整形してデータベース化するのに苦労しました。
郵便番号csvは、一般の郵便番号、事業所郵便番号、ローマ字表記がそれぞれcsvファイルに分かれてるため結合する必要がありました。構築の速度改善も行い約5分でデータベースを構築します。