APIとは?仕組みと使い方を初心者向けに解説
プログラミングを学んでいると「API」という言葉を頻繁に目にします。「天気APIを使って…」「APIを叩く」など、当たり前のように使われていますが、初心者にとっては掴みにくい概念です。この記事ではAPIとは何か、どう使うのかをわかりやすく解説します。
APIとは
API(Application Programming Interface)は、ソフトウェア同士がデータをやり取りするための「窓口」です。
わかりやすい例として、レストランで考えてみましょう。あなた(クライアント)はメニューを見て料理を注文します。ウェイター(API)が注文をキッチン(サーバー)に伝え、できた料理を持ってきます。あなたはキッチンの中身を知らなくても、ウェイターを通じて料理を受け取れます。
APIも同じです。自分のプログラム(クライアント)からAPIにリクエスト(注文)を送ると、サーバーがデータ(料理)を返してくれます。サーバー内部の処理を知る必要はありません。
Web APIの仕組み
Web APIはインターネット経由でアクセスするAPIです。HTTPという通信プロトコルを使います。
クライアント(あなたのプログラム)
↓ リクエスト(HTTPリクエスト)
API サーバー
↓ レスポンス(JSONデータ)
クライアント(データを受け取る)
多くのWebサービスがAPIを公開しています。
- 天気情報API: 天気予報データを取得
- 地図API: 地図や位置情報を利用
- 翻訳API: テキストを翻訳
- SNS API: 投稿データを取得・作成
APIの基本用語
HTTPメソッド
APIへのリクエストには「何をしたいか」を表すHTTPメソッドがあります。
GET : データを取得する(読み取り)
POST : データを作成する(新規作成)
PUT : データを更新する(全体の置き換え)
PATCH : データを部分的に更新する
DELETE : データを削除する
最もよく使うのはGET(取得)とPOST(作成)です。
エンドポイント
APIにアクセスするためのURLです。
https://api.example.com/users → ユーザー一覧を取得
https://api.example.com/users/123 → ID 123のユーザーを取得
https://api.example.com/weather?city=tokyo → 東京の天気を取得
JSON
APIのデータ形式として最もよく使われるのがJSON(JavaScript Object Notation)です。
{
"name": "東京",
"temperature": 25.5,
"weather": "晴れ",
"humidity": 60,
"forecast": ["晴れ", "曇り", "雨"]
}
JSONは人間にも読みやすく、プログラムでも扱いやすいデータ形式です。
ステータスコード
APIのレスポンスには処理結果を表すステータスコードが含まれます。
200 : OK(成功)
201 : Created(作成成功)
400 : Bad Request(リクエストが不正)
401 : Unauthorized(認証が必要)
403 : Forbidden(アクセス禁止)
404 : Not Found(リソースが見つからない)
500 : Internal Server Error(サーバー内部エラー)
APIを実際に使ってみる
PythonでAPIを呼び出す
import requests
# 無料の天気APIを呼び出す例
url = "https://api.open-meteo.com/v1/forecast"
params = {
"latitude": 35.6762, # 東京の緯度
"longitude": 139.6503, # 東京の経度
"current_weather": True,
}
response = requests.get(url, params=params)
# ステータスコードを確認
print(response.status_code) # 200
# JSONデータを取得
data = response.json()
print(data["current_weather"]["temperature"])
print(data["current_weather"]["windspeed"])
JavaScriptでAPIを呼び出す
// fetch APIを使う(ブラウザ・Node.js両対応)
async function getWeather() {
const url = "https://api.open-meteo.com/v1/forecast";
const params = new URLSearchParams({
latitude: 35.6762,
longitude: 139.6503,
current_weather: true,
});
const response = await fetch(`${url}?${params}`);
if (!response.ok) {
console.error(`エラー: ${response.status}`);
return;
}
const data = await response.json();
console.log(`気温: ${data.current_weather.temperature}度`);
console.log(`風速: ${data.current_weather.windspeed}km/h`);
}
getWeather();
エラーハンドリング
APIの呼び出しではネットワークエラーやサーバーエラーが発生する可能性があります。必ずエラー処理を入れましょう。
import requests
try:
response = requests.get("https://api.example.com/data", timeout=10)
response.raise_for_status() # 4xx, 5xxエラーで例外を発生させる
data = response.json()
print(data)
except requests.exceptions.Timeout:
print("リクエストがタイムアウトしました")
except requests.exceptions.HTTPError as e:
print(f"HTTPエラー: {e}")
except requests.exceptions.RequestException as e:
print(f"通信エラー: {e}")
APIを使うときの注意点
レート制限
多くのAPIには1分間や1日あたりのリクエスト回数に制限があります。制限を超えると429 Too Many Requestsエラーが返されます。
# リクエスト間隔を空ける例
import time
for city in cities:
response = requests.get(f"{api_url}?city={city}")
process(response.json())
time.sleep(1) # 1秒待つ
APIキー
多くのAPIでは利用者を識別するためのAPIキーが必要です。
# APIキーの管理例
import os
# 環境変数から読み取る(推奨)
api_key = os.environ.get("API_KEY")
headers = {
"Authorization": f"Bearer {api_key}",
}
response = requests.get(url, headers=headers)
APIキーはコードに直接書かず、環境変数や設定ファイルで管理しましょう。GitHubに公開してしまうと不正利用される危険があります。
ドキュメントを読む
APIを使う前に、必ず公式ドキュメントを確認しましょう。エンドポイントの一覧、必要なパラメータ、レスポンスの形式、利用制限などが記載されています。
APIは現代のWeb開発に欠かせない技術です。まずは無料で使えるAPIを試して、リクエストとレスポンスの流れを体感してみてください。