APIとは
APIとは、「アプリケーション・プログラミング・インターフェース」の略称で、アプリケーション間を連携するしくみのことです。サービス同士の情報のやり取りの方法や 、サービスとエコシステム全体とのやり取りの方法を定めます。APIは、アプリケーション同士が共通言語で対話するための手段を提供し、双方の機能が通信できるように、使用できるリクエストの種類や形式を定義しています。
APIを通じてアクセスできるサービスの例としては、位置情報サービスのデータの取得、最新の気象情報や財務データの取得、GoogleやFacebookのアカウントを使用するログインサービスでのIDの認証などがあります。
この記事では、APIの基礎知識として、APIの主なユースケースや機能、APIマネジメントのベストプラクティスについて解説します。また、API開発に関連する主な概念や、デジタルトランスフォーメーションでAPIが果たす役割についても取り上げます。
APIが重要な理由
現代のデジタル製品やデジタル体験はAPIで作られています。APIはアプリケーション開発をシンプルにします。昨今の分散型アプリケーションのパラダイムにおいて、APIは中心的な構成要素の1つです。世界のインターネットトラフィック全体の内、APIベースのサービストラフィックは80%以上を占めると推計されています。
APIの導入が広まった背景には、クラウドネイティブアプリケーションやマイクロサービスの普及があります。
マイクロサービスの世界へ第一歩を踏み出す開発者にとっても、強力なAPIエコノミーでビジネスを変革することに関心のあるIT意思決定者にとっても、APIの意味や仕組みを理解することには大きな価値があります。
APIの主なユースケース
APIの技術に初めて触れる方がAPIを理解するには、その仕組みや機能がわかる具体例を用いて考えてみるのが、おそらく最も簡単です。
例えば、よく利用するピザ店のアプリで宅配ピザを注文するとしましょう。このアプリには、Facebookアカウントでログインできる機能があるとします。
このときFacebook側は、プラットフォーム全体へのフルアクセス権をピザ店に対して付与したいとは思いません。ピザ店のアプリがFacebookのシステムと簡単に通信してID認証を利用でき、かつFacebookが望まない形での連携や接続は一切認めないようにすることができる手段があります。それがAPIです。ピザ店のアプリは、FacebookのAPIを呼び出して、必要なデータを要求するだけで済み、データはコンマ数秒で届きます。(ピザが届くのに最大30分かかるのとは大違いです。)
そのほか、ピザ店のアプリでAPIが役立つ主な例としては、地図アプリと連携して配達員の現在地を表示する機能や、スマホ決済サービスで代金を支払う機能が考えられます。
これらの機能はいずれもピザ店のアプリ内で完結します。FacebookやGoogleマップ、Apple Payを開く必要はありません。APIを通じて、舞台裏で連携が行われます。
このように企業各社は、認証、地図、決済サービスなどの機能をAPI経由で公開することで、市場での潜在的な勢力を拡大できます。
APIのしくみ
APIは、呼び出す側のアプリケーション(クライアント)と、呼び出される側のアプリケーション(サーバー)の仲介役として動作し、リクエストへの応答としてデータやリソースをレスポンスとして返します。APIはこの処理を、定義済みの一連の規則(もしくはインターフェース)とプロトコルに従って行います。
インターフェースが定められていることによって、あらゆる言語で開発されたクライアントアプリケーションがAPIを呼び出し、バックエンドのアプリケーションと通信して、目的のリソースを取得することができます。
API自体の開発には大半の高水準言語を使用できます。APIを備えたバックエンドのシステムと呼び出し元のアプリケーションとを結び付けるのは、以下の要素のみです。
- リクエストを受け取ってレスポンスを返すインターフェース
- メッセージを互いに受け渡すためのプロトコル
APIは背後にあるプログラムを抽象化し、そのサービスをクライアントアプリケーションが簡単に利用できるようにカプセル化します。
APIは、ウェブアプリケーション、モバイルアプリ、デスクトップアプリや、システム間通信で利用されます。2つのソフトウェアの間で通信が必要なあらゆる場面において、APIを利用できる可能性があります。
上の図では、クライアントアプリケーションがAPIサービスにリクエストを送信しています。APIは内部でアプリケーションやバックエンドシステムと通信してデータを取得し、演算処理を実行したうえで、クライアントに応答を返します。APIサービスではRESTのほかに、SOAP、GraphQL、gRPCなどのプロトコルを使用できます。
APIの種類
APIにはさまざまな分類の仕方がありますが、特に多いのはアクセス方法による分類です。
APIエンドポイントはその公開範囲に応じて、パブリック、プライベート、パートナーに分類できます。パブリックとは、インターネット上のすべての利用者に公開されているAPIエンドポイントのことです。この区分のAPIは、利用者のサブスクリプションに紐付いたトークンを使ってアクセスできます。一方プライベートとは、同じ組織のネットワーク内からのみアクセスできるAPIエンドポイントです。またパートナーとは、インターネットからアクセス可能ながら、認可を得たパートナー組織だけが利用できるAPIエンドポイントです。
パブリックAPI
パブリックAPIは、インターネット経由で誰でも利用できるAPIです。これらのAPIをメンテナンスしているのは、APIエンドポイントの開発やデプロイを行い、管理にあたっている組織です。パブリックAPIは、ドキュメント(機能やアクセス方法を記載した文書)も誰でも参照できます。パブリックAPIの例としてはX(Twitter)のパブリックAPIがあり、X(Twitter)ベースのアプリケーションの開発に利用できます。
プライベートAPI
プライベートAPIは、内部使用のためのAPIです。同じ組織のネットワーク境界内にあるアプリケーションからしかアクセスできません。新しいアプリケーションからアクセスできるように、レガシーアプリケーションをこの方法で開放している企業は多くあります。
パートナーAPI
パートナーAPIはパブリックAPIとプライベートAPIの特徴を併せ持つAPIです。パートナーAPIとして作成したAPIは、同じ組織内のアプリケーションのほか、パートナー組織のアプリケーションからもアクセスできます。例えば、税務署のプライベートAPIを金融機関や社会福祉制度向けに開放するのは、パートナーAPIの例です。
複合API
複合APIは複数のソースのデータを組み合わせるAPIです。場合によってはパブリックとプライベートの組み合わせもあります。例えば、政府のデジタルサービスプラットフォームを運用するために、国営のさまざまな公益事業のAPIを組み合わせた複合APIを利用できます。
APIを利用するメリット
APIを利用する最大のメリットは、膨大な数のサードパーティが提供するデータやサービスにアクセスできることです。したがって、あらゆる規模の企業や組織が、APIを通じて目的の機能を利用できます。その機能に特化したアプリケーションを自前で開発する必要はありません。
そのほか、APIを利用する主なメリットは次のとおりです。
- APIを利用することでビジネスのアジリティが向上します。APIは、サービスのバックエンドの複雑さを抽象化したプロダクトという形で提供されます。企業はAPIを通じて、データ、サービス、オペレーティングシステムへの安全なアクセスが可能となり、これが内部のパートナーやサードパーティのコンシューマにとって、イノベーションの促進につながります。
- APIが適切に開発されていると、開発者は既存のAPIを再利用できるようになり、新しいコードを毎回作成しなくて済むことから、開発生産性が向上します。
- APIは特定の言語に依存しないことから、小規模なモジュール型のアプリケーションを迅速に開発してデプロイできます。また、サードパーティが開発した多種多様なサービスやデータソースもAPIを通じて利用できます。
さらにAPIは、収益化という面でもメリットがあります。広く一般公開するAPIの開発企業は、標準的な利用者向けの無料枠を提供するのに加えて、呼び出し回数が一定の水準を超える利用者や、上位の機能やエンドポイントにアクセスしたい利用者を対象に、有料でのアクセスを提供できます。
APIに共通する性質
APIの種類や開発方法に関係なく、すべてのAPIに共通する性質がいくつかあります。
- すべてのAPIは、明確に定義したインターフェースを備えている必要があります。インターフェースでは、APIで実行できるアクション、クライアントアプリケーションがそのアクションを呼び出す方法、レスポンスとして返るデータについて規定します。
- APIではメッセージのフォーマットを規定します。メッセージの形式(例えばJSON、YAML、XML)や、クライアントとAPIの間でやり取りするデータの構造を、APIプロバイダが定めます。
- クライアントからAPIへのリクエストの送信やレスポンスの受信で使用するネットワークプロトコルについても、APIの仕様で規定します。例えば、HTTP、HTTPS、SFTPなどのプロトコルがあります。
APIセキュリティも重要な要素です。API開発者はセキュリティを万全にする必要があります。具体例としては、ウェブアプリケーションファイアウォール、SSL/TLS暗号化を使用するセキュアなAPI Gateway、入力検証、ユーザー認証などを適宜配置するといった方法があります。
APIの開発
APIの開発は、年月を経るなかでいくつかの変遷を遂げ、いわゆるAPIエコノミーの発展という形で結実しました。APIエコノミーは現代のデジタル社会の中心的存在です。現在のAPI環境を理解するうえで欠かせない重要な用語や概念を、以下にいくつか挙げていきます。
APIの文書化
ドキュメントはAPIの重要な要素の1つです。
各ユーザーが思い思いのメッセージをAPIに送信しても、正常に動くことは期待できません。APIはそれぞれ個別の用途があります。現実の世界でも、例えばピザ屋に行ってトロンボーンを買うことはできません(少なくとも筆者の近所のピザ屋にはありません)。代わりに、ピザ屋には専用のメニューがあり、注文できる商品やそれぞれの説明が載っています。APIドキュメントはこうしたメニューに似ています。
例えば、Uberのようなライドシェアアプリの場合、次のようなAPIドキュメントが考えられます。
- 配車リクエストに関しては、希望の車種を指定できることの説明や、実在する場所を標準の乗車地点と降車地点として指定することを必須とする規定が、APIドキュメントのなかに記載されているはずです。
- 配車リクエストに対してUberから返るレスポンスに関しては、例えばドライバーの名前や車のモデルなど、レスポンスに含まれている情報についての説明がドキュメントに記載されているはずです。
Developer Portal
Developer Portalは、いわばAPIのカタログです。開発者が目的に合ったAPIを発見したり、それぞれのAPIのドキュメントを参照したりするためのウェブサイトとなっています。
APIは、発見、アクセス、利用を容易にしておくのがベストプラクティスです。Developer Portalはこれを実現できます。
API Gateway
API Gatewayは、受信するすべてのAPIリクエストを集約し、管理システムを通じて適切なAPIにルーティングする処理を専門に扱うソフトウェアです。
APIゲートウェイには次のような機能があります。
- 認証
- ルーティング
- レート制限
- 課金
- 監視
- 分析
- ポリシー
- アラート
サービスプロバイダの観点では、こうした機能を統合プラットフォームに集約することで、管理が非常にシンプルになり、パフォーマンスが大幅に向上します。
マイクロサービス
マイクロサービスとは、アプリケーションのさまざまな機能をサービスと呼ばれる小規模なコンポーネントに分割する形のソフトウェアアーキテクチャです。
旧来のモノリシック型のアプリケーション開発では、複数の機能を単一のアプリケーションで実行していました。これとは対照的に、マイクロサービスアーキテクチャは通常、それぞれ異なる機能を持つ個別のソフトウェアコンポーネントで構成されています。各コンポーネントは分散型で疎結合、半自律的です。
例えば1つのアプリケーションが、ユーザーアカウントの管理用のサービス、eコマースとの連携用のサービス、決済用のサービスといった形で構成されています。
APIとマイクロサービスは別のものですが、両者を対にして扱うことはよくあります。マイクロサービス同士は、それぞれが公開するAPI経由で通信することが一般的だからです。
API開発の手法の種類
現在、APIの設計と開発ではさまざまな手法が用いられています。主流となっているのは、RESTful APIです。RESTとは、アーキテクチャに適用する制約や指針をまとめたものであり、厳密にはプロトコルや標準ではありません。クライアントが行ったリクエストを受けて、REST APIは、その呼び出し元やエンドポイントに対して、リソースの状態を表現したものを送信します。
API開発はそのほかに次のような手法があります。
- SOAP(Simple Object Access Protocol)は1990年代末に登場し、一時は主流のAPIモデルとなっていました。現在でも使われていますが、主流の座はRESTに奪われています。
- gRPCはGoogleが開発した手法です。現在では広く使われており、モバイル向けのAPI開発に特に適しています。
- GraphQLはFacebook(現Meta)が開発したクエリ言語で、データベースへのクエリをクライアントサイドのアプリケーションから実行できます。きめ細かなデータアクセスや、モバイル向けのAPI開発では特に有益です。
The API Economy APIエコノミー
APIエコノミーは次第に広がりつつあります。Forbes誌の記事によると、米国の有力企業の約40%は、250以上のAPIを使用しています。また、2020年はAPI開発に20億ドル以上の投資が行われました。近年は、スマートフォンやSNSアカウントを持っている人は、たとえ本人が気付いていなくても、APIで連携したアプリケーションを絶えず利用しています。
エンタープライズ分野では、Amazon Web Services、Alibaba Cloud、Google、Meta、Microsoft Azureは、いずれも自社のサービスをAPI経由で提供し、エコシステムの構築に巨額の投資を行っています。公開されるサービスの数がさらに増え、連携が広がっていくなかで、APIエコノミーの急拡大は今後も続くことでしょう。
まとめ
APIを利用することで、サービスの連携、拡張、開発の可能性はどこまでも広がります。世界規模で活況を呈しているデジタル経済に参加して、無数の種類があるデジタルサービスの世界に踏み出していくためには、APIが不可欠です。
APIの世界をもっと詳しく知りたい、APIエコノミーとの最適な関わり方を探りたいと考えているITリーダーの方々は、まずはAPIマネジメントとAPIOpsに関するKongの関連資料をぜひご覧ください。
API環境をさらに詳しく知りたいと考えているソフトウェア開発者の方々は、まずはRESTをはじめとするAPI設計の手法を理解したうえで、開発に利用している言語のAPIの機能を探ってみてください。Kong
Academyには、複数の言語やプラットフォームに関する学習リソースがありますので、ぜひご覧ください。
Kongについてさらに詳しい情報については、ドキュメントまたはナレッジセンターをご覧ください。