Pythonで広がる世界:APIの基礎から実践的な使い方まで徹底解説
![]()
【Hiroki】
Yukiさん、こんにちは!最近プログラミングの勉強を進めている中で、「API」という言葉をよく目にするようになりました。なんとなく「外部のサービスと連携するもの」というイメージはあるのですが、具体的にPythonでどうやって使うのか、そもそもどんな仕組みなのかがよく分からなくて……。基礎から教えていただけないでしょうか?
![]()
【Yuki】
Hirokiくん、こんにちは。APIですね……。確かに、プログラミングを始めたばかりの頃は、少し難しく感じる言葉かもしれません。でも、APIを使いこなせるようになると、自分で一から作らなくても世界中の便利な機能を利用できるようになるんです。「誰かの役に立つために開発された、小さな道具の集まり」のようなものだと考えると、少しだけ身近に感じられるかもしれませんね。今日は、Pythonを使ってAPIを操作する方法について、ゆっくりとお話ししていきたいと思います……。
APIとは何か? — ソフトウェア同士の「窓口」
![]()
【Hiroki】
「誰かの役に立つための道具」……そう言われると、なんだかワクワクしますね!具体的には、APIってどういう意味なんですか?
![]()
【Yuki】
APIは、「Application Programming Interface(アプリケーション・プログラミング・インターフェース)」の略称です。簡単に言うと、「プログラム同士が情報をやり取りするための窓口」のことですね。
よく例えられるのは、レストランの注文です。 * あなた(クライアント):料理を注文するプログラム * キッチン(サーバー):料理を作る(データを提供する)システム * メニューと店員さん(API):注文を受け取り、キッチンに伝え、出来上がった料理をあなたに届ける役割
Hirokiくんが「今日の天気を教えて」とAPIにお願いすると、APIが裏側で天気のデータベースに問い合わせて、結果を返してくれる……。そんなイメージだと思います。
![]()
【Hiroki】
なるほど、店員さんのような役割なんですね。自分がデータベースの仕組みを知らなくても、APIという窓口を通せばデータがもらえるということか……。
![]()
【Yuki】
その通りです。特にWebを通じて利用するものは「Web API」と呼ばれていて、今のシステム開発には欠かせない存在になっています。Pythonは、このWeb APIを扱うのがとても得意な言語なんですよ。
Web APIを動かす仕組み:HTTPリクエストとレスポンス
![]()
【Yuki】
次に、APIがどうやって通信しているのかを見ていきましょう。Web APIの多くは、私たちが普段ブラウザでサイトを見るときと同じ「HTTP」という仕組みを使っています。
主に使われるのは、以下の2つの動作です。 1. GETリクエスト:サーバーから情報を取得したいときに送る「教えて」というお願い。 2. POSTリクエスト:サーバーに情報を送りたいときに使う「これを受け取って」というお願い。
![]()
【Hiroki】
ブラウザでURLを入力するのも、一種のGETリクエストなんですか?
![]()
【Yuki】
はい、そうです。APIの場合は、HTMLという「画面表示用のデータ」の代わりに、「JSON(ジェイソン)」という形式でデータをやり取りすることが一般的ですね。JSONは、Pythonの「辞書型(dict)」にとても似た構造をしているので、Pythonを使っている私たちにとっては、とても扱いやすいデータ形式だと思います……。
PythonでAPIを利用するための準備:requestsライブラリ
![]()
【Hiroki】
Pythonで実際にAPIを使うには、何か特別な道具が必要なんですか?
![]()
【Yuki】
標準機能だけでも可能ですが、「requests(リクエスト)」というライブラリを使うのが一番簡単で、一般的だと思います。多くのエンジニアに愛されている、とても使い心地の良いライブラリです。
まずは、以下のコマンドでインストールする必要がありますね。
pip install requests
![]()
【Hiroki】
インストールできました!これを使って、どうやってプログラムを書けばいいんでしょうか?
![]()
【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】
おぉ……すごくシンプルですね。requests.get() だけでデータが取れるなんて驚きです。でも、途中にある status_code == 200 って何ですか?
![]()
【Yuki】
それは、サーバーからの「お返事の状態」を表す数字です。
* 200:成功!無事にデータが見つかりました。
* 404:リクエストしたデータが見つかりませんでした(Not Found)。
* 500:サーバー側で何か問題が発生しています。
数字を見るだけで、通信がうまくいったかどうかが分かるようになっているんです。プログラムを組むときは、こうしたエラー処理も丁寧に入れてあげると、より優しくて壊れにくいツールになると思いますよ。
データの形式「JSON」をPythonで扱う方法
![]()
【Hiroki】
先ほど、「JSONは辞書型に似ている」と教えてくれましたが、具体的にどうやってデータを活用すればいいんでしょうか?
![]()
【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】
本当だ!いつものPythonのリストや辞書と同じように扱えますね。これなら、特定の情報を抜き出したり、ループで処理したりするのも簡単そうです。
![]()
【Yuki】
ええ、その通りです。取得したデータを加工して自分だけのアプリを作るのは、パズルを組み立てるようでとても楽しい作業だと思います。
パラメータを使ってリクエストを絞り込む
![]()
【Hiroki】
APIを使っていると、特定の条件でデータを検索したいこともあると思うのですが、そういうときはどうすればいいんですか?
![]()
【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】
わざわざ複雑なURLを手書きしなくてもいいんですね。これなら間違いも少なそうです。
APIキーと認証の重要性
![]()
【Yuki】
ここまでは誰でも自由に使えるAPIを紹介しましたが、実際の多くのサービス(天気予報、Twitter、Googleマップなど)では、「APIキー」というものが必要になります。
![]()
【Hiroki】
APIキー……合言葉のようなものでしょうか?
![]()
【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】
APIキーは、Hirokiくん自身の身分証明書のようなものです。もし他人に知られてしまうと、勝手に有料の機能を使われたり、データにアクセスされたりする危険があります。ソースコードに直接書いたままGitHubなどに公開しないように、十分気をつけてくださいね……。
![]()
【Hiroki】
身分証明書……。それは慎重に扱わないといけませんね。気をつけます!
APIを活用する際の注意点と「優しさ」
![]()
【Yuki】
APIを使う上で、もう一つ大切なことがあります。それは、「サーバーに負荷をかけすぎないこと」です。
![]()
【Hiroki】
負荷、ですか?
![]()
【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】
こうしたちょっとした気遣いが、インターネットの世界を支えているのだと思います。誰かが一生懸命作った便利なツールを、長く大切に使い続けられるといいですよね。
まとめ:APIで広がるプログラミングの可能性
![]()
【Hiroki】
APIのことが、最初よりずっと身近に感じられるようになりました。自分が作った小さなツールが、APIを通じて世界中の大きなサービスと繋がるなんて、なんだか不思議で素敵ですね。
![]()
【Yuki】
そう言ってもらえると、わたしも嬉しいです。APIを使えば、最新のAIを組み込んだり、株価の情報を自動で集計したり、翻訳アプリを作ったり……Hirokiくんのアイデア次第で、できることが無限に広がります。
まずは、身近にある公開APIを触ってみることから始めてみてください。きっと、プログラミングがもっと楽しくなるはずですから。もし、エラーが出て困ったときは、いつでも聞いてくださいね。……あまり朝早い時間は苦手なのですが、夜ならゆっくりとお付き合いできると思います。
![]()
【Hiroki】
ありがとうございます!まずは簡単な天気情報の取得から挑戦してみようと思います。Yukiさん、丁寧に教えてくださってありがとうございました!
![]()
【Yuki】
いいえ……どういたしまして。Hirokiくんの挑戦、応援しています。
参考資料 - Requests: HTTP for Humans - JSONPlaceholder - Free Fake REST API - Python公式ドキュメント - jsonモジュール
「API」のサンプルコードを見る
この記事では基礎を解説しましたが、実務においては「もっと複雑なデータを扱いたい」「独自のシステムに組み込みたい」といった、個別の課題に直面することも多いはずです。
「自分で書く時間は最小限に抑え、プロの品質でツールを完成させたい」という方は、ぜひ一度ご相談ください。
- 専門家の知見に基づいた、保守性の高いコード設計
- AIの専門家による、Gemini API等の最新AIを組み合わせた高度な自動化
- ChatGPT等が生成したコードのデバッグ・最適化
「教わる」だけでなく「形にする」パートナーとして、フリーランスエンジニアのmei_13が最短ルートでの解決をサポートします。


