アプリケーションプログラミングインターフェース(API)とは
アプリケーションプログラミングインターフェース(API)とは、ユーザー(人またはソフトウェア)と情報(オンラインアプリケーションやWebアプリケーションが提供するデータリソース)という2つのエンティティ間の通信を可能にする、定義、ルール、プロトコルの集合です。
今日、APIは最新のアプリケーションを支える基盤となり、ユーザーエクスペリエンスを向上させ、ビジネスモデルを強化しています。API自体がビジネスモデルとなる場合もあります。
APIの仕組み
APIはアプリケーションの「表向きの窓口」であり、そのアプリケーションが実行する機能や提供できる情報を公開するとともに、適切なリクエスト形式を定義します。開発者がアプリケーションのAPIを作成して公開すると、他のアプリケーションがそのアプリケーションと通信できるようになります。
多くの場合、APIを利用すると、一般的な機能をすぐに使用できるため、開発者の貴重な時間を節約できます。既存のアプリケーションの機能を重複して実装する代わりに、そのAPIを呼び出すことで、自身のアプリケーションに機能を統合できます。
各APIの設計、デプロイ、動作の仕組みは、そのアーキテクチャスタイルまたはプロトコルによって異なります。
APIアーキテクチャとプロトコルの種類
APIアーキテクチャ(アーキテクチャスタイル)とは、APIの上位レベルの設計を指します。これには、APIの構造や構成、リクエスト/レスポンスの形式が含まれます。APIプロトコルも形式を規定しますが、さらに具体的なメッセージについても定義します。
一般的なAPIアーキテクチャとプロトコルには、次のものがあります。
- REST – RESTfulとも呼ばれるこのアーキテクチャスタイルは、Representational State Transferの原則に基づいています。HTTPメソッド(GET、POST、PUT、DELETEなど)と、リソースおよびリソースモデルとして抽象化された情報を使用して、拡張性と柔軟性に優れ、特定のテクノロジーに依存しない構造を構築します。現在も、RESTは最も広く利用されているAPIアーキテクチャです。
- GraphQL – Meta(旧Facebook)が開発したオープンソースのクエリ言語です。GraphQLアーキテクチャでは、1回のAPI呼び出しで複数のソースからデータを取得できます。クライアントは必要なデータのみをリクエストするため、GraphQL APIはREST APIよりも効率的な傾向があります(ただし、キャッシュには適していません)。
- SOAP – このアーキテクチャアプローチでは、 Simple Object Access Protocol (SOAP)を使用します。SOAPメッセージは通常XML形式であるため、RESTやGraphQLよりもデータ量が大きくなります。REST APIとは異なり、SOAP APIにはAPIプロトコルの構造を定義する厳格な実装ガイドラインがあります。
- WebSocket – このAPIプロトコルは全二重通信に対応しており、クライアントとサーバーが同時にメッセージを送受信できます。また、サーバーはクライアントからのリクエストへの応答ではなく、たとえばサーバー側のイベントをトリガーとしてメッセージを送信できます。これに対し、REST APIは厳密なリクエスト/レスポンス方式に従います。
- RPC – リモートプロシージャコールでは、開発者はリモート通信の詳細を指定することなく、ローカル関数と同じコードを使用して、異なるアドレス空間(通常はリモートサーバー上)で実行される関数を呼び出せます。複数の言語を使用できるため、このプロトコルは柔軟性が高く、クライアントとサーバー間の通信で広く使用されています。RPCの一例として、gRPC(Google Remote Procedure Call)があります。
現在、APIはどのように利用されているか
APIは、現代のソフトウェアに不可欠な要素です。今日、組織や企業はニーズに応じて、さまざまな種類のAPIを構築または利用しています。
現在、組織で最も一般的に見られるAPIは、パブリックAPI、プライベートAPI、パートナーAPI、サードパーティAPIの4種類です。
パブリックAPI
パブリックAPIは、企業外のユーザーが有料または無料で利用できます。これにより、サードパーティの開発者とパートナーシップを構築し、ビジネスエコシステム全体を拡大できます。
パブリックAPIは、サードパーティの開発者が新しい製品の構築に利用できるため、イノベーションを促進し、新たなパートナーシップの構築を支援する重要なツールとなります。
プライベートAPI
プライベートAPIにアクセスできるのは、企業内のチームに限られます。プライベートAPIは、データの活用や社内連携の促進に役立つほか、組織の一般公開アプリケーション(Webサイトなど)をユーザーから見えないところで支えている場合もあります。
プライベートAPIは社内ユーザーのみが利用できるため、組織は最適化を重視して構築できます。また、プライベートAPIによってモダンアプリケーションのコンポーザビリティが向上し、企業は現在のニーズに対応できるようになります。開発者はマイクロサービスの構築時にプライベートAPIを容易に統合できるため、チーム間での作業の重複を削減できます。
パートナーAPI
Partner APIは、ビジネスパートナーとの直接的な連携に使用されます(たとえば、航空会社とホテルチェーンが提携し、航空券と宿泊施設を同時に予約できる場合など)。Partner APIは一般公開されておらず、両社の認証(AuthN)および認可(AuthZ)の要件を満たす一部の開発者のみがアクセスできます。
相互運用性により、サイロが解消され、異なる組織間の連携が可能になるため、パートナーAPIを通じた関係が強化されます。
サードパーティAPI
サードパーティAPIは、組織のアプリケーションやサービスにないデータや機能にアクセスするために使用されます。これらのAPIはサードパーティのサーバー上で稼働し、通常は広く必要とされるサービスを提供します(多くのeコマースWebサイトで使用されているStripeの決済処理APIなど)。組織は、APIに応じて有料または無料で利用できます。
サードパーティAPIは別の開発者や組織によってすでに構築されているため、コスト削減という明確なメリットがあります。また、開発者が機能を自らコーディングすることなくすぐに利用できるため、組織がアプリを迅速に開発するうえで重要な手段となります。
APIの作成にはどのプログラミング言語が使用されますか?
ほぼすべての最新プログラミング言語でAPIを実装できます。APIを実装する際、多くの開発者はフレームワークを使用することがあります。フレームワークには、コードライブラリなどの構成要素や必要なユーティリティが用意されているため、その言語を使用したアプリケーション開発をより迅速かつ容易に進められます。
一般に、各プログラミング言語には、開発者の間で広く利用されているフレームワークが1つ以上あります。表には、複数のフレームワークの選択肢(その多くはオープンソース)が記載されています。
言語
フレームワーク
Java
JavaScript、Node.js
Angular, Express.js, React, Vue
PHP
Python
Rust
Ruby
どの言語とフレームワークを選ぶかは、通常、プロジェクトのニーズや開発者個人の好みによって決まります。
APIの例
今日の組織には、目標に沿った最新のAPI戦略が必要です。API戦略では、組織がAPIを設計、開発、管理、ガバナンス、保護する方法について計画を定めます。
According to ソフトウェアエンジニアリングリーダー向け:Gartnerが示すAPIに関する5つの重要な教訓によると、強固なAPI戦略を実現するためのベストプラクティスは次の5つです。
- APIガバナンスがボトルネックにならないようにします。イノベーションを継続的に推進するには、APIガバナンスと開発者のアジリティのバランスを取る必要があります。
- APIの収益化を予定していない場合でも、APIを製品として扱います。各APIの目的と対象ユーザーを明確にし、ビジネス目標との整合性を確保してください。
- ハッカーに先んじてAPIを検出しましょう。検出可能性を重視し、定期的に監視することで、セキュリティ侵害の防止に役立ちます。
- APIのライフサイクルを管理します。包括的なAPIライフサイクル管理により、適切なセキュリティを維持しながらAPIの継続的な稼働を確保します。
- 最適なAPIテクノロジーを選択する。ある組織に適したものが、必ずしも自社にも適しているとは限りません。そのため、現在および将来の具体的なAPIニーズを詳細に検討することが重要です。
どのようなAPIアーキテクチャを選択し、どのような種類のAPIをコーディングする場合でも、APIセキュリティを後付けではなく、最初から考慮することが不可欠です。APIを当初から保護し、APIの無秩序な増加などの一般的な問題に対処する方法について詳しくは、「APIセキュリティ:APIを保護するためのベストプラクティス」をご覧ください。
また、すべての指標が同じように重要とは限りません。詳しくは「API戦略を成功に導くために監視すべき12の指標」をご覧ください。
API接続性とは
APIは当初、開発者向けのツールとして登場しましたが、現在では収益の拡大と企業のアジリティ向上を支える戦略的なビジネス資産へと発展しています。API接続とは、クラウドネイティブ環境でモジュール化された再利用可能なAPIを使用してデータとアプリケーションを連携し、可視性、セキュリティ、ガバナンスに関する課題の解決を目指すことです。

