近年、APIの活躍に伴い、APIの開発も非常に注目されるようになります。それでは、API開発とは何でしょうか?API開発によって得られるものは何でしょうか?本文では、API開発の概要、メリット及び開発事例を詳しくみんさんに紹介した上、API開発の実現方法をも一緒に紹介していきたいと思います。
APIとは?
API開発というと、一番先にAPIとは何かを理解する必要があります。APIを理解すると、なぜかAPIを開発する必要があるのかを
API(Application Programming Interface)は、ソフトウェアアプリケーション間での情報や機能のやり取りを可能にするインターフェースです。APIは、異なるソフトウェアコンポーネントやサービスが相互に通信し、データや機能を共有するための契約やルールのセットです。APIは、リクエストとレスポンスの形式でデータを交換します。リクエストは、クライアント(アプリケーションやサービス)が特定の操作やデータへのアクセスを要求するためのメッセージです。レスポンスは、サーバー(提供側のアプリケーションやサービス)が要求に対して返すデータや結果です。
APIの種類
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の分類方法になります。APIはさまざまな要素や特性に基づいてもさらに分類することができます。APIの分類は、開発や統合の目的に応じて行われ、時には同じ種類を複数のカテゴリに入れることも可能です。
そもそもAPI開発とは
上記の内容から、APIとは、ソフトウェア同士が情報を交換するための仕組みだとわかるようになりましたね。API開発は、このような仕組みを開発することになります。APIを開発することで、Webサービスやアプリケーションの機能を他のサービスから利用できるようになるので、アプリケーションの拡張性と再利用性が高まるのです。
API開発のメリット
なぜか多くの会社は自分のAPIを開発していますか?実は、API開発に伴って多くのメリットがあります。次は、API開発の主なメリットを紹介します。
自社サービスの機能を外部サービスと連携
例えば、SNSの投稿内容を自社サービスで再利用することで、TwitterやInstagramなどのSNSプラットフォームでユーザーの投稿を解析して、自社サービスの個人化やマーケティングに活用する事ができます。この機能を実現するために、SNS側が内容を外部連携できるAPIを提供すればOKです。また、店舗情報サービスにGoogle MapsやMapboxのAPIを利用して、店舗の住所から緯度経度や地図画像を取得し、サービスに追加することができます。
自社サービスの利用シーンを拡大
APIを開発して自社の旅行サービスの利用シーンを拡張する事例を紹介します。航空会社やホテルの予約用のAPIを利用することで、自社の旅行サービス以外のサイトから予約を受け付けられるようになります。
サードパーティによるサービスの付加価値向上
画像認識AIサービスを提供している会社は、自社で開発した高精度な画像認識AIをAPI化することで、他社がこのAPIに連携すれば、画像認識AIサービスをすぐ利用できるようになります。
アプリケーションの開発効率が向上
APIを開発すると、開発されたAPIを何回でも再利用する事ができるので、新規アプリやサービスを開発するときの開発効率が向上されるのでしょう。
クロスプラットフォーム対応が容易に
スマホアプリとWebアプリで同じAPIを利用する場合は、2つのプラットフォームで同じ機能を効率よく実装できるようになります。
自社サービスの変更による影響の抑制
Webサービスに新機能を追加する場合、従来はサーバーサイドのアプリケーションコードを直接改修する必要があります。 そのため、1つの変更がサービスの大部分に影響を及ぼす可能性があります。
しかし、新機能をAPIとして開発し、アプリケーションはそのAPIを呼び出すようにレイヤ化することで影響範囲を限定できます。 アプリケーションの改修箇所はAPIを呼び出す部分のみとなり、コードベース全体への影響が少なくなります。
新規サービスの開発期間の短縮
APIの再利用性が非常に重要です。新規サービスを開発する場合は、既存の自社や他社のAPIを有効に活用することで、新規サービスの開発期間を大幅に短縮する事ができます。
ということで、APIを開発すると、APIの再利用性と連携性を最大限に活用することで、サービス全体の付加価値や利用シーンの拡大を実現する事ができます。新しいサービスの開発効率を向上するために、API戦略も欠かせない要素になるのでしょう。
APIの開発事例
現在、いろいろな会社や組織は、自社のサービスをAPI化にしています。API開発の代表的な事例を紹介します。
Twitter API
Twitterの投稿を取得したり、新しい投稿を作成したりできるAPIです。多くのサードパーティ製Twitterクライアントが開発されてきたのは、このAPIの利用がポイントになります。
Google Maps API
Google Maps APIは、Google Mapsの機能を外部のサービスやアプリケーションで利用できるようにしたAPIです。Google Maps APIを使うと、簡単に自社サービスに地図機能を実装できます。例えば、店舗マップの表示、ルート検索、近くのレストラン検索などが実現できます。
Stripe API
Stripe APIは、Stripeが提供するオンライ決済プラットフォームの機能をAPIで利用できるようにしたものです。Stripe APIを使うと、サーバーサイドの複雑な処理を書かずに、安全な決済機能をウェブサイトやアプリに簡単に実装できます。
Slack API
Slack APIは、Slackのさまざまな機能を外部のアプリケーションから利用できるAPIです。Slack APIを使うと、Slackの機能を自動化したり、Slackと外部サービスを連携させたりすることができます。例えば、問題追跡システムの通知をSlackに流したり、Slack上で外部サービスを操作するボットを作ることができます。
GitHub API
GitHub APIは、GitHubのさまざまなデータや機能を外部から利用できるAPIです。GitHub APIを使うと、GitHubのデータを解析したり、開発ツールと連携したりできます。 例えば、自動テスト結果をPull Requestにコメントしたり、リポジトリ情報を可視化するダッシュボードを作ることができます。
このように、様々なサービスがAPIを公開しており、これらを活用することで新しいサービスを作り出すことができます。API経済の発展により、サービス間の連携が活発化しています。
API開発の進め方:API開発の手順を解説
それでは、API開発を前に進めたい場合は、どのような開発手順がありますか?次は、APIを順調に開発できるために、基本的な進め方を皆さんに紹介します。
APIの設計
API開発の第一歩は、APIを設計することになります。つまり、どのようなAPIを作って、どのような機能を実現したいのかを明確にすることです。これを明らかにすると、API設計ツールを使って、APIの設計を始める事ができます。Apidogという完璧なAPI管理ツールを使用して、直感的なUIでコードなしでもAPIを簡単に設計したり、開発したりすることができます。
ステップ⒈ APIリソースの指定
Apidogで新しいAPIの作成画面の一番上に、APIリソースを指定するボックスがあります。ここでAPIのエンドポイントとパスを入力することで、APIのリソースを指定することができます。
ステップ⒉HTTPメソッドの選択
APIのリソースを指定した後、HTTPメソッドを設定する必要があります。どちらのWeb APIもHTTPプロトコルを使用していますので、目的別で、HTTPメソッドを選択する必要があります。HTTPメソッドといえば、常に下記のものがあります。
- GET(コンテンツを取得)
- POST(コンテンツを新規追加)
- PUT(既存コンテンツを変更)
- DELETE(コンテンツを削除)
ステップ⒊APIの詳細説明を追加
ここでAPIの詳細説明を追加します。例えば、このAPIの役割、使用方法及び注意事項など、APIの取扱説明書のようなものを追加すると、利用者がより正しくこのAPIを使用できます。また、Requestのパラメータ、Responseのパラメータを説明すると、API利用者がどのようにリクエストを送信するかをよりよく理解できます。ApidogでAPIの説明文を追加する時に、Markdownフォーマットがサポートされます。
ステップ⒋レスポンスフォーマットを特定
そして、リクエストが成功に送信した時(HTTPステータスが200になるのは一般)のレスポンス例を追加します。このレスポンス例を追加すると、APIの利用者がリクエストの送信によって取得されたレスポンスをレスポンスの定義に比較して、自動的に正確なレスポンスを取得できるかを検証してくれます。
ステップ⒌スターテスコードの指定
一般的には、APIのリクエストを成功に送信した場合、HTTPステータスが200になるのは一般的です。それ以外のHTTPステータスはエラーになると認識されます。ただし、各Web APIの規範では、REST APIの仕様でHTTPステータスコードの設定を要件にしています。他のAPIの仕様では、HTTPステータスコードの定義を必要な要件としていません。
ステップ⒍API仕様書を共有
上記のステップを参照して、APIの設計が完了すると、バックエンド開発者がこのAPIをより深く理解するために、APIの設計に基づいて、分かりやすいAPI仕様書を作成して、彼らに共有する事ができます。バックエンド開発者は、API仕様書に記載している規格に従って、効率的にAPIを開発できるようになります。ApidogはAPI仕様書を自動的に生成する事ができるので、それを簡単に他人に共有できます。
サーバー側でAPIの実装
上記のAPI仕様書をバックエンド開発者に共有すると、バックエンド開発者は、このドキュメントから外れないように開発プロセスを進める事ができます。
API仕様書がある場合、サーバー側でのAPI実装は以下のような流れになります。
- 設計書をよく読み込み、要件を確認する
- 使用する言語やフレームワークを選定する(例: Node.js、Ruby on Railsなど)
- エンドポイントのルーティングを定義する
- リクエストデータの検証とレスポンスデータの作成ロジックを実装する
- データベースとの接続・クエリの実装(必要に応じて)
- 認証と認可の実装(APIキー、OAuth等)
- ドキュメントから外れないようテストしながら開発する
- 設計書にない要求仕様があれば確認し、修正や追加開発を行う
APIのテスト
バックエンド開発者の作業が終わる場合は、API仕様に従って、APIリクエストをサーバー側に送信して、正確的なレスポンスを取得できるかどうかを確認する事ができます。また、必要に応じて、APIテスト自動化を行なって、負荷テスト等を実施する必要もある可能性があります。
次のステップを参照して操作すると、APIの単体テストを簡単に行う事ができます。
ステップ⒈APIの実行ページで、HTTPメソッド、APIエンドポイントとパラメータを入力して、「送信」ボタンをクリックするだけで、REST APIのエンドポイントにリクエストを送信できます。
ステップ⒉ここでレスポンスを取得します。ご覧のように、レスポンスの右側に、取得したレスポンスが正確であるかどうかを自動的に検証結果を表示します。
ステップ⒊APICaseを保存
ボタンをクリックしてリクエストを保存します。 今回送信したリクエスト及びそのレスポンスなどの情報をAPICaseとして保存することもできます。次回、このケースを参照する場合、直接に利用できるようになるので、非常に便利です。
また、APIテストの自動化を行いたい場合は、Apidogの自動テスト機能を利用して、APIの負荷テストなども行えます。
ステップ⒈左側のメニューで「自動テスト」をクリックして、「テストのシナリオを作成」をクリックします。
ステップ⒉テストシナリオを作成すると、テストのステップを追加します。(ここで保存したAPIから参照することもできますし、手動でテストのステップを追加することもできます。)
ステップ⒊テストのステップをすべて追加すると、テストステップの順番を変えたり、条件分岐などを設定したりすることができます。また、APIのパフォーマンステストや負荷テストを行いたい場合、往復回数やスレッド数などの条件を設定することもできます。すべての設定を整えると、「実行」ボタンをクリックします。
ステップ⒋ここでこのシナリオテストのプロセスが開始されます。プロセスが終わると、テストのレポートが表示されます。ここで各リクエストも表示されるので、それを各リクエストの実行状況を詳しくチェックすることもできますので、リクエストが失敗した場合は、原因の特定も非常にシンプルになります。
APIの公開と運用
APIの開発が終わって、テストをも全部通した場合、APIを公開する事ができます。APIを公開したい場合は、API仕様をドキュメントにとして公開するのは共通の方法になると思います。APIを公開する場合は、自社のホームページにAPI仕様書をアップロードすることもできますし、認知度拡大のため、公開のAPIマーケットで公開することもできます。
ここでAPI HUBという公開APIマケットを皆さんにおすすめします。API Hubは利用可能なサードパーティのAPIをまとめるWebサイトです。このサイトでは、なんと1800個強のAPIが掲載されています。
Apidogを使用して、APIを設計してAPI仕様書を生成すると、Apidogで「共有」→「公開設定」→「公開する」の順にクリックすると、簡単にAPIをAPI HUBで公開できるので、非常に便利です。
まとめ
API開発は、アプリケーション間の連携や機能拡張において重要な役割を果たします。API開発では、要件定義から設計、実装、テスト、運用管理まで一連のプロセスが必要です。技術的な実装だけでなく、十分なドキュメント作成やセキュリティ対策も欠かせません。
そこで、本文の内容を通じて、API開発の概要とメリットを理解した上、サービスの特性に応じたAPI戦略を立てて、アジャイルなサービス開発を実現していくことが重要です。
また、API開発に不可欠な手順と言われるAPI設計、APIテスト及びAPIの公開も、使いやすいAPIクライアントのApidogによって簡単に実現されるので、API開発の際に非常にお勧めするツールです。