ギャルイット > ソフトウェア > API

APIとは?アプリ同士がつながる仕組みを例え話でやさしく解説

メモリん

ねえテツ、バイト先で使ってるアプリさぁ、店の場所を出すと地図がそのまま中に出てくるんだけど。あれって店長が地図描いたの?(・_・)?

ギガテツ

描いてねーよ(´∀`) 地図を作ってる会社から借りてんの。そういうの、APIって言うわけ

メモリん

エーピーアイ。もう名前の時点でつまずいてるんだけど!日本語でよろ(・_・)?

ギガテツ

まあ待てって。おまえ、クリーニング屋は使うっしょ?アレなわけ

スマホの画面を見せながら話すメモリんとギガテツ

APIとは

API(Application Programming Interface / エーピーアイ)とは、あるソフトウェアやサービスが「自分の機能はこの形で呼び出してください」と外部に向けて公開している約束事のことです。中身がどう作られているかを知らなくても、決められた形式で要求を送れば、決められた形式で結果が返ってきます。

なお「API」は、OSやプログラミング言語が用意している呼び出し口も含む、かなり広い言葉です。ただし近年の会話で「APIを使う」と言うときは、インターネット越しに他社のサービスを呼び出す「Web API」を指していることがほとんどです。この記事も、主にそちらのイメージで説明します。

APIを例えるなら「クリーニング店の受付カウンター」

ギガテツ

APIってのはさぁ→クリーニング屋の受付カウンターなわけ☆彡 おまえ、あの店の奥まで入って自分でシャツ洗ったことある?

メモリん

ないよ。入ったら怒られるじゃん

ギガテツ

な。でもカウンターでワイシャツ3枚出したら、ちゃんとパリッとなって返ってくるっしょ?中でどんな機械が回ってんのか、おまえ一個も知らねーのに

メモリん

たしかに知らない。考えたこともなかったんだけど

クリーニング店の受付カウンターで解説するギガテツと、ワイシャツを抱えたメモリん

頼めることと、頼み方は決まっている

メモリん

じゃあさ、カウンターに出せばなんでもやってくれんの?靴の修理とかも

ギガテツ

そこな。カウンターの上に料金表が貼ってあるじゃん?ワイシャツ、スーツ、コート、ふとん…って。あの表に載ってるモンしか頼めねーの。あれがAPIでできることの一覧なわけ

メモリん

載ってないやつ持ってったら?

ギガテツ

「うち、それはやってないんですよ」で終わり。プログラムの世界だと、そこでエラーってのが返ってくる。あと伝票な。品名と枚数と仕上がり希望日、全部書かねーと受け付けてもらえねーっしょ?あの伝票の書き方が「頼み方の決まり」なわけ。枚数の欄が空っぽなら、そこで突き返されるだけ

メモリん

厳しくない?でもまあ、書かなかったら店の人もわかんないか

メモリん

あ、じゃあ聞きたいんだけど。あの店が新しい洗濯機に買い替えたら、あたしの頼み方も変わるの?

ギガテツ

変わんねーの。そこが一番おいしいとこだし!機械が新しくなろうが、洗剤が変わろうが、客は伝票の書き方さえ守ってりゃ今までどおり。逆に店のほうも、客の頼み方を変えずに、奥をどんどん良くできるってコトなわけ☆彡

メモリん

あ゛ー!つまりAPIって「お店の受付カウンター」ってコトね!奥には入れないけど、料金表に載ってることを、伝票の書き方どおりに頼めば、ちゃんと仕上がって返ってくる。中でどうやってるかは知らなくていい(☆∀☆)

伝票を手に納得した表情のメモリん

この例えの限界

クリーニング店の受付にいるのは人なので、伝票の書き方が多少あいまいでも「これはワイシャツですね」と汲み取ってくれます。しかしAPIの向こう側にいるのはプログラムなので、決められた形式から少しでも外れると、その場でエラーを返します。融通が利かない代わりに、いつ誰が頼んでも同じ手順で処理される——ここが人の窓口との大きな違いです。

まとめ

  • APIとは、あるサービスが外部に向けて用意した「決まった頼み方の窓口」です。中身の作りを知らなくても、その窓口を通せば機能を利用できます。
  • 頼めることは提供する側が決めた範囲に限られ、要求の書き方も決まっています。範囲外のことを頼んだり、書き方を外したりするとエラーになります。
  • 窓口の形さえ保たれていれば、提供する側は中身を自由に改良できます。多くのアプリが地図・決済・翻訳といった他社の機能を組み込めるのは、この仕組みがあるからです。