APIの汎用化により、私たちの日常生活に欠かせない存在となっています。しかし、APIを聞いたことがあるユーザーは多くなりますが、その概念や仕組みを正しく理解している人は必ずしも多くはないでしょう。そこで、本文では、APIとは何かを解説した上、APIの実例、種類と仕組み、メリットとデメリット、利用方法などを詳しく紹介します。
APIとは
API(Application Programming Interface)は、ソフトウェアアプリケーション間での情報や機能のやり取りを可能にするインターフェースです。APIは、異なるソフトウェアコンポーネントやサービスが相互に通信し、データや機能を共有するための契約やルールのセットです。APIは、リクエストの送信とレスポンスの取得という形式でデータを交換します。
関連記事:
APIの目的
APIを利用することで、既存の機能を再利用できるため、ソフトウェア開発の効率化や統合が容易になります。APIの主な目的は以下のとおりです:
- 既存の機能の再利用: APIを公開することで、その機能を別のアプリケーションから呼び出して利用できるようになる。
- データの共有: APIによりアプリケーションのデータを他システムと共有できる。
- 統合の容易化: APIを利用することで異なるアプリケーション同士の統合がしやすくなる。
- クロスプラットフォーム: APIを利用すればプラットフォーム依存せずに機能を実装できる。
- セキュリティの管理: APIによって特定の機能やデータへのアクセスを制御できる。
- 外部サービスの活用: 外部サービスのAPIを利用して機能を拡張できる。
このように、APIは機能の再利用性や統合のための共通インターフェースを提供することで、ソフトウェア開発の効率化と柔軟性の向上に役立ちます。
APIの例
現在、多くの企業も様々な原因で、自分のサービスをAPIとして提供しています。例えば:
- 自社のサービスの客層を拡大:APIを公開すれば、他社のアプリからその機能を簡単に利用できるようになるため。
- 外部開発者の力を借りて自社サービスの品質を向上:外部の開発者が自由にAPIを使えることで、思いもよらないようなアプリが生まれ、サービスの可能性が広がる。
- モバイルアプリへの対応が容易に:スマホアプリからAPIを呼び出せば、アプリから同じ機能を利用できる。
- APIの収益化:APIそのものを製品として収益化したり、エコシステムを作ることができる。例えは、ChatGPT APIやTwitter APIなどを利用するには、使用料金が必要とされている。
このように、APIでサービス機能を公開にすることで、企業側でも様々なメリットが得られるため、多くの企業がAPI戦略を推進しています。自社プラットフォームの拡大や外部との連携を考える上で、APIは重要な役割を果たしています。そこで、次はAPIに関する主な例を皆さんに紹介します。
Twitter API
公開APIの中で、Twitter APIは、最も人気のあるものです。Twitterの各種機能やデータを外部のアプリケーションから利用できるようにしたAPIのことです。例えば、Twitter APIを使用する場合、Twitterを使用しなくても外部のアプリから次のような機能を利用できます:
- ツイートの投稿、検索ができる
- タイムラインの取得、フォロー/フォロワーの管理ができる
- ユーザー情報の取得、プロフィールの編集ができる
- ツイートのファボ、リツイートができる
以上のように、Twitter APIを使うことで、Twitterのデータを解析したり、Twitterと連携した外部アプリを作成したりできます。Twitter APIを使えばTwitterの機能を簡単に呼び出し、外部アプリからTwitterを操作したりデータを取得したりすることができます。Twitterと外部サービスを連携する上で欠かせないAPIと言えます。代表的な使用例は以下のようなものがあります。
- Twitterクライアントアプリの作成
- ツイートの自動投稿ツールの作成
- ツイートの検索やデータ解析ツールの作成
- Twitterアカウントの自動フォロー/アンフォローツール
Notion API
Twitter APIの他に、Notion APIも多くの開発者に利用されています。Notion APIは、Notionのデータや機能を外部のアプリケーションから利用できるAPIです。主な機能は以下のようなものがあります。
- ページやデータベースの取得、作成、更新、削除
- ユーザーの管理
- 検索API
- ブロックのデータ型(テキスト、画像、TODOなど)の作成と編集
- ページプロパティの更新
例えば、Notionのデータベースをウェブアプリのコンテンツとして利用したり、NotionのTODOリストをモバイルアプリと同期させたりすることはNotion APIによって実現されます。また、Notion APIを使うことで、次のようなこともできるようになります。
- Notionのデータを他のアプリで活用する
- Notionをバックエンドとしたアプリの構築
- Notionに外部サービスを連携させる
- Notionのデータを自動化やスクリプトで操作する
Slack API
また、Slackは企業のコミュニケーションプラットフォームとして広く使われており、Slack APIはSlackの機能を自由に組み合わせて利用できるため、業務効率化に役立っています。Slack APIは、Slackのさまざまな機能を外部のアプリケーションから利用できるAPIで、主な機能は以下のようなものがあります。
- メッセージの投稿、更新、削除
- チャンネルやグループの管理
- ユーザー情報の取得
- ファイルのアップロードとダウンロード
- ボットの作成と操作
- OAuth認証によるSlackアカウントへの安全なアクセス
Slack APIを使うことで、Slackに投稿されたメッセージを外部のデータベースに保存したり、顧客情報システムの更新をSlackに通知したり、Slackのコマンドでサービスを操作したりすることができます。
主な利用シーンは以下のようになります。
- Slackボットの作成
- Slackと外部サービスの連携
- Slackのデータ取得と解析
- Slackの各種機能を活用した業務自動化
APIのメリットとデメリット
上記の内容を踏まえて、APIにはたくさんのメリットがあると言えるのでしょう。この部分では、APIのメリットとデメリットを別々で紹介しようと思います。
APIのメリット
APIのメリットは、機能の再利用性が向上し、アプリケーション間の統合がしやすくなることです。APIを公開することで、他のアプリケーションからその機能を呼び出して利用できるようになります。これによって同じ機能の実装を必要以上に重複させずに済み、開発効率が上がります。また、API経由でアプリケーション同士を連携させるのが容易になるので、異なるサービスを組み合わせた新しいアプリケーションを作り出すことができます。
また、サービス提供側にとっても、API公開は自社プラットフォームの拡大につながります。外部の開発者がAPIを使って新しいサービスを生み出してくれる可能性が広がるため、企業にとってはイノベーションの促進にもなり得ます。
APIのデメリット
APIのデメリットとして、適切な設計と管理が行われないと、セキュリティ面や可用性面で問題が生じる可能性があります。APIを公開すると、サービスの機能が外部にオープンになるため、十分な認証やアクセス制御を行わないと、不正なアクセスを許してしまう危険性があります。また、予期せぬ過剰なAPIリクエストが集中すると、サービスのパフォーマンスに影響を及ぼしたり、最悪の場合はサービス停止を招く可能性もあります。
また、APIの仕様変更においても、互換性を維持するための配慮が必要となります。変更内容によっては、依存するアプリケーションへの影響も考慮する必要が出てきます。
このため、実際の業務に照らし合わせて、個別のケースごとにAPI開発の目的、期待する効果、想定するリスクを明確化した上で、API開発のメリットもデメリットも十分に意識して、API戦略をどのように推進するかをよく考える必要があります。
APIって何の種類がある?
APIの種類といえば、Web APIとRest APIが特に人気があります。この部分では、まずはWeb APIとRest APIを皆さんに紹介した上、APIの主な分類方法を皆さんに紹介します。
特に人気なWeb APIとREST API
Web APIという名前から見ると、それはAPIの一種になりますね。実際には、現在の業界では、Web APIに関して、厳格な定義がありません。Web APIは、HTTPというプロトコルを利用するAPIを指すこともありますし、Webサーバー、Webブラウザで利用されているAPIのみを指すこともあります。その一方でREST APIもWeb APIの一種だと考えられ、Web APIといえば、最も多くの場合はREST APIを指しています。
REST(Representational State Transfer)APIとは、Webアプリケーションの機能を外部のクライアントアプリケーションから利用するためのAPIの一種です。REST APIは、HTTPプロトコルを使用して通信を行い、一般的にJSONまたはXML形式でデータをやりとりします。
REST APIでは、リソース(データ)を一意の識別子(URI)で指定し、HTTPメソッド(GET、POST、PUT、DELETEなど)を使用してリソースを操作します。クライアントはHTTPリクエストを送信し、サーバーからのHTTPレスポンスを受け取ります。これにより、Webアプリケーションの機能を外部から利用することができます。
もちろん、Web APIやREST API以外にも、たくさんのAPI種類がありますが、次は、一般的なAPIの分類方法別で様々なAPIを皆さんに紹介します。
機能別でAPIを分類
一般大衆の立場から見ると、一番わかりやすいAPIの分類法は、その役割(機能)によって、分類する方法になると思います。例えば、
- CRUD API: Create, Read, Update, Deleteの基本的な操作を提供するAPIです。データの作成、読み取り、更新、削除を行うための操作を提供します。
- 検索API: 特定の条件に基づいてデータを検索するためのAPIです。クエリパラメータやフィルターを使用して、要求に応じたデータを返します。
- メール送信API: メール送信機能を提供するAPIです。アプリケーションからメールを送信するための操作やパラメータを提供します。
プロトコル別の分類
- RESTful API: REST(Representational State Transfer)アーキテクチャの原則に従って設計されたAPIです。リソースの表現、URI(Uniform Resource Identifier)を介したアクセス、HTTPメソッド(GET、POST、PUT、DELETEなど)の使用などが特徴です。
- SOAP API: SOAP(Simple Object Access Protocol)を使用して通信するAPIです。XMLベースのメッセージフォーマットやWSDL(Web Services Description Language)を使用して、リクエストとレスポンスの定義を行います。
公開範囲に基づく分類
- 公開(パブリック)API: 一般の開発者や外部のサービスがアクセスできるAPIです。パブリックAPIは、外部開発者によるサードパーティのアプリケーションやサービスとの統合を可能にします。
- プライベートAPI: 特定の組織やチーム内でのみ使用されるAPIです。プライベートAPIは、内部のアプリケーションやサービスの連携や相互作用を可能にします。
インターフェースの形式に基づく分類
- RESTful API: HTTPプロトコルを使用してリソースにアクセスするRESTfulなAPIです。
- GraphQL API: クライアントが要求したデータの形式を柔軟に定義できるGraphQL言語を使用するAPIです。
- gRPC API: Googleが開発したgRPC(Google Remote Procedure Call)プロトコルを使用して通信するAPIです。
上記のように、APIは様々な要素や特性に基づいて分類されることが可能ですが、複数利用シーンがある場合は、公開のRestful APIのように複数の分類を併用したりすることも可能です。
APIの仕組み解説
それでは、APIの仕組みはどのようになっていますか?次は、一般的に見られるAPIの仕組みを皆さんに紹介します。下図に示しているように、APIは主に以下のような流れで動作します。
- クライアントアプリケーションがAPIに対してリクエストを送信する。
- リクエストはインターネットを通じてAPIを提供するサーバーに送信される。
- サーバー上でリクエストが処理され、必要な機能が実行される。
- 実行結果やデータがレスポンスとしてクライアントに返送される。
- クライアントアプリケーションがレスポンスを受信し、必要に応じて処理を行う。
そこで、APIを設計する際には、リクエストの内容やレスポンスの形式を明確に定義する必要があります。これをAPI仕様書と呼ばれています。次は、APIの設計とAPI仕様書の作成について、皆さんに詳しく解説します。
API設計とAPI仕様書の作成
API設計は、APIの機能、リクエストとレスポンスのデータ構造、エンドポイント、認証方法などの技術的な仕様を設計するプロセスになり、API設計の結果と成果を文書化するのは、API仕様書になります。APIを設計する時に、何らかの原則に従って作業を進む必要があります。例えば、一般的なWeb APIを設計するときに、主に次ようなポイントがあります。
- APIのリソースの指定:APIのエンドポイントとなるURLとパスです。
- HTTPメソッドの選択:各リソースに対する具体的な操作(添削、変更、データ取得など)によってHTTPメソッドを指定します。
- APIの詳細説明の追加:このAPIの役割、使用方法及び注意事項などの情報を含む詳細説明を追加して、利用者がより正しくこのAPIを使用できます。
- レスポンスフォーマットを特定:リクエストに成功したレスポンスの例を指定します。
- エラーコードの指定:エラーが発生した場合、適切なエラーメッセージを設計します。エラーの種類と原因を明確にし、適切なエラーコードやメッセージを返す必要があります。
- バージョンコントロール:バージョンコントロール機能を導入することで、APIに何か変更点がある場合、すぐに特定できます。
- ドキュメンテーション:設計したAPIの仕様と使用方法などを明確にドキュメンテーションすることが必要です。
Apidogで簡単にAPIを設計して仕様書を生成
Apidogは、APIの設計、開発、デバッグ、テストなどを一体化にした総合プラットフォームです。ApidogのUIが非常に直感的で使いやすいので、コーディングの知識がなくても、簡単にAPIを設計すると共に、API仕様書を作成することができます。
1. APIのメソッドとエンドポイントの設定
API仕様書を書き始める前にAPIの設計が必要となります。例えば、APIが提供できる機能、使用シーン、使い方を頭に明確にし、このAPIが技術上でも、業務上でも、合理的で実現可能であることを確認します。
APIのエンドポイント(パス)は具体的なウェブページではなく、ユーザーがサービスを見つけられる場所です。例えば、ユーザーがここで商品名を入力して、素早く商品を探せます。
パスを設定した上、APIのメソッドを設定します。通用なAPIメソッドは:
GET(コンテンツを取得)
POST(コンテンツを新規追加)
PUT(既存コンテンツを変更)
DELETE(コンテンツを削除)です。
2. APIの詳細を説明
APIのパスを設定した上、APIの利用者にAPIに関するより多くの情報を伝える必要があります。これらの情報には、APIの名前、機能説明、Requestのパラメータ、ResponseのパラメータやResponse例などが含まれています。
その中で、RequestとResponseのパラメータを設定する場合、各パラメータのデータタイプ、必須項目ではないか、パラメータの説明などの情報を記入することもできます。
こで記入する情報が多けば多いほど、API利用者のユーザーエクスペリエンスが高くなります。
3. APIケースを設定
APIケースの設定は、API仕様書の作成に対して非常に重要なステップです。APIケースは、開発者が当該APIの使い方を理解し、よりよくデバッグするのを助けることができます。ケースの作成中にAPIの各パラメータの意味と役割を明確に説明し、呼び出しの成功例と失敗例を明確に定義する必要があります。
4. APIのエラーコードを設定
APIのエラーコードは、APIの特徴と機能に基づいて設定される必要があります。エラーコードは問題の原因を明確に示し、開発者がより早く診断し、問題を解決できる解決策とアドバイスを提供するべきです。API仕様書でよく設計されたエラーコードがあることは、APIの使いやすさと信頼性を高め、開発者は故障排除に要する時間を減らすことができます。以下は参考になるAPIエラーコードタイプです。
クライアントエラー:クライアントエラーは通常、クライアントが送信したリクエストに問題があることを意味します。例えば、パラメータの欠如、フォーマットエラー、権限不足などです。一般的なクライアントエラーコードには、400 Bad Request、401 Unauthorized、403 Forbidden、404 Not Foundなどがあります。
サーバーエラー:サーバーエラーは通常、APIサーバーに問題があることを意味します。例えば、サーバー内部エラー、データベースの接続エラー、タイムアウトなどです。一般的なサーバーエラーコードには、500 Internal Server Error、502 Bad Gateway、503 Service Unavailableなどが含まれます。
業務エラー:業務エラーは通常、APIがクライアントリクエストを完了できないことを意味します。要求データが業務規則に合わなかったり、APIが要求を処理できないからです。一般的な業務エラーコードには422 Unprocessable Entity、429 Too Many Requests、451 Unavailable For Legal Reasonsなどがあります。
認証とセキュリティエラー:認証とセキュリティエラーは通常、APIがクライアントの身分を検証する必要があるが、認証できないか、認証が失敗することを意味する。一般的な認証とセキュリティエラーコードには、401 Unauthorized、403 Forbidden、419 Authentication Timeout、498 Invalid Tokenなどがあります。
制限と割当量エラー:制限と割当量エラーは通常、APIが特定の制限や割当量を超えたことを意味します。例えば、要求速度が制限を超えたり、割当量を超えたりします。一般的な制限と割当エラーコードには、429 Too Many Requests、503 Service Unavailable、509 Bandwidth Limit Exceededなどがあります。
5. バージョンコントロール機能の適用
API機能の開発に伴って、APIの情報を修正したり、変更したりする可能性があります。例えば、パラメータを追加したり、削除したり、変更したり、返すレスポンスのフォーマットを変更したりすることがよくあります。API仕様書にバージョンのコントロール機能がない場合、これら新しい変更は開発者に迷惑をかけ、彼らの開発効率に悪影響を及ぼす可能性があります。
そこでバージョンのコントロール機能を導入する必要があります。そうすると、異なるバージョンのAPIの変更点を表示することができるので、開発者は需要に応じて異なるバージョンを選択できますし、各バージョンの違いと変更をいち早く把握することもできます。
6. API仕様書の生成と共有
上記の操作ガイドを参照して、APIを定義すると、Apidogの共有機能を使って、非常にわかりやすいAPI仕様書を生成したり、他人に共有したりする事ができます。
左側メニューから「共有」をクリックして、「新しい共有」を選択すると、次のような共有設定が表示されます。ここで、共有するAPIを選択して、必要に応じてセキュリティ設定や言語の設定を終えて、「保存」をクリックします。
そして、新しい共有項目が表示されます。「開く」をクリックすると、API仕様書がブラウザに表示されます。
Apidogによって生成されたAPI仕様書は非常にわかりやすいのです。
APIの開発概要
APIの設計を終えて、API仕様書を生成すると、そのドキュメントに合わせてAPIの開発を階段的にテストしながら、開発を進める必要があります。API開発では、仕様通りの実装と、入出力・エラーを含む網羅的なテストがカギとなります。
APIの開発では、API仕様書に従ってサーバー側でAPIを実装したり、APIをテストしたりして、APIの正しい動作を確保する必要があります。そこで、次は、APIを呼び出してレスポンスを検証したり、自動テストでAPIの負荷テストを行なったりする方法を紹介します。
APIの呼び出す|テスト自動化
APIの呼び出しは、クライアントからデータをサーバーに送信することを指しています。APIを正しく呼び出すと、サーバーから意図した通りの正確なレスポンスが返されます。APIを正確に呼び出すために、API仕様書で掲載されている情報を確認する必要があります。
APIを呼び出すには、cURLなどのコマンドラインツールから、GUIベースのツールまで、利用できるツールはたくさんあります。次は、一番使いやすいAPI管理ツールを使って、APIを呼び出す方法を紹介します。
ステップ⒈Apidogを開き、「新しいRequest」を選択して、リクエストを新規に作成します。
ステップ⒉Notionのページ取得APIを例にとって、HTTPメソッドをGETにして、エンドポイントのhttps://api.notion.com/v1/pages/{page_id}
を入力します。
ステップ⒊このAPIの仕様書に記載されているように、HEADERS(ヘッダー)に「Notion-Version」を記入して、送信ボタンをクリックして、APIを呼び出して、レスポンスを取得できるようになります。
APIテストの自動化
複数のAPIを一括にテストしたり、業務プロセスに利用されているAPIを一括にテストしたりする必要がある場合、APIテストの自動化を行う必要があります。テストの自動化は、APIの手動テストより短時間で網羅テストを行えますし、必要に応じて、負荷テストを行うこともできます。上記のApidogは、APIの自動テストにも対応しています。
ステップ⒈左側のメニューで「自動テスト」をクリックして、「テストのシナリオを作成」をクリックします。
ステップ⒉テストシナリオを作成すると、テストのステップを追加します。(ここで保存したAPIから参照することもできますし、手動でテストのステップを追加することもできます。)
ステップ⒊テストのステップをすべて追加すると、テストステップの順番を変えたり、条件分岐などを設定したりすることができます。また、APIのパフォーマンステストや負荷テストを行いたい場合、往復回数やスレッド数などの条件を設定することもできます。すべての設定を整えると、「実行」ボタンをクリックします。
ステップ⒋ここでこのシナリオテストのプロセスが開始されます。プロセスが終わると、テストのレポートが表示されます。ここで各リクエストも表示されるので、それを各リクエストの実行状況を詳しくチェックすることもできますので、リクエストが失敗した場合は、原因の特定も非常にシンプルになります。
API連携の実装
現在、自社でAPI開発するより、既存の公開APIに連携して、サービスの機能拡張を図ることのほうが一般的です。API連携を行うことで、開発コストを大幅に削減し、他のサービスを簡単に導入することができます。
Apidogで利用可能なAPI設計、API仕様書生成、APIの呼び出しと自動テストなどの機能を使って、APIをきちんと管理することができるので、API連携中に大きな役割を果たすことが可能です。
まとめ
現在のアプリ開発には、APIはすでに不可欠なものになっています。現在のアプリでは、基本的にはいくつかのAPIを利用しています。そこで、APIの基本情報を理解する必要が極めて必要なことになると思います。本文では、APIの概念などの基本情報から、API設計、開発や連携の実装方法まで紹介しましたので、APIへの理解を深めたいと思っている方は、ぜひこの記事を見逃しないでください。
また、Apidogという包括的なAPI管理ツールは、APIの設計、開発および連携中に、非常に大きな役割を果たすことができるので、API関連の作業を行なっている場合、このツールを導入して作業の効率を大幅に向上することができると思います。