##APIって結局何?
どこかの記事で、全てのウェブサービスはブログである みたいな記事を読んだような気がするのですが、確かに、ショッピングサイトでも、SNSでも、メールでも、映像配信サイトでも、結局基本は同じで
フロントからリクエストが来る→サーバーでそれを処理して、データベースから必要な素材を取ってくる→素材をサーバーで料理して、フロントに返す→フロント側は返ってきた料理を綺麗に盛り付けして表示
って事だよね。
で、ここでコアな役割を担っているのがAPI。
自分も、APIって色んなところで聞くし、実際にAPI構築用のコードを打って、それっぽく動いてるんだけど、その実態って、あんまりよく分かってなかったんだよね。
英文、和文を問わず、いろんな人の解説を読むんだけど、やっぱりよく分からない。
なぜ分からないかというと、みんななんかフワッと書いていて、分かったような気になるけど、結局分からない。それと、APIそのものが、結構定義づけがあいまいで、指し示している範囲が広く、みなそれぞれの解釈で理解してるから、言ってることがバラバラだったりする。で、結局なんやねん!と突っ込まざる得なくなる。
で、最近こういう事だったのか!とこれまた自分なりに完璧に理解した!と思ったので、ここに書き散らしておく。
**インプットと、アウトプット用の穴が二つ開いた箱をイメージして欲しい。これがAPIである。**以上。
そう、これがAPIだ!!!
##APIはあくまでインターフェイスの事
もう少しちゃんと解説すると、APIとは、Application programming interface で、あくまでもinterfaceの事。なんかアプリケーションと勘違いしてる人も多い。あと、何らかのバックエンドの機能とか。
インターフェイスって、自販機みたいなもので、ユーザーとシステムの間に立って、人の注文をシステムに伝えてくれる表面の色々な機能。自販機のボタンとか、お金を入れるところとか、釣銭が出るところとか。あれがAPI。自販機の中で行われていることはAPIではない。
さらに分かりやすく言うと、ドライブスルー。
小窓で所定の方法で注文する(ブラウザからのリクエスト) → オーダーが厨房に伝わり、冷蔵庫から材料を取り出し(データベースから必要なデータを取り出す)、キッチンスタッフが調理(サーバーでデータを処理)→ もう一つの小窓から出来たオーダーを渡す。(ブラウザにデータを返す)
この小窓の部分がまさにAPI。普通、APIって、クエリとかを含んだ長いURLを叩くよね。あのアドレスが小窓の場所を指定していて、さらにクエリが注文の内容って感じ。
で、例えばNODE.JSとかで厨房の部分を構築するわけだ。つまり、サーバー側プログラミングでは、どういうオーダーが来れば、どのデータを取りに行って、どう調理するのかっていうのを構築出来る。
サーバー側バックエンドについてる、クライアントからのデータをやり取りする小窓がAPIで、厨房がいわゆるバックエンド。で、持ち帰って皿に美味しそうに盛り付ける部分がREACTやAngularっていうフロントエンドになる。最近は、APIと聞くと、どうしてもウーバーイーツのドライバーが走っているイメージが止まらなくなってしまう。
ざっくりとしたイメージだけど、抽象的な概念って、分かりやすいイメージで覚えるっていうのが近道だと思うので、簡単に記事にしてみたよ。
あくまでも、初心者の人に向けたあれなので、あんまりあれな突っ込みはご容赦ください。