こんにちは、IT業界ビギナーのアラフォーマーケターあすりんです。この連載では、私と同じようなIT業界ビギナーがエンジニアの話してることをうっすらとでも理解するためにわかっておいた方がいい言葉を、先人たちの文書をもとに解読していきます。前回は「クエリ(言語)」を頑張って理解してみました。復習すると、システム開発界隈における〈クエリ言語〉とは、APIとかデータベースのような、データとかデータに働きかけてくれる仕組みに対して、「こうしてください」ってお願いするための言語。「こうしてください」の内容(文字列)がクエリ。でした。さて、今回は前回も出てきた魔法使いの「API」についてわかりやすくしていくぞ!前回は、クエリ言語(GraphQL)が問いかける先としてAPIが登場していました。魔法使いAPIに「カボチャの馬車出して」ってお願いするのがクエリ言語(GraphQL)で、カボチャの馬車を然るべき機関へ問い合わせて取り出してくれるのが魔法使いAPI。DALL-Eさんに描いてもらった魔法使いAPIさん。これって●スじゃない?じゃあ、このクエリの問い合わせ先となっている「API」ってのはそもそもなんなの?割と日常的に目にする「API」という言葉。エンジニア間でよく聞くのは「APIを叩く」という表現。(叩く?)とにかく何か、便利なものなんだな、ってことはわかります。でもそれだけ。なので、今日はもう少し、なんで便利なのかとか、どういう働きがあるのか、ってところを調べて理解していきます。目次APIって二種類ある? WEB APIとAPI APIを叩くとは API連携の意味APIとは、要求と応答のセットである結局APIってなんで便利なの?APIって二種類ある?最初からものすごいトラップなんですけど、APIって一種類じゃないらしいです。えっ。ほんとですか。ほんとです。WEB APIとAPIもともとあったのがAPI(Application Programming Interface)で、プログラムとプログラムを繋いで、やり取り(要求(リクエスト)と応答(レスポンス))を行う仕組みのこと。 リクエストする側(クライアント)が、プログラム言語を使って、公開されているAPIプログラムのサーバーへリクエストを送り、サーバーがそれに応答する形で要求された機能やデータをクライアント側へ送信することで該当機能が使えるようになります。基本的には要求された機能しか使えないです。その辺の設計は、APIを通じて機能を公開する、提供側に任されており、各社色々です。2008年ごろに登場したWEB APIも基本的な部分はAPIと同じですが、WEB(HTTP/HTTPS)を通じてやり取りするというところが違います。じゃあWEBじゃないAPIって何を通じてたの?ってなると思いますが、それは色々みたいで、そこを知るにはコンピュータ通信の世界を紐解かなくてはいけないっぽいので今回は割愛します。(いずれ調べたい)WEBを通じてやり取りすることの何がいいかというと、やり取りが簡単、ということみたいです。“ Web APIの採用するHTTP/HTTPSによる通信では、プログラミング言語が異なっていても通信でき、Webブラウザ上でも稼働する利点があります。さらにデータは自動更新されるなど汎用性の高さに加え、無料のWeb APIも多く公開されていることから、様々なシーンでの導入が進められてきました。” https://relipasoft.com/blog/what-is-web-api-api-development-functions-mechanisms/HTTP/HTTPSという通信規則(プロトコル)を通じてやり取りするので、クライアントも要求される側もプログラム言語が限定されないところがポイントの一つ。通常、APIは互いに通じる言語を使わないといけない(要求が伝わらない)のですが、WEB APIはその必要がない。このため、異なる言語のプログラム同士であっても、WEB APIを通じてなら欲しいデータや機能を取り入れることができる。これは、ものすごく有能な秘書が自分のやりたいことをつらっと相手に伝えてくれて、相手の言ってることもつらっと整理して伝えてくれる、みたいな感覚に近い。WEB APIってすごいんだな。やっぱり魔法使いか。整理しておきましょう。APIとは、特定のプログラムに対する要求と応答のセットのこと。要求するのは利用者(の送ったクエリ)だったり、アプリケーション自体(の送ったクエリ)だったり、色々。応答するのは、サーバー(のプログラム)。WEB APIとAPIの違いは?HTTP/HTTPSを通じて要求を送るかどうかの違い。WEB APIには要求を出す時に決まった言語を使わなくてもいいという利点がある。APIを叩くって?さあ、問題の「APIを叩く」って言葉。ここまで調べてきて、ようやく理解できるようになってきました。要するに「APIを使って相手方のアプリケーションへの問い合わせ(要求)を実行する」ということですね!もう少し細かくいうと、どうもサーバー側にあるエンドポイント、というところを通じて、サーバー側で処理されたデータを受け取るようになっているらしく、そこを叩くようなイメージらしい。ちなみに英語で「APIを叩く」は「hit API」または「call API」みたいです。hitは直接キーボードを叩くイメージ、callはまんま呼び出す(要求する)イメージです。検索結果の量から言うと、callの方が桁がひとつ多いのでメジャーに使われてそう。※エンジニアに聞いたら、実際にはcallの方を使う、とのことでした。エンジニアの会話からブラックボックスが一つ消えました。勉強してよかった。それもこれもテキストを残してくださった先人のおかげです。ありがとうございます。こうして蓄積していく知識が私たちの理解を支える巨人となっていくわけですね。師を求めてWEBを彷徨っているときにとても面白い記事も見つけたので、これも参考に置いておきます。不思議の国のSE用語 - Qiitahttps://qiita.com/t_nakayama0714/items/478a8ed3a9ae143ad854これを読んだ私の腹筋は無事死にました。API連携って?こうなってくると、よく見かける「API連携」についても理解できてきます。(WEB)APIを利用して、クライアント側のアプリケーションに、サーバー側アプリケーションの機能(やデータ)を呼び出して使うこと。APIを使った連携なので、API連携です。こちらの例のような形で利用されています。“API アーキテクチャは通常、クライアントとサーバーの観点から説明されます。リクエストを送信するアプリケーションはクライアントと呼ばれ、レスポンスを送信するアプリケーションはサーバーと呼ばれます。したがって、天気の例では、気象庁の天気データベースがサーバーであり、モバイルアプリケーションがクライアントです。” https://aws.amazon.com/jp/what-is/api/連携ができると、自社でわざわざ開発せずとも、すでにある優れたサービスやデータベースを簡単に利用することができ、自社サービスの品質向上を計れます。APIとは要求と応答のセットであるまとめます。APIとは、利用者であるアプリケーション(クライアント)が、提供側であるアプリケーション(サーバー)へ要求を出し、応答を返してもらう一連のやり取りのこと。何か、特別な装置とかなのかと思っていましたが、そうではなかった。ざっくりといえば、やり取りの仕方が、API。WEBを通じてやれば、WEB API。APIのやり方で連携したらAPI連携。APIのやり方でやり取りを実行することを、APIを叩く、という。あぁああすっきりした。とてもすっきりしました。よかった。結局APIはなんで便利なの?では、みんながAPIを利用するのはなんでなのか。どこが便利なのか。一番大きな理由は、自分で作らなくても、すでに完成しているアプリケーションの機能や、データベースのデータを利用できる、というところのようです。改めて作る必要がないということは、その分時間や労働を消費せずに、新しいサービスを作成し提供できる。(浮いた時間で他の開発もできる!)また、APIを提供する側としても、自分たちのサービスを使って広めてくれるわけで、労せずして利用者を広げていくことが可能です。もっというと、WEBAPIの場合は使う言語を気にしなくてもいいらしい(この辺は実情をよくわかっていないので想像ですが)というのも、大きいのではと思いました。誰かとコミュニケーションを取りたい時、この人は英語じゃないと伝わらないとか、ドイツ語でなんていうんだっけ、っていうのをいちいち考えていると結局言いたかったことを忘れてしまったり、うまく伝わらなかったりして、苦労します。そういう苦労をしなくてもいいというのは、感覚的にものすごく楽そうです。やっぱり、APIは魔法使いだったんだなぁ。レファレンス以下、勉強に使わせていただいたサイトからの引用をご紹介します。それぞれのサイトで、興味深い情報が公開されていますので、ぜひ併せてご覧ください。個人的に、楽天モバイルさんと、ハブスポットさんの解説がわかりやすかったです。"APIは、あるプログラムの機能を別のプログラムで利用するために、利用者(クライアント)が公開されているAPIプログラムのサーバーにリクエストを送ります。その応答(レスポンス)として、プログラムの一部機能が利用できる仕組みです。""Web APIではないAPIの多くは、利用者側が用いるプログラミング言語と同一の言語を用いて提供されています。しかし、Web APIでは、言語が異なっていても通信が可能なHTTP/HTTPS方式が採用されています。""Web APIに関連する用語として、REST APIやRESTful API、SOAP APIという言葉も理解しておきましょう。これらはWeb APIを実装する際の通信の方式を指したものです。" ハブスポット https://blog.hubspot.jp/website/api-web“APIは「Application Programming Interface」の略称で、ソフトウェア同士が情報をやり取りする際に使用されるインタフェースのことを指します。より細かく表現すると、アプリケーション同士が接続する際のプロトコルや接続部分の仕様を取り決めたもの、と定義されます。” KDDI https://cloudapi.kddi-web.com/magazine/other/waht-api-key"APIは、主にソフトウェアやプログラム同士をつないでいるインターフェースなのです。” ビジネス+IT https://www.sbbit.jp/article/cont1/62752“ APIとは、あるプログラム(アプリケーション)が別のプログラムと連携してデータをやり取りするための手段のことです。わかりやすく言えば、APIとは、ある企業が持っているデータや機能を他の企業や開発者が利用するための「窓口」のようなものです。” Rabiloo https://rabiloo.com/ja/blog/what-is-api" API は、2 つのソフトウェアコンポーネントが一連の定義とプロトコルを使用して相互に通信できるようにするメカニズムです。” Amazon AWS https://aws.amazon.com/jp/what-is/api/" APIは複数のソフトウェアをつなぐインターフェース インターフェースは「境界」や「接点」の意味を持つ言葉ですが、特にIT関連では「コンピューターシステムにおいて、異なる機器や装置のあいだをつなぐ部分」を表します。「ユーザーインターフェース」のように、人間がシステムを操作するための画面や、ハードウェア同士を接続する機器やソフトウェア同士を接続する規格を指すこともあります。 APIはアプリケーション、すなわちソフトウェアのインターフェースなので、システム同士をつないで機能や仕組みを共有するための接点であるといえます。" 楽天モバイルhttps://business.mobile.rakuten.co.jp/column/2023/0810-06/最後にREST APIやSOAP APIという言葉も出てきましたが、いったん次回は、プロジェクトマネージャの口から飛び出した「APIgatewayで29秒の壁と戦う」を解読したいと思います。戦う…エンジニアは日々戦っている…!いや、聞けばいいんですけど、聞く前にある程度勉強しておきたいなと思って。頑張ろう!※文中に使用したイラストは全てDALL-Eにより生成されたものです。