ketyiaの作ってみた

このサイトでは作ってみたことを記事にまとめていきます!

PHPで郵便番号から住所を取得するAPIを使ってみる

こんにちは!IT勉強中のKeitaです!

プログラムを勉強したり使っていると、APIというものが出てくると思います!
私はこれを理解するのに結構苦労しましたが、これを使えるようになるとシステムやサイトの質や開発の効率が劇的に良くなるとても重要な技術だと思います!

なので今回は、郵便番号から住所を取得するAPIを使用して実際に触りながら、APIの理解を深めていこうと思います!

APIとは?


APIとはApplication Programming Interfaceという正式名称文字から頭文字をとっています!

外部で公開されているソフトウェアやアプリケーションなどの一部を、開発するソフトウェアと機能に共有できるようにするものです!

具体例でいうと、
お店を紹介するWEBサイトを開発するときに、お店の場所のマップを配置したいとします。その際にマップを一から作ろうとすると時間と労力がすごくかかります。そこで、Googleマップ等の外部システムのマップAPIを使用してお店の場所のマップを簡単に実装できる。わーい

というものです。はい
詳しく知りたい方は別のサイトを参考にしてみてください!

郵便番号検索APIをみてみよう!


さて、さっそく郵便番号から住所を取得するAPIを実装していこうと思うのですが、まずはAPIを公開してくれているサイトをみてみましょう!

このサイトで提供してくれています!

このURLでリクエストを行うと情報を取得できるみたいですね!
※例として郵便番号1000001を取得します!
ーーーーーーーーーーーーーーーーー
https://zipcloud.ibsnet.co.jp/api/search?zipcode=1000001
ーーーーーーーーーーーーーーーーーー

ではこれを取得する処理をPHPで書いていこうと思います!

PHPで書いてみよう!


処理の流れは以下です

・リクエストURLをUTF8形式で設定する
・リクエストURLをもとにJSON形式で値を取得する
・取得した値からデータを取り出す

コードは下記になります!
APIのところのみを記載します。
ーーーーーーーーーーーーーーーーーー

<?php
// フォーム形式で値を受け取る
$key = $_POST['key'];
unset( $_POST['key']);

//単品用
//$key = '1000001'


// URLを設定


// URLをUTF8文字列で取得する
$resJson = mb_convert_encoding(file_get_contents($url), 'UTF8');


// JSON形式で取得
$res = json_decode($resJson,true);


// 値をそれぞれ取得する
$prefecture = $res['results'][0]['address1'];
$city = $res['results'][0]['address2'];
$city2 = $res['results'][0]['address3'];
$code = $res['results'][0]['zipcode'];

print("「{$code}」<br>の住所は<br>「{$prefecture}{$city}{$city2}」");

 

ーーーーーーーーーーーーーーーーーー


問題なくデータを取得することができました。

これを活用すると、登録フォームで郵便番号を入力したら住所の入力箇所が自動で表示されるということができますね!実際によく目にしますし。はい

とこんな感じでAPIを体験してみました。とても便利ですね!
ソースコードこちらで見れますので、よかったら見てみてください!

最後に


簡単なものですが、APIを使い住所を取得する流れを作成してきました。

以前、受けたPHP技術者認定試験にもAPIに関する問題が少しあり、興味があって触ってみたいと思っていたのですが、時間の都合上理解することのみにしていたので、今回触れて理解が深めることができてよかったなと思います!

今回触ったのは、APIのほんの一角でまだまだすごいことができるのでもっと勉強して使いこなせるようになりたいと思います!!