APIとは何ですか?日本語で教えて〜

APIとは何ですか?日本語で教えて〜

APIとは何ですか?日本語で教えて〜

私は、技術関係の仕事をしている人もそれ以外の人も、このかなり一般的な用語の意味について、かなり曖昧か間違った考えを持っている人にたくさん会う。

技術的には、APIはApplication Programming Interfaceの略である。ほとんどの大企業は、ある時点で、あるいは別の時点で、顧客のために、あるいは社内使用のためにAPIを構築している。

しかし、APIを分かりやすく説明するにはどうすればいいのだろうか?また、開発やビジネスで使われるものよりも広い意味があるのだろうか?まず、ウェブそのものの仕組みに立ち戻って見てみよう。

WWWとリモートサーバー

ウェブについて考えるとき、私は接続されたサーバーの大規模なネットワークを想像する。

インターネット上のすべてのページは、リモート・サーバーのどこかに保存されている。リモート・サーバーは、結局のところそれほど神秘的なものではない。リクエストを処理するために最適化された、遠隔地にあるコンピューターの一部にすぎない。

物事を整理すると、ウェブにウェブサイト全体を提供できるサーバーをノートパソコンで立ち上げることができる(実際、エンジニアがウェブサイトを公開する前に開発するのに使うのがローカルサーバーだ)。

ブラウザに「www.facebook.com」と入力すると、フェイスブックのリモート・サーバーにリクエストが送信される。ブラウザはレスポンスを受け取ると、コードを解釈してページを表示する。

クライアントとも呼ばれるブラウザにとって、フェイスブックのサーバーはAPIです。つまり、ウェブ上のページにアクセスするたびに、リモート・サーバーのAPIとやりとりすることになる。

APIはリモート・サーバーと同じではなく、リクエストを受け取りレスポンスを送信するサーバーの一部である。

顧客にサービスを提供する方法としてのAPI

APIを製品としてパッケージ化している企業の話を聞いたことがあるだろう。例えば、Weather Undergroundは気象データAPIへのアクセスを販売している。

シナリオの例 あなたの中小企業のウェブサイトには、顧客が予約を申し込むためのフォームがあります。あなたは、その予約の詳細でGoogleカレンダーのイベントを自動的に作成する機能をクライアントに提供したい。

APIを使用します: アイデアとしては、あなたのウェブサイトのサーバーがGoogleのサーバーに直接、指定された詳細でイベントを作成するようリクエストすることです。あなたのサーバーはGoogleのレスポンスを受信し、それを処理し、ユーザーへの確認メッセージなどの関連情報をブラウザに送り返します。

あるいは、ブラウザが直接GoogleのサーバにAPIリクエストを送ることもできます。

GoogleカレンダーのAPIは、他のリモートサーバーのAPIとどう違うのですか?

技術的には、リクエストとレスポンスの形式が違います。

ウェブページ全体をレンダリングするために、ブラウザはプレゼンテーションコードを含むHTMLでのレスポンスを期待しますが、Google CalendarのAPIコールは、おそらくJSONのようなフォーマットでデータを返すだけです。

もしあなたのウェブサイトのサーバーがAPIリクエストを行っているのであれば、あなたのウェブサイトのサーバーはクライアントということになる(ウェブサイトへのナビゲーションのためにブラウザを使用するとき、ブラウザがクライアントであるのと似ている)。

ユーザーから見れば、APIはあなたのウェブサイトを離れることなくアクションを完了することを可能にする。

最近のウェブサイトのほとんどは、少なくともいくつかのサードパーティのAPIを利用している。

多くの問題は、ライブラリやサービスという形で、すでにサードパーティのソリューションを持っている。多くの場合、既存のソリューションを使う方が簡単で信頼できる。

開発チームがアプリケーションを複数のサーバーに分割し、APIを介して相互にやり取りすることは珍しくない。メインのアプリケーション・サーバーのヘルパー機能を実行するサーバーは、一般的にマイクロサービスと呼ばれる。

要約すると、企業が顧客にAPIを提供するということは、純粋なデータレスポンスを返す専用URLのセットを構築したことを意味する。

ブラウザーでこれらのリクエストを行うことはできますか?多くの場合、可能です。実際のHTTP送信はテキストで行われるため、ブラウザはレスポンスを表示するために常に最善を尽くします。

たとえば、GitHub の API にはアクセストークンなしでブラウザから直接アクセスできます。GitHub ユーザーの API ルートにブラウザでアクセスしたときの JSON レスポンスは次のとおりです。

ブラウザはうまく JSON レスポンスを表示しているようです。このような JSON レスポンスがあれば、すぐにコードで使えるようになります。このテキストからデータを取り出すのは簡単です。そして、そのデータを使って好きなことができる。

Aは “アプリケーション”

最後に、APIの例をもういくつか挙げておこう。

「アプリケーション」は多くのものを指す。以下はAPIの文脈におけるそれらの一部である:

明確な機能を持つソフトウェアの一部。
サーバー全体、アプリ全体、またはアプリのほんの一部。
基本的に、その環境から明確に分離できるソフトウェアの一部であれば、APIの “A “になり得るし、おそらく何らかのAPIも持っているだろう。

あなたのコードにサードパーティのライブラリが使われているとしよう。いったんコードに組み込まれると、ライブラリはアプリ全体の一部となる。そのライブラリは、他のコードと相互作用するためのAPIを持っている可能性が高い。

別の例を挙げよう: オブジェクト指向設計では、コードはオブジェクトに編成される。あなたのアプリケーションには、互いに相互作用できる何百ものオブジェクトが定義されているかもしれません。

各オブジェクトにはAPIがあり、アプリケーション内の他のオブジェクトとやりとりするために使用するパブリックメソッドとプロパティのセットです。

オブジェクトにはプライベートな内部ロジックがあるかもしれません。つまり、外部のスコープからは隠されています(APIではありません)。

今回取り上げた内容から、APIのより広い意味と、今日のより一般的な使い方を感じ取っていただければ幸いだ。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

お買い物カゴ