エラノート エラノート

APIとは?仕組みと使い方を初心者向けに解説

API Web API REST 概念解説
広告スペース (article-top)

プログラミングを学んでいると「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を試して、リクエストとレスポンスの流れを体感してみてください。

広告スペース (article-bottom)

あわせて読みたい