定義
API(Application Programming Interface)は、異なるソフトウェア同士が情報をやり取りできるように、あらかじめ決めておいたルールであり、会話の窓口です。相手のプログラムの複雑な中身を知らなくても、決められた形式でリクエストを送れば、ほしい結果やデータを手軽に受け取れます。
レストランの店員さんのように注文を取り次ぎます
おいしいパスタを食べにレストランへ行ったときのことを思い浮かべてみましょう。私たちは厨房に入って冷蔵庫を開けたり、コンロに火をつけたりはしませんよね。
席にゆったり座ってメニューを眺め、店員さんに食べたい料理を伝えるだけです。すると店員さんが厨房のシェフに注文を伝え、できあがった料理をテーブルまで運んでくれます。
スマホアプリの世界でも、まったく同じことが起きています。天気アプリが気象庁の巨大なコンピューターシステムの中を自分で探し回る必要はありません。店員さん役の決められたやり取りの窓口に、「今日の東京の天気を教えて」と決まった形式の注文書を渡せばいいのです。
すると相手のシステムが天気の情報をきれいにまとめて、アプリの画面に表示してくれます。このように、プログラムの間で注文を受け付け、結果を返すルール全体のことを指します。
複雑な技術をレゴブロックのように組み立てます
新しいショッピングアプリを作るところを想像してみてください。決済システム、地図画面、本人確認機能まで、最初から最後まで一人で作ろうとすると、何年もかかるかもしれません。
でも、すでによくできた金融機関やポータルサイトのシステムを借りられるなら話は変わります。地図会社が公開している規格に合わせてリクエストを送るだけで、アプリの中に素敵な地図が魔法のようにすっと収まります。
他の人が何年もかけて完成させた大きな技術を、まるでレゴブロックのように持ってきてつなげることができるわけです。おかげで開発者は、車輪の再発明に時間を無駄にせず、新しいサービスづくりに集中できます。
毎日使っているフードデリバリーアプリが、地図と決済と配車のシステムをあっという間に組み合わせて動いているのも、すべてこのつなぐ技術のおかげです。
もう少し正確に言うと:決められた窓口だけを開ける門番です
他人に自分のシステムを勝手に壊されたらどうしよう、と心配になるかもしれません。でも、厨房のドアを全開にするのではなく、店員さんの窓口だけを開けておく形なので、中身を守るのはずっと簡単です。
よく設計されたAPIは、許可された質問だけを受け付け、内部の大切なデータベースへ直接アクセスされるのを防ぎます。ただし、認証や権限チェックに抜け穴があると、API自体が攻撃の入り口になってしまうこともあります。さらに、内部のプログラムを全面的に作り変えても、外から見える注文ルールさえ同じに保っておけば、つながっている他のアプリは壊れずに動き続けます。
もう少し正確に言うと、単に機能を借りる道具にとどまらず、「プログラム同士の安全な契約」です。やり取りするデータの形式や通信方法は、REST のように広く使われている方式に合わせて設計されることが多いです。
よくある誤解
APIは目に見えるスマホアプリや、ダウンロードして使う完成したソフトのことだ。
APIは独立したプログラムではなく、異なるプログラム同士が安全にデータをやり取りするための「ルールと規格」です。レストランにたとえるなら、できあがった料理そのものではなく、メニューと注文の仕方にあたります。
日常で出会う場面
フードデリバリーアプリで注文するとき、地図会社の地図が画面に表示され、カード会社の決済画面がすぐに開く流れ
スマホゲームを始めるときに、LINEやGoogleのアカウントで一瞬でログインできる簡単ログイン機能
ポータルサイトの検索窓で、今日の天気やリアルタイムの航空券の価格をひと目で調べられる機能
つまり ひとことで
プログラム同士が、お互いの内部構造を知らなくても、決められた約束に従って安全かつ素早くデータをやり取りできるようにする、デジタルの窓口です。