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サーバー ] ← [ データベース ]
たとえば、天気予報アプリが東京の天気を取得する場合:
- ユーザーは東京の天気を知りたい。アプリが
GET https://api.weather.example.com/tokyoにリクエストを送る - APIサーバーがデータベースから東京の天気を取得する
- APIサーバーがアプリにJSON形式でレスポンスを返す
- アプリはレスポンスを処理して、画面に東京の天気を表示する。
{
"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形式のレスポンスが一般的