アプリケーションプログラミングインターフェース(API)とは、ソフトウェアの一部が他のソフトウェアの機能の一部を利用するための仕様です。
この記事を読み終えると、以下のことができるようになります。
関連コンテンツ
是非、Cloudflareが毎月お届けする「theNET」を購読して、インターネットで最も人気のある洞察をまとめた情報を入手してください!
記事のリンクをコピーする
アプリケーションプログラミングインターフェース(API)は、あるソフトウェアプログラムが別のソフトウェアプログラムにデータを送信するための一連の仕様です。
APIを利用することで、開発者は冗長的な作業を避けることができます。既存のアプリケーションの機能をビルドして再構築する代わりに、APIが要求する書式にしたがってリクエストを行うことで、既存の機能を新しいアプリケーションに取り込むことができます。
APIは「インターフェース」であり、あるものが別のものと対話する方法を意味しています。実際の例として、ATMには画面といくつかのボタンというインターフェイスがあり、顧客は銀行とやり取りして、現金を引き出すなどのサービスを要求することができます。同様に、APIは、あるソフトウェアの一部が他のプログラムとやり取りして必要なサービスを得る方法です。
ジェニファーが、通勤する人が出勤前に国道の交通状況をチェックするためのWebサイトを作ったとします。ジェニファーは、自分のWebサイトのユーザーにこの情報を提供するために、複雑な国道の追跡システムを設定するために多くの時間とお金を費やすことになります。しかし、このようなシステムは、すでに外部の第三者によって作られており、その機能は存在しています。ジェニファーのWebサイトでは、このような確立されている技術を再開発する代わりに、外部の国道の追跡サービスが提供するAPIを使用します。こうすることでジェニファーは、ウェブサイトの他の部分の構築に集中することができるようになります。
APIコール(APIリクエストとも呼ばれる)は、APIの使用をトリガーする、API宛のメッセージのことです。
例に戻ると、ジェニファーは自分のWebサイトを読み込む際に、高速道路の追跡サービスに対するAPIコールを自動的に生成するように構築します。その応答は、そのサービスからWebサイトに返され、最新の高速道路交通情報を表示することができます。
APIコールは、APIの要件に従った書式でなければ動作しません。APIの要件は「スキーマ」と呼ばれます。スキーマには、各リクエストに対して提供されるレスポンスの種類も記述されています。
ある通勤者がジェニファーのWebサイトを利用して、国道192号線の交通状況を確認したとします。Webサイトはこの情報を提供するために「国道192号線」というメッセージのAPIコールを送信します。国道追跡サービスのAPIサーバーはこのメッセージを受信し、国道192号線の所要時間を返信します。APIのスキーマを次のように考えてみましょう:
| APIリクエスト | API応答 |
|---|---|
| 「国道192号線」 | 国道192号線の所要時間 |
| 「国道217号線」 | 国道217号線の所要時間 |
| 「国道225号線」 | 国道225号線の所要時間 |
(なお、これは非常に単純化された例あり、実際のAPIのリクエスト、レスポンス、スキーマはより複雑なものになります)。
ここで、ジェニファーのWebサイトが「国道ASDFGHJ」に対するAPIリクエストを送信したとします。これは国道の実名のみを許可するAPIのスキーマに従ったものではないため有効なリクエストではありません。サーバーはこのようなリクエストに対して、使用可能なレスポンスを提供することはできません。
エンドポイントとは、通信路の終端を指します。APIエンドポイントは、APIレスポンスの発信元となる場所のことです。
この例では、API接続のクライアントはジェニファーのWebサイトであり、エンドポイントはAPIをホストするサーバーです。ジェニファーのAPIコールはレスポンスを得るために、APIサーバーが担当する特定のURL(URLはwww.cloudflare.com/learningのようなWebアドレスです)に移動する必要があります。
API連携とは、APIを利用して2つ以上のアプリケーションを組み合わせることです。これは、営業チームとマーケティングチームを1つのオフィスに統合することで、2つのチームが協力し合い、互いの努力から利益を得ることができるようなものです。API連携は、一般的に2つのアプリケーションやデータベース間でデータを同期させるためにも使用されます。
オペレーティングシステムからソフトウェアライブラリまで、コンピュータコードを伴うものなら何でもAPIを持つことができます。Web APIは、インターネット経由でアクセスするWebアプリケーションでの使用に特化したものです。
Web APIは、現代のインターネットにとって非常に重要なものです。ほぼすべてのユーザー向けアプリケーションは、APIに依存して機能しています(ジェニファーのWebサイトだけではありません!)。ソフトウェア開発の考え方全体がAPIの使用に依存しています。そのような考え方の1つがJAMstackであり、JAMはJavaScript、API、Markupを表しています。他の例としては、アプリケーションを構成するさまざまな機能を呼び出すためにAPIを使用するマイクロサービスアーキテクチャがあります。これらのアプローチによらずに作られたアプリケーションも、通常はAPIに依存しています。
SOAP APIとREST APIは、異なるカテゴリーのAPIを表しています。
SOAP(Simple Object Access Protocol)は プロトコルの一種です。SOAP APIは、SOAPプロトコルのみを使用するAPIです。
REST(REpresentational State Transfer)は、Webサービスのアーキテクチャスタイルの一つです。REST APIは、RESTアーキテクチャを使用してビルドされたすべてのAPIを指します。SOAP APIとは異なり、REST APIはあらゆるプロトコルで動作します。現在のほとんどのAPIはREST APIです。
ユーザーにアプリケーションの使用を許可すると、アプリケーションが悪用されるリスクがあるように、APIもAPIクライアントにサービスを悪用されるリスクがあります。さらに、Web API呼び出しはインターネット上を移動するため、ネットワークを流れる他のデータと同様に、傍受、なりすまし、または改ざんされる恐れがあります。
APIセキュリティは、APIを攻撃や悪用から保護するための実践方法です。現代のインターネットにおけるAPIの重要性を考えると、APIセキュリティはWebアプリケーションセキュリティの中核的な要素であると言えます。重要なAPIセキュリティの対策には次のようなものがあります:
Cloudflare API Shieldには、これらの機能をはじめ、その他のAPIの脅威から保護するためのセキュリティ機能が搭載されています。APIセキュリティについての詳細はAPIセキュリティとは何か?をご覧ください。
APIとは、あるソフトウェアプログラムが別のソフトウェアプログラムと通信することを可能にするルールセットです。APIを利用することで、開発者はアプリケーションでゼロから機能を構築するのではなく、既存の機能を活用することができます。
API呼び出しは、APIに送信されて機能を実行させるメッセージです。メッセージはAPIのスキーマに従ってフォーマットされ、有効なレスポンスを得るために正しいエンドポイントに向けられる必要があります。
APIエンドポイントとは、API呼び出しが向けられる特定のURLまたは場所のことです。アプリケーションがAPIからデータやサービスを取得するためにリクエストを送信する場所です。
Web APIは、インターネット上のWebアプリケーションで使用するために設計されたAPIです。最新のデジタルサービスやWebベースのアプリにとって不可欠です。
APIセキュリティは、APIを攻撃や悪用から保護するための実践手法です。主な対策には、レート制限、認証(特にmutual TLS)、スキーマ検証、DDoS攻撃対策などがあります。
REST APIは柔軟なアーキテクチャスタイルを採用しており、あらゆるプロトコルを使用できます。SOAP APIは、Simple Object Access Protocol(シンプルオブジェクトアクセスプロトコル)と呼ばれる特定のプロトコルを使用します。現在のほとんどのAPIはREST APIです。
APIスキーマは、API呼び出しのフォーマット方法とAPIが提供するレスポンスの種類に関するルールを定義します。このルールにより、リクエストとレスポンスが標準的な構造に従うことを保証します。スキーマ検証は攻撃を防ぐのにも役立ちます。スキーマに従わないリクエストは破棄される可能性があります。これにより、APIが機密データを公開するなど、予期しない動作を防ぐことができます。
API統合とは、APIを使用して2つ以上のアプリケーションを接続し、データや機能を共有するプロセスです。
利用開始
Webアプリケーションセキュリティについて
一般的な脅威
VPNリソース
セキュリティ用語集