【Webアプリ開発2026 #16】APIとは

API(Application Programming Interface)とは

ソフトウェアコンポーネント同士が互いに情報をやりとりするのに使用するインタフェースの仕様である。
引用:アプリケーションプログラミングインタフェース

APIとは、ソフトウェア同士が情報をやり取りするための「窓口」のこと。あるソフトウェアの機能を、他のソフトウェアから呼び出して使えるようにする仕組みを指す。

APIという言葉自体は非常に広い概念で、OSのAPI(ファイルの読み書きを行う機能)やグラフィックAPI(画面描画を行う機能)なども含む。ただし現場では、ほとんどの場合「Web API」のことを指して使われる。

APIエンドポイントとは

APIにアクセスするためのURIを指す。「このURLにリクエストを送れば、この機能が使える」という接続先のこと。

たとえば https://api.example.com/users がユーザー情報を取得するためのエンドポイントであれば、このURLにGETリクエストを送るとユーザー一覧が返ってくる。

ℹ️
URI / URL / URN の関係
  • URI(Uniform Resource Identifier): リソースを識別するための書き方の総称
  • URL(Uniform Resource Locator): URIの一部。リソースの場所とアクセス方法を指定する(普段使う「アドレス」のこと)
  • URN(Uniform Resource Name): 名前で永続的に識別する書き方(今回は覚えなくてよい)
エンドポイント

連携したいAPIにアクセスするための接続先を指す。

Web API

Web API とは

Webアプリケーションが他のアプリケーションと通信・連携するための標準的なインターフェースのこと。HTTP(Webの通信プロトコル)を使ってデータをやり取りする。

Web APIが存在することで、異なるプログラミング言語やプラットフォームで作られたアプリケーション同士が連携できる。PythonのバックエンドとReactのフロントエンド、iOSアプリとAndroidアプリが同じAPIを呼ぶことで、同じデータ・同じ機能を共有できる。

Web API の種類

REST(Representational State Transfer)API
  • 現在最も汎用的に使用されている形式
  • HTTPメソッド(GET, POST, PUT, PATCH, DELETE)で操作を表現する
  • URLがリソース(データ)の場所を表す
  • レスポンスはJSON形式が主流
  • リクエスト例
    curl -X GET https://api.example.com/users/123
  • レスポンス例
    {
      "id": 123,
      "name": "田中太郎",
      "email": "tanaka@example.com"
    }
GraphQL
  • クライアントが必要なデータだけをリクエストできることが特徴
  • 単一のエンドポイントに対してクエリ(問い合わせ)を投げる
  • データ取得(query)以外にデータ変更(mutation)やリアルタイム購読(subscription)もサポートしている
  • REST APIでは「エンドポイントごとに返すデータが決まっている」のに対し、GraphQLでは「クライアントが欲しいフィールドを指定できる」
  • リクエスト例
    curl -X POST https://api.example.com/graphql \
      -H "Content-Type: application/json" \
      -d '{"query": "{ user(id: 123) { name, email } }"}'
  • レスポンス例(nameとemailだけが返る)
    {
      "data": {
        "user": {
          "name": "田中太郎",
          "email": "tanaka@example.com"
        }
      }
    }

REST API と GraphQL の比較

観点 REST API GraphQL
エンドポイント リソースごとに複数(/users, /products 等) 1つ(/graphql)
取得するデータ エンドポイントが返すデータ全て クライアントが指定したフィールドのみ
学習コスト 低い(HTTPの知識があればわかる) やや高い(クエリ言語を覚える必要がある)
主な用途 一般的なWeb API 複雑なデータ構造を扱うフロントエンド

今回の講義ではREST APIを扱う。