「API」という用語が登場するのを見たことがあるでしょう。オペレーティングシステム、Webブラウザ、およびアプリのアップデートによって、開発者向けの新しいAPIが発表されることがよくあります。しかし、APIとは何ですか? アプリケーションプログラミングインタフェース APIという用語は頭字語で、「Application Programming Interface」を表します。 レストランのメニューのようなAPIを考えてください。メニューには、注文可能な料理の一覧と各料理の説明が表示されます。あなたが欲しいメニュー項目を指定するとき、レストランのキッチンは仕事をして、そしてあなたにいくつかの完成した料理を提供します。あなたはレストランがその食べ物をどのように準備するのか正確には知りません、そしてあなたは本当にする必要はありません. 同様に、APIには、開発者が使用できる一連の操作と、実行内容の説明がリストされています。開発者は、たとえばオペレーティングシステムが「名前を付けて保存」ダイアログボックスを作成して表示する方法など、必ずしも知っている必要はありません。彼らはそれが彼らのアプリで使用可能であることを知る必要があります. 開発者は結果を得るために独自のデータをAPIに提供しなければならない可能性があるので、これは完璧な比喩ではありません。. しかし、それは概して正確です。 APIを使用すると、開発者はプラットフォームの実装を利用して手の込んだ作業を行うことで時間を節約できます。これにより、開発者が作成する必要があるコードの量を減らすことができ、また同じプラットフォームのアプリ間でより一貫性のあるものにすることができます。 APIはハードウェアおよびソフトウェアリソースへのアクセスを制御できます. APIによって開発者の生活が楽になる iPhone用のアプリを開発したいとしましょう。 AppleのiOSオペレーティングシステムは、他のすべてのオペレーティングシステムと同様に、これを簡単にするための多数のAPIを提供しています。. たとえば、1つ以上のWebページを表示するためにWebブラウザを埋め込む場合は、アプリケーションのためだけに自分のWebブラウザを最初からプログラムする必要はありません。アプリケーションにWebKit(Safari)ブラウザオブジェクトを埋め込むには、WKWebView APIを使用します。. iPhoneのカメラから写真やビデオをキャプチャする場合は、独自のカメラインターフェイスを作成する必要はありません。あなたはあなたのアプリにiPhoneの内蔵カメラを埋め込むためにcamera APIを使います。これを容易にするAPIが存在しない場合、アプリ開発者は独自のカメラソフトウェアを作成し、カメラハードウェアの入力を解釈する必要があります。しかし、Appleのオペレーティングシステム開発者は、このようなすべての努力を払ってきたので、開発者は単にカメラAPIを使ってカメラを埋め込んでから、自分のアプリを作成することができます。そして、AppleがカメラAPIを改良するとき、それに依存するすべてのアプリは自動的にその改良を利用するでしょう. これはすべてのプラットフォームに当てはまります。たとえば、Windows上にダイアログボックスを作成しますか?そのためのAPIがあります。 Androidで指紋認証をサポートしたいですか?そのためのAPIもありますので、すべてのAndroidメーカーの指紋センサーをテストする必要はありません。開発者は何度も何度もホイールを作り直す必要はありません. APIによるリソースへのアクセス制御 APIは、アプリケーションが必ずしも使用を許可されていない可能性があるハードウェアデバイスおよびソフトウェア機能へのアクセスを制御するためにも使用されます。だからこそ、APIはセキュリティにおいて大きな役割を果たすのです。. たとえば、Webサイトにアクセスしたときに、Webサイトから自分の正確な位置を確認するようにというメッセージがブラウザに表示された場合、そのWebサイトはWebブラウザで位置情報APIを使用しようとします。 Webブラウザは、Web開発者があなたの位置にアクセスするのを容易にするためにこのようなAPIを公開します - 彼らは単に「あなたはどこにいますか?」と尋ねることができます。. ただし、ブラウザは、アクセスを制御することが可能であるため、APIを介してこの情報を公開しています。ウェブサイトがあなたの正確な物理的な場所へのアクセスを望んでいるとき、彼らがそれを得ることができる唯一の方法はlocation APIを経由することです。そして、Webサイトがそれを使用しようとすると、あなた(ユーザー)はこの要求を許可するか拒否するかを選択できます。 GPSセンサーなどのハードウェアリソースにアクセスする唯一の方法はAPIを使用することであるため、ブラウザはハードウェアへのアクセスを制御し、アプリが実行できることを制限できます。. これと同じ原則が、iOSやAndroidなどの最近のモバイルオペレーティングシステムでも使用されています。モバイルアプリケーションには、APIへのアクセスを制御することで強制できる権限があります。たとえば、開発者がカメラAPIを介してカメラにアクセスしようとすると、許可要求を拒否することができ、アプリにはデバイスのカメラにアクセスする方法がありません。....