APIとは何か
API(Application Programming Interface)は、あるソフトウェアの機能やデータを、別のソフトウェアから決められた方法で利用するための窓口と規則です。人が画面を操作する代わりに、プログラム同士が要求と結果をやり取りします。
Web上のURLへ通信するAPIがよく知られていますが、APIはWebだけの言葉ではありません。ブラウザの機能や、OS、ライブラリがプログラムへ提供する機能もAPIです。
一文でいうと
APIとは、ソフトウェアが別のソフトウェアへ「何を、どの形で頼めるか」を定めた接点です。
MDNは、APIをソフトウェアとのやり取りを可能にする機能と規則の集合として説明しています。利用する側は、内部の実装をすべて知らなくても、公開された名前、入力、返り値、エラーの約束に沿って機能を呼び出せます。
個人開発のどこで登場するか
自分のアプリに、決済、メール送信、地図、AI、天気などの機能を加える場面で登場します。自分で作る画面から、自分で作ったサーバーとは何かへデータを送るときにもAPIを設計します。
外部APIを使うことで、すべてをゼロから作らずに済みます。一方で、利用料金、停止、仕様変更、利用規約、通信障害など、自分だけでは制御できない条件が増えます。
読書記録アプリの例
本の番号を入力すると書名を表示する機能を考えます。
アプリが、本の番号を決められた形式でAPIへ送る
APIを提供するサーバーが要求を検証する
見つかった書名などを、決められた形式で返す
アプリが結果を読み、画面へ表示する
ここで重要なのは、URLだけではありません。どの入力を渡せるか、成功時に何が返るか、見つからない場合や制限超過時にどうなるかまでが、APIの約束に含まれます。
UI、SDK、データベースと区別する
似た入口は、次のように分けます。
UI:人が画面や文字でソフトウェアを操作する窓口
API:主にソフトウェア同士が機能やデータをやり取りする窓口
SDK:特定のサービスや環境で開発するためのコードや道具のまとまり
データベース:データを保存、検索、更新する仕組み
SDKの中からAPIを呼ぶ場合も、APIの先でデータベースを使う場合もあります。隣り合う役割ですが、同じものではありません。
外部APIには失敗する前提を置く
外部APIを使うときは、成功する場合だけでなく次を設計します。
通信が遅い、または応答がない
入力が不正で拒否される
認証情報が無効になる
利用回数や料金の上限へ達する
仕様や返却形式が変わる
サービスが一時停止する
APIキーなどの認証情報をブラウザへ配るコードや公開リポジトリへ書かず、サーバー側の秘密情報として扱います。個人開発の秘密情報を安全に管理するで、保管と失効の手順を確認できます。
次に読む記事
Web APIの要求を受ける側はサーバーとは何か、表示して追加の要求を送る側はブラウザとは何かで整理します。保存先の役割はデータベースとは何かへ進みます。
外部サービスを採用する前には、料金だけでなく、障害時の代替手段とデータを取り出せるかも確認します。