tanaka101

API

別名: Application Programming Interface, Web API, REST API

APIとは、ソフトウェア同士がデータをやり取りするための窓口(ルール) です。
正式名称は「Application Programming Interface」ですが、ほぼ全員が「API」と呼んでいます。

そもそも、システムは1つではない

APIを理解するには、
まずWebサービスは1つのプログラムで動いているわけではないことを知る必要があります。

たとえば、あなたが普段使っているYahooやメルカリは、ざっくり以下のように分かれています。

[ フロントエンド ]  ←→  [ バックエンド ]  ←→  [ データベース ]
  画面の表示             処理・ロジック          データの保存
部分役割
フロントエンドユーザーが見る画面ブラウザに表示されるHTML・CSS・JavaScript
バックエンド裏側の処理を担当「この人はログイン済みか?」「投稿を保存して」などの判断・処理
データベースデータを保存する場所ユーザー情報、投稿内容、注文履歴など

これらは別々のプログラムとして動いています。
別々に動いている以上、お互いにデータをやり取りする連携の仕組みが必要です。それがAPIです。

なぜAPIが必要なのか

「バラバラにしないで、1つにまとめればいいのでは?」と思うかもしれません。
しかし、セキュリティや保守の観点から、システムはある程度分離しているのが普通です。そして、分かれたシステム同士をつなぐためにAPIがあります。

APIがないとAPIがあると
セキュリティフロントエンドがデータベースに直接アクセスするため、データを書き換えられるリスクがあるAPIが窓口になるので、許可した操作だけを受け付けられる
ルール開発者ごとにデータの取得方法がバラバラになる「このURLにリクエストする」というルールが統一される
汎用性Webサイト用・アプリ用で別々の仕組みが必要になるどのクライアントからでも同じAPIを使える

Web APIの仕組み

Web開発で「API」と言えば、ほとんどの場合 Web API を指します。
Web APIは HTTPリクエスト(ブラウザがWebサイトを表示するときと同じ通信方法)を使ってデータをやり取りします。

リクエスト(行き):
[ ブラウザ・アプリ ]  →  [ APIサーバー ]  →  [ データベース ]

レスポンス(帰り):
[ ブラウザ・アプリ ]  ←  [ APIサーバー ]  ←  [ データベース ]

たとえば、天気予報アプリが東京の天気を取得する場合:

  1. ユーザーは東京の天気を知りたい。アプリが GET https://api.weather.example.com/tokyo にリクエストを送る
  2. APIサーバーがデータベースから東京の天気を取得する
  3. APIサーバーがアプリにJSON形式でレスポンスを返す
  4. アプリはレスポンスを処理して、画面に東京の天気を表示する。
{
  "city": "東京",
  "weather": "晴れ",
  "temperature": 25
}

Web APIにはいくつかの規格がある

Web APIの設計にはいくつかの方式(規格)があります。

方式特徴
REST APIもっとも広く使われている。URLとHTTPメソッド(GET・POSTなど)でデータを操作する
GraphQL必要なデータだけを柔軟に取得できる。Facebookが開発
gRPC高速な通信が特徴。サーバー間の通信でよく使われる

Web開発の場合は、REST APIが主流です。どの規格でも役割自体は同じで、異なるソフトウェアと情報連携するためにあります。

まとめ

  • APIはソフトウェア同士がデータをやり取りするための窓口
  • フロントエンドはAPIを通じてバックエンドのデータにアクセスする
  • Web APIではHTTPリクエストとJSON形式のレスポンスが一般的