「Pythonの基礎文法は終わったけど、次に何をしたらいいかわからない…」
「APIってよく聞くけど、なんだか難しそう…」

APIって難しそうなんですが..
簡単に使えるんですか?

今回は郵便番号から住所を自動で取得できるAPIを使ってみましょう!
意外と簡単に使えるんですよ!
一緒に使ってみましょう!!
そんな方におすすめなのが、郵便番号から住所を自動で取得できる「ZipCloud(ジップクラウド)API」を使ったプログラミングです!
ZipCloud APIは完全無料・面倒なユーザー登録や認証キーが一切不要なので、APIの練習にぴったりのサービスです。
この記事では、基本の住所取得から、実務で使える「CSV一括処理(自動化)」、さらに自分だけの「デスクトップアプリ化(GUI)」まで、ステップ・バイ・ステップでわかりやすく解説します。
はじめに:準備をしよう
Pythonでインターネット上のデータ(API)を取得するには、requests という便利なライブラリを使います。
まずは、コマンドプロンプト(Windows)やターミナル(Mac)を開いて、以下のコマンドを実行しインストールしておきましょう。
pip install requests
これで準備は完了です!
さっそくコードを書いていきましょう。
【基本編】たった数行!郵便番号から住所を取得しよう
まずは、指定した郵便番号(今回は東京都千代田区の1000001)の住所を取得する一番シンプルなプログラムです。
以下のコードをコピペして実行してみてください。
import requests
# 1. APIのURLと、検索したい郵便番号を設定
url = "https://zipcloud.ibsnet.co.jp/api/search"
params = {"zipcode": "1000001"} # ハイフンなしの7桁
# 2. APIにデータをお願いする(リクエストを送る)
response = requests.get(url, params=params)
# 3. 返ってきたデータをPythonで扱いやすい形(JSON形式)に変換
data = response.json()
# 4. 欲しいデータ(住所)だけを取り出して表示する
results = data["results"][0]
address = results["address1"] + results["address2"] + results["address3"]
print("取得した住所:", address)
【実行結果】
取得した住所: 東京都千代田区千代田
たったこれだけで、インターネット上からデータを持ってくることができました!
流れは非常にシンプルで、「URLと郵便番号を準備」→「リクエストを送る」→「結果をデータとして取り出す」だけです。
この流れは、世界中のどんなAPI(天気、LINE、AIなど)を使うときでも基本になります。
【応用編①】実務で大活躍!CSVリストから住所を一括取得(自動化)
基本がわかったところで、Pythonの強みである「自動化」に挑戦しましょう。
「Excelに100件の郵便番号があるから、全部の住所を調べておいて!」と頼まれたときに、数秒で終わらせることができる魔法のスクリプトです。
プログラムと同じフォルダに、以下のような input.csv を作成してから実行してください。
▼ input.csv の中身
1000001
5300001
0600000
▼ プログラムコード
import requests
import csv
import time # 待ち時間を作るためのライブラリ
url = "https://zipcloud.ibsnet.co.jp/api/search"
# ファイルを読み込み用(input)と書き込み用(output)で開く
with open("input.csv", "r", encoding="utf-8") as f_in, \
open("output.csv", "w", encoding="utf-8", newline="") as f_out:
reader = csv.reader(f_in)
writer = csv.writer(f_out)
writer.writerow(["郵便番号", "住所"]) # 1行目の見出し
# CSVを1行ずつ読み込んでループ処理
for row in reader:
zipcode = row[0]
# APIにリクエスト
response = requests.get(url, params={"zipcode": zipcode})
data = response.json()
address = "エラーまたは見つかりません"
# 正常に取得できたかチェック
if data["status"] == 200 and data["results"] is not None:
result = data["results"][0]
address = result["address1"] + result["address2"] + result["address3"]
# 結果を新しいCSVに書き込む
writer.writerow([zipcode, address])
print(f"{zipcode} の処理が完了: {address}")
# ★超重要★ サーバーに負荷をかけないよう1秒待つ
time.sleep(1)
print("完了!output.csv に保存されました。")
💡 ここがポイント:time.sleep(1) を忘れずに!
プログラムは人間より圧倒的に速く動きます。
一気に大量のアクセスをすると、APIの提供元サーバーがパンクしてしまいます。
ループ処理でAPIを使うときは、必ず1秒程度の待機時間を入れるのがプログラマーとしてのマナーです。
【応用編②】自分だけのツール作り!デスクトップアプリ(GUI化)
黒い画面(コマンドプロンプト)で動かすだけでなく、普段使っているような「ウィンドウ画面」を持ったアプリを作ってみませんか?
Pythonに標準搭載されている tkinter(ティーキンター)を使えば、簡単にアプリが作れます。
以下のコードを実行してみてください!
import requests
import tkinter as tk
from tkinter import messagebox
# 検索ボタンが押されたときの処理
def click_search_button():
zipcode = entry_zip.get() # 入力欄の文字を取得
url = "https://zipcloud.ibsnet.co.jp/api/search"
response = requests.get(url, params={"zipcode": zipcode})
data = response.json()
if data["status"] == 200:
if data["results"] is not None:
result = data["results"][0]
address = result["address1"] + result["address2"] + result["address3"]
# 画面の文字を住所に書き換える
label_result.config(text=f"住所:{address}")
else:
messagebox.showerror("エラー", "該当する郵便番号がありません")
else:
messagebox.showerror("エラー", "入力が正しくありません")
# --- 画面(ウィンドウ)のデザイン ---
root = tk.Tk()
root.title("郵便番号検索アプリ")
root.geometry("350x200")
# 部品を作って配置 (pack)
label_guide = tk.Label(root, text="郵便番号を入力してください(ハイフンなし)")
label_guide.pack(pady=10)
entry_zip = tk.Entry(root, width=20)
entry_zip.pack(pady=5)
button_search = tk.Button(root, text="検索する", command=click_search_button)
button_search.pack(pady=10)
label_result = tk.Label(root, text="住所:ここに結果が表示されます", font=("", 12))
label_result.pack(pady=10)
# アプリを起動
root.mainloop()
実行すると、小さなウィンドウが立ち上がります。
入力欄に好きな郵便番号を入れて「検索する」ボタンを押すと、画面上に住所が表示されます。
エラー処理(存在しない番号を入力した時など)も入れているので、立派な実用ツールです!
まとめ
今回は「ZipCloud API」を使って以下の3つを解説しました。
- 基本:requests を使ったデータ取得の方法
- 自動化:csv を使って面倒な一括変換を自動化する方法
- アプリ化:tkinter を使ってGUIツールを作成する方法
今回学んだ「外部のAPIからデータを取得し、それをPythonで加工・表示する」という技術は、あらゆるシステム開発の基礎になります。
「天気のAPI」で毎朝LINEに天気を通知させたり、「OpenAIのAPI」でオリジナルのAIチャットボットを作ったり……アイデア次第で可能性は無限大です。
ぜひ今回のコードをアレンジして、Pythonプログラミングの楽しさを体感してみてくださいね!
本ブログ「ゴマフリーダムのPython教室」のトップページへは以下へアクセス!


達人に学ぶDB設計 徹底指南書