mei_13のPython講座 ロゴ

【解説】Pythonで広がる世界:APIの基礎から実践的な使い方まで徹底解説




Pythonで広がる世界:APIの基礎から実践的な使い方まで徹底解説


Hirokiのアイコン
【Hiroki】 Yukiさん、こんにちは!最近プログラミングの勉強を進めている中で、「API」という言葉をよく目にするようになりました。なんとなく「外部のサービスと連携するもの」というイメージはあるのですが、具体的にPythonでどうやって使うのか、そもそもどんな仕組みなのかがよく分からなくて……。基礎から教えていただけないでしょうか?


Yukiのアイコン
【Yuki】 Hirokiくん、こんにちは。APIですね……。確かに、プログラミングを始めたばかりの頃は、少し難しく感じる言葉かもしれません。でも、APIを使いこなせるようになると、自分で一から作らなくても世界中の便利な機能を利用できるようになるんです。「誰かの役に立つために開発された、小さな道具の集まり」のようなものだと考えると、少しだけ身近に感じられるかもしれませんね。今日は、Pythonを使ってAPIを操作する方法について、ゆっくりとお話ししていきたいと思います……。

APIとは何か? — ソフトウェア同士の「窓口」


Hirokiのアイコン
【Hiroki】 「誰かの役に立つための道具」……そう言われると、なんだかワクワクしますね!具体的には、APIってどういう意味なんですか?


Yukiのアイコン
【Yuki】 APIは、「Application Programming Interface(アプリケーション・プログラミング・インターフェース)」の略称です。簡単に言うと、「プログラム同士が情報をやり取りするための窓口」のことですね。

よく例えられるのは、レストランの注文です。 * あなた(クライアント):料理を注文するプログラム * キッチン(サーバー):料理を作る(データを提供する)システム * メニューと店員さん(API):注文を受け取り、キッチンに伝え、出来上がった料理をあなたに届ける役割

Hirokiくんが「今日の天気を教えて」とAPIにお願いすると、APIが裏側で天気のデータベースに問い合わせて、結果を返してくれる……。そんなイメージだと思います。


Hirokiのアイコン
【Hiroki】 なるほど、店員さんのような役割なんですね。自分がデータベースの仕組みを知らなくても、APIという窓口を通せばデータがもらえるということか……。


Yukiのアイコン
【Yuki】 その通りです。特にWebを通じて利用するものは「Web API」と呼ばれていて、今のシステム開発には欠かせない存在になっています。Pythonは、このWeb APIを扱うのがとても得意な言語なんですよ。

Web APIを動かす仕組み:HTTPリクエストとレスポンス


Yukiのアイコン
【Yuki】 次に、APIがどうやって通信しているのかを見ていきましょう。Web APIの多くは、私たちが普段ブラウザでサイトを見るときと同じ「HTTP」という仕組みを使っています。

主に使われるのは、以下の2つの動作です。 1. GETリクエスト:サーバーから情報を取得したいときに送る「教えて」というお願い。 2. POSTリクエスト:サーバーに情報を送りたいときに使う「これを受け取って」というお願い。


Hirokiのアイコン
【Hiroki】 ブラウザでURLを入力するのも、一種のGETリクエストなんですか?


Yukiのアイコン
【Yuki】 はい、そうです。APIの場合は、HTMLという「画面表示用のデータ」の代わりに、「JSON(ジェイソン)」という形式でデータをやり取りすることが一般的ですね。JSONは、Pythonの「辞書型(dict)」にとても似た構造をしているので、Pythonを使っている私たちにとっては、とても扱いやすいデータ形式だと思います……。

PythonでAPIを利用するための準備:requestsライブラリ


Hirokiのアイコン
【Hiroki】 Pythonで実際にAPIを使うには、何か特別な道具が必要なんですか?


Yukiのアイコン
【Yuki】 標準機能だけでも可能ですが、「requests(リクエスト)」というライブラリを使うのが一番簡単で、一般的だと思います。多くのエンジニアに愛されている、とても使い心地の良いライブラリです。

まずは、以下のコマンドでインストールする必要がありますね。

pip install requests


Hirokiのアイコン
【Hiroki】 インストールできました!これを使って、どうやってプログラムを書けばいいんでしょうか?


Yukiのアイコン
【Yuki】 では、基本的な書き方を見てみましょう。今回は例として、インターネット上のテスト用APIからデータを取得するコードを書いてみます。

import requests

# 1. 取得したいデータの場所(URL)を指定します
url = "https://jsonplaceholder.typicode.com/posts/1"

# 2. GETリクエストを送信します
response = requests.get(url)

# 3. 結果を確認します
if response.status_code == 200:
    # 成功した場合、JSONデータをPythonの辞書形式で取得します
    data = response.json()
    print(f"タイトル: {data['title']}")
else:
    print(f"エラーが発生しました。ステータスコード: {response.status_code}")


Hirokiのアイコン
【Hiroki】 おぉ……すごくシンプルですね。requests.get() だけでデータが取れるなんて驚きです。でも、途中にある status_code == 200 って何ですか?


Yukiのアイコン
【Yuki】 それは、サーバーからの「お返事の状態」を表す数字です。 * 200:成功!無事にデータが見つかりました。 * 404:リクエストしたデータが見つかりませんでした(Not Found)。 * 500:サーバー側で何か問題が発生しています。

数字を見るだけで、通信がうまくいったかどうかが分かるようになっているんです。プログラムを組むときは、こうしたエラー処理も丁寧に入れてあげると、より優しくて壊れにくいツールになると思いますよ。

データの形式「JSON」をPythonで扱う方法


Hirokiのアイコン
【Hiroki】 先ほど、「JSONは辞書型に似ている」と教えてくれましたが、具体的にどうやってデータを活用すればいいんでしょうか?


Yukiのアイコン
【Yuki】 そうですね。JSONはテキストデータですが、Pythonの response.json() メソッドを使うと、自動的に「辞書(dict)」「リスト(list)」に変換されます。

例えば、複数のデータが送られてくる場合は、リストの中に辞書が入っているような形になります。

import requests

url = "https://jsonplaceholder.typicode.com/posts"
response = requests.get(url)

if response.status_code == 200:
    posts = response.json()  # リスト形式でデータが返ってくる
    # 最初の3件だけ表示してみます
    for post in posts[:3]:
        print(f"ID: {post['id']}, タイトル: {post['title']}")


Hirokiのアイコン
【Hiroki】 本当だ!いつものPythonのリストや辞書と同じように扱えますね。これなら、特定の情報を抜き出したり、ループで処理したりするのも簡単そうです。


Yukiのアイコン
【Yuki】 ええ、その通りです。取得したデータを加工して自分だけのアプリを作るのは、パズルを組み立てるようでとても楽しい作業だと思います。

パラメータを使ってリクエストを絞り込む


Hirokiのアイコン
【Hiroki】 APIを使っていると、特定の条件でデータを検索したいこともあると思うのですが、そういうときはどうすればいいんですか?


Yukiのアイコン
【Yuki】 その場合は、URLの末尾に「クエリパラメータ」という情報を付け加えます。Pythonの requests ライブラリなら、辞書形式で渡すだけで自動的にURLを組み立ててくれる機能があるんですよ。

import requests

url = "https://jsonplaceholder.typicode.com/posts"

# 検索条件を辞書で指定します
# 例:userIdが1の投稿だけを取得したい場合
params = {
    "userId": 1
}

response = requests.get(url, params=params)

if response.status_code == 200:
    data = response.json()
    print(f"ユーザー1の投稿数: {len(data)}")


Hirokiのアイコン
【Hiroki】 わざわざ複雑なURLを手書きしなくてもいいんですね。これなら間違いも少なそうです。

APIキーと認証の重要性


Yukiのアイコン
【Yuki】 ここまでは誰でも自由に使えるAPIを紹介しましたが、実際の多くのサービス(天気予報、Twitter、Googleマップなど)では、「APIキー」というものが必要になります。


Hirokiのアイコン
【Hiroki】 APIキー……合言葉のようなものでしょうか?


Yukiのアイコン
【Yuki】 はい、そうです。「誰がこのAPIを使っているのか」をサーバーが識別するための秘密の鍵ですね。

APIキーを使う場合は、以下のようにリクエストの「ヘッダー(headers)」に含めることが一般的です。

import requests

url = "https://api.example.com/v1/data"
api_key = "YOUR_SECRET_KEY" # 実際はここに自分のキーを入れます

headers = {
    "Authorization": f"Bearer {api_key}"
}

response = requests.get(url, headers=headers)


Yukiのアイコン
【Yuki】 APIキーは、Hirokiくん自身の身分証明書のようなものです。もし他人に知られてしまうと、勝手に有料の機能を使われたり、データにアクセスされたりする危険があります。ソースコードに直接書いたままGitHubなどに公開しないように、十分気をつけてくださいね……。


Hirokiのアイコン
【Hiroki】 身分証明書……。それは慎重に扱わないといけませんね。気をつけます!

APIを活用する際の注意点と「優しさ」


Yukiのアイコン
【Yuki】 APIを使う上で、もう一つ大切なことがあります。それは、「サーバーに負荷をかけすぎないこと」です。


Hirokiのアイコン
【Hiroki】 負荷、ですか?


Yukiのアイコン
【Yuki】 はい。プログラムは人間よりもずっと速いスピードでリクエストを送ることができます。1秒間に何百回もリクエストを送ると、相手のサーバーがパンクして動かなくなってしまうかもしれません。

多くのAPIには「1分間に10回まで」といった「利用制限(レートリミット)」が設けられています。Pythonで複数のデータを取得するときは、time.sleep() を使って少し休憩を入れてあげると、相手にとっても優しいプログラムになります。

import time
import requests

for i in range(5):
    # APIを叩く処理...
    print(f"{i+1}回目の取得中...")
    time.sleep(1)  # 1秒間お休みします


Yukiのアイコン
【Yuki】 こうしたちょっとした気遣いが、インターネットの世界を支えているのだと思います。誰かが一生懸命作った便利なツールを、長く大切に使い続けられるといいですよね。

まとめ:APIで広がるプログラミングの可能性


Hirokiのアイコン
【Hiroki】 APIのことが、最初よりずっと身近に感じられるようになりました。自分が作った小さなツールが、APIを通じて世界中の大きなサービスと繋がるなんて、なんだか不思議で素敵ですね。


Yukiのアイコン
【Yuki】 そう言ってもらえると、わたしも嬉しいです。APIを使えば、最新のAIを組み込んだり、株価の情報を自動で集計したり、翻訳アプリを作ったり……Hirokiくんのアイデア次第で、できることが無限に広がります。

まずは、身近にある公開APIを触ってみることから始めてみてください。きっと、プログラミングがもっと楽しくなるはずですから。もし、エラーが出て困ったときは、いつでも聞いてくださいね。……あまり朝早い時間は苦手なのですが、夜ならゆっくりとお付き合いできると思います。


Hirokiのアイコン
【Hiroki】 ありがとうございます!まずは簡単な天気情報の取得から挑戦してみようと思います。Yukiさん、丁寧に教えてくださってありがとうございました!


Yukiのアイコン
【Yuki】 いいえ……どういたしまして。Hirokiくんの挑戦、応援しています。


参考資料 - Requests: HTTP for Humans - JSONPlaceholder - Free Fake REST API - Python公式ドキュメント - jsonモジュール



「API」のサンプルコードを見る

< グラフ作成
コラム一覧に戻る
可読性 >

この記事では基礎を解説しましたが、実務においては「もっと複雑なデータを扱いたい」「独自のシステムに組み込みたい」といった、個別の課題に直面することも多いはずです。

「自分で書く時間は最小限に抑え、プロの品質でツールを完成させたい」という方は、ぜひ一度ご相談ください。

「教わる」だけでなく「形にする」パートナーとして、フリーランスエンジニアのmei_13が最短ルートでの解決をサポートします。

➡ ココナラで制作・相談を依頼する(見積もり無料)


初心者から始められるPythonレッスン

プログラミング未経験者・初心者歓迎!
月額4,000円で質問し放題!!
● 完全オンライン
● 翌日までには必ず返信
● 挫折しない独自の学習メソッド
● 圧倒的高評価!!
テキストベースで時間を選ばない
● 高品質なサンプルコード
詳細はこちら
興味がある方はまず質問だけでもどうぞ!



AIアシスタント Yuki