APIとは何ですか?

「API」という用語が出てくるのを見たことがあるでしょう。オペレーティングシステム、Webブラウザー、およびアプリの更新により、開発者向けの新しいAPIが発表されることがよくあります。しかし、APIとは何ですか?

アプリケーションプログラミングインターフェイス

APIという用語は頭字語であり、「アプリケーションプログラミングインターフェイス」の略です。

APIをレストランのメニューのように考えてください。メニューには、注文できる料理のリストと各料理の説明が表示されます。必要なメニュー項目を指定すると、レストランのキッチンが機能し、完成した料理を提供します。あなたはレストランがその料理をどのように準備するかを正確に知りません、そしてあなたは本当にそうする必要はありません。

同様に、APIには、開発者が使用できる一連の操作と、その実行内容の説明が一覧表示されます。開発者は、たとえば、オペレーティングシステムがどのように構築され、[名前を付けて保存]ダイアログボックスを表示するかを必ずしも知る必要はありません。彼らはそれが彼らのアプリで使用できることを知る必要があるだけです。

開発者が結果を得るためにAPIに独自のデータを提供しなければならない可能性があるため、これは完全なメタファーではありません。したがって、キッチンで使用できる独自の食材を提供できる高級レストランのようなものかもしれません。

しかし、それはおおむね正確です。APIを使用すると、開発者はプラットフォームの実装を利用して本質的な作業を行うことで時間を節約できます。これにより、開発者が作成する必要のあるコードの量を減らすことができ、同じプラットフォームのアプリ間で一貫性を高めることもできます。APIは、ハードウェアおよびソフトウェアリソースへのアクセスを制御できます。

APIは開発者の生活を楽にします

iPhone用のアプリを開発したいとします。AppleのiOSオペレーティングシステムは、他のすべてのオペレーティングシステムと同様に、これを簡単にするために多数のAPIを提供します。

たとえば、Webブラウザを埋め込んで1つ以上のWebページを表示する場合は、アプリケーション専用に独自のWebブラウザを最初からプログラムする必要はありません。WKWebView APIを使用して、WebKit(Safari)ブラウザーオブジェクトをアプリケーションに埋め込みます。

iPhoneのカメラから写真やビデオをキャプチャしたい場合は、独自のカメラインターフェイスを作成する必要はありません。カメラAPIを使用して、iPhoneの組み込みカメラをアプリに埋め込みます。これを簡単にするAPIが存在しなかった場合、アプリ開発者は独自のカメラソフトウェアを作成し、カメラハードウェアの入力を解釈する必要があります。しかし、Appleのオペレーティングシステム開発者はこのような大変な作業をすべて行ったので、開発者はカメラAPIを使用してカメラを埋め込み、アプリの構築に取り掛かることができます。そして、AppleがカメラAPIを改善すると、それに依存するすべてのアプリがその改善を自動的に利用します。

これはすべてのプラットフォームに適用されます。たとえば、Windowsでダイアログボックスを作成しますか?そのためのAPIがあります。Androidで指紋認証をサポートしたいですか?そのためのAPIもあるので、Androidメーカーの指紋センサーをすべてテストする必要はありません。開発者は、車輪の再発明を何度も繰り返す必要はありません。

APIはリソースへのアクセスを制御します

APIは、アプリケーションが必ずしも使用許可を持っているとは限らないハードウェアデバイスおよびソフトウェア機能へのアクセスを制御するためにも使用されます。そのため、APIはセキュリティにおいて大きな役割を果たすことがよくあります。

関連:ウェブサイトがあなたの場所を尋ねるのを止める方法

たとえば、Webサイトにアクセスしたことがあり、Webサイトが正確な場所を確認するように求めているというメッセージをブラウザで見た場合、そのWebサイトはWebブラウザでgeolocationAPIを使用しようとしています。 WebブラウザはこのようなAPIを公開して、Web開発者があなたの場所に簡単にアクセスできるようにします。Webブラウザは「どこにいますか?」と尋ねるだけです。ブラウザは、GPSまたは近くのWi-Fiネットワークにアクセスして、物理的な場所を見つけるという大変な作業を行います。

ただし、ブラウザはAPIを介してこの情報を公開します。これは、情報へのアクセスを制御できるためです。Webサイトが正確な物理的な場所にアクセスしたい場合、Webサイトがアクセスできる唯一の方法はロケーションAPIを使用することです。また、Webサイトがそれを使用しようとすると、ユーザーであるあなたはこの要求を許可するか拒否するかを選択できます。GPSセンサーなどのハードウェアリソースにアクセスする唯一の方法はAPIを使用することです。そのため、ブラウザーはハードウェアへのアクセスを制御し、アプリが実行できることを制限できます。

これと同じ原則が、iOSやAndroidなどの最新のモバイルオペレーティングシステムで使用されています。モバイルアプリには、APIへのアクセスを制御することで適用できる権限があります。たとえば、開発者がカメラAPIを介してカメラにアクセスしようとした場合、許可リクエストを拒否でき、アプリはデバイスのカメラにアクセスする方法がありません。

Windows、Mac、およびLinuxの場合と同様に、アクセス許可を使用するファイルシステムには、ファイルシステムAPIによって適用されるアクセス許可があります。一般的なアプリケーションは、raw物理ハードディスクに直接アクセスできません。代わりに、アプリはAPIを介してファイルにアクセスする必要があります。

APIはサービス間の通信に使用されます

APIは、他のさまざまな理由でも使用されます。たとえば、ウェブサイトに埋め込まれたGoogle Mapsオブジェクトを見たことがあれば、そのウェブサイトはGoogle MapsAPIを使用してその地図を埋め込んでいます。GoogleはこのようなAPIをWeb開発者に公開し、Web開発者はAPIを使用して複雑なオブジェクトをWebサイトに直接配置できます。このようなAPIが存在しなかった場合、開発者は独自のマップを作成し、Webサイトに小さなインタラクティブマップを配置するためだけに独自のマップデータを提供する必要があります。

また、APIであるため、Googleはサードパーティのウェブサイト上のGoogleマップへのアクセスを制御でき、たとえばGoogleマップのウェブサイトを示すフレームを乱雑に埋め込もうとするのではなく、一貫した方法で使用できるようにします。

これは、さまざまなオンラインサービスに当てはまります。Google翻訳からのテキスト翻訳をリクエストしたり、FacebookのコメントやツイートをTwitterからウェブサイトに埋め込んだりするためのAPIがあります。

関連:OAuthとは何ですか?Facebook、Twitter、Googleのサインインボタンのしくみ

OAuth標準では、別のサービスでWebサイトにサインインできるようにする、いくつかのAPIも定義されています。たとえば、Facebook、Google、またはTwitterアカウントを使用して、そのサイト専用の新しいユーザーアカウントを作成せずに新しいWebサイトにサインインできます。 。APIは、開発者がサービスと通信する方法と、開発者が受け取ることを期待する必要のある出力の種類を定義する標準契約です。

これを理解すれば、APIが何であるかをよりよく理解できるようになります。最終的には、開発者でない限り、APIが何であるかを実際に知る必要はありません。ただし、ソフトウェアプラットフォームまたはサービスがさまざまなハードウェアまたはサービス用の新しいAPIを追加している場合は、開発者がそのような機能を利用しやすいはずです。

画像クレジット:patpitchaya /Shutterstock.com。