Python×ZipCloud API入門:郵便番号検索からCSV処理・アプリ作成まで完全解説

PRについて
※このサイトはアフィリエイト広告(Amazonアソシエイト含む)を掲載しています。
スポンサーリンク
※このサイトはアフィリエイト広告(Amazonアソシエイト含む)を掲載しています。
Python×ZipCloud API入門:郵便番号検索からCSV処理・アプリ作成まで完全解説 Tips集
Python×ZipCloud API入門:郵便番号検索からCSV処理・アプリ作成まで完全解説

「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つを解説しました。

  1. 基本:requests を使ったデータ取得の方法
  2. 自動化:csv を使って面倒な一括変換を自動化する方法
  3. アプリ化:tkinter を使ってGUIツールを作成する方法

今回学んだ「外部のAPIからデータを取得し、それをPythonで加工・表示する」という技術は、あらゆるシステム開発の基礎になります。

「天気のAPI」で毎朝LINEに天気を通知させたり、「OpenAIのAPI」でオリジナルのAIチャットボットを作ったり……アイデア次第で可能性は無限大です。

ぜひ今回のコードをアレンジして、Pythonプログラミングの楽しさを体感してみてくださいね!

本ブログ「ゴマフリーダムのPython教室」のトップページへは以下へアクセス!

Tips集
Takahiro Matsuyamaをフォローする

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

最短コースでわかる ディープラーニングの数学

あたらしい機械学習の教科書 第3版

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

統計学入門

タイトルとURLをコピーしました