アプリケーションプログラミングインターフェース(API)とは、ソフトウェアの一部が他のソフトウェアの機能の一部を利用するための仕様です。
この記事を読み終えると、以下のことができるようになります。
関連コンテンツ
是非、Cloudflareが毎月お届けする「theNET」を購読して、インターネットで最も人気のある洞察をまとめた情報を入手してください!
記事のリンクをコピーする
アプリケーションプログラミングインターフェース(API)は、あるソフトウェアプログラムが別のソフトウェアプログラムにデータを送信するための一連の仕様です。
APIは「インターフェース」であり、あるものが別のものと対話する方法を意味しています。実際の例として、ATMには画面といくつかのボタンというインターフェイスがあり、顧客は銀行とやり取りして、現金を引き出すなどのサービスを要求することができます。同様に、APIは、あるソフトウェアの一部が他のプログラムとやり取りして必要なサービスを得る方法です。
ジェニファーが、通勤する人が出勤前に国道の交通状況をチェックするためのWebサイトを作ったとします。ジェニファーは、自分のWebサイトのユーザーにこの情報を提供するために、複雑な国道の追跡システムを設定するために多くの時間とお金を費やすことになります。しかし、このようなシステムは、すでに外部の第三者によって作られており、その機能は存在しています。ジェニファーのWebサイトでは、このような確立されている技術を再開発する代わりに、外部の国道の追跡サービスが提供するAPIを使用します。こうすることでジェニファーは、ウェブサイトの他の部分の構築に集中することができるようになります。
APIコール(APIリクエストとも呼ばれる)は、APIの使用をトリガーする、API宛のメッセージのことです。
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 Gatewayには、これらの機能をはじめ、その他のAPIの脅威から保護するためのセキュリティ機能が搭載されています。APIセキュリティについての詳細はAPIセキュリティとは何か?をご覧ください。
利用開始
Webアプリケーションセキュリティについて
一般的な脅威
VPNリソース
セキュリティ用語集
ラーニングセンターナビゲーション