APIはシステム用の機能になります。分かりやすいビジュアル化された画面がある訳ではありませんので、使い方のドキュメントが必須です。 今回はAPIドキュメントを生成するためのライブラリを紹介します。 Swagger | The World's Most Popular Framework for APIs. SwaggerはRESTfulなAPIドキュメント生成に対応したツールとなっています。ドキュメントはYAMLを使って記述します。また、Web上でテスト実行できる仕組みが便利です。 RAML - RESTful API modeling language RAMLとはRESTful API Modeling Languageの略で、YAMLフォーマットを使ってRESTfulなAPIドキュメントを作成します。専用のエディタもあり、プレビューで確認しながらドキュメントが書けます。 apiDoc - Inline Documentation for RESTful web APIs apiDocは各プログラミング言語にコメントを使ってインラインで記述するAPIドキュメントになります。JavaDocやPHPDocなどに近いものです。ドキュメントとソースコードが近くにあるので内容が乖離しづらいのが利点でしょう。 API Blueprint - API Documentation with powerful tooling API BlueprintはMarkdown記法に沿って書くAPIドキュメントです。単純にドキュメントだけでなく、API BlueprintをベースにしたAPIモックサーバ、テストツールなどが存在します。 mashery/iodocs JSONフォーマットで定義するAPIドキュメントになります。ドキュメント上から実際にAPIのコールができるのが特徴になります。 rjha/restdoc PHP製のスクリプトでYAMLフォーマットの定義からドキュメントを生成します。スクリプト言語なのでYAMLを更新するだけでいつでも最新のドキュメントが読めるのは良さそうです。 MireDot | REST API Documentation Generator for Java Javaで作られたシステム用のAPIドキュメントジェネレータです。JavaDocのように簡単に、とあるのでJavaDocを書かれた経験がある方であればすぐに使いこなせるでしょう。 ehearty/Swadl RESTful APIにおけるWSDLとも言えるWADLをベースにドキュメントを生成するソフトウェアです。 Apiary - Home APIの仕様を定義するとドキュメントの生成はもちろん、APIモックの生成、コードサンプル、テスト自動化など複合的にサービスを提供しています。 tombenke/rest-tool nodeで作られたライブラリで、JSONフォーマットで定義した内容を読み取ってドキュメントを生成します。 malachheb/calamum JSON/YAMLで書かれたファイルからドキュメントを生成します。 APIドキュメントを適切に整備していくためにはツールの使いやすさはもちろんのこと、ベースになる記法やそのルールの分かりやすさも重要になってくるでしょう。 ぜひこれらのツールを参考に、他の開発者にとって分かりやすいドキュメントを書いてください。
ここ数年、エンタープライズ分野において注目を集めているのがAPI管理サービスです。Webサービスからだけでなく、スマートフォンアプリや外部システムからもアクセスされるだけにパフォーマンスを可視化したり、自社のデータを加工して素早くWeb API化したいといった要望が出ています。 API管理サービスを使うことで自社のデータを素早く、かつ安全にAPI化できます。今回はそうしたサービスをまとめて紹介します。 3scale API Management Platform Webサーバにプラグインとして導入し、トラフィックのコントロールであったり、トークンごとの課金管理も行えます。管理画面ではAPIアクセスを解析したり、ポリシーの設定、APIドキュメントの展開も可能です。 Mashery API Management 社内のデータをセキュアな状態に保ちつつ、Masheryを使ってAPIを公開したり、トラフィックを管理することができます。クラウド版とオンプレミス版があり(もしくはその両方)、ニーズに応じて組み合わせられます。なお、MasheryはIntelに買収されています。 Apigee APIのトラフィックやステータスを監視してくれたり、APIのデザインも自由に行えます。課金の管理やスケールなども自動で行われますので、データを持っている企業はApigeeと組み合わせることで新しいビジネスの可能性が出てくるでしょう。 APIBond 既に公開されているAPIとアプリケーションの間に立ち、コンテンツの変換であったり、解析、検証、セキュリティの維持を行ってくれるサービスになります。APIの返却名を変えたり、バリデーションを行うことで、より安全に使えるようになります。 Restlet ブラウザ上でAPIの設計を行い、そのまま公開できるサービスになっています。またJava向けにフレームワークを公開しており、AndroidやGoogle App Engineなどで同社の作ったAPIが素早く使えるようになっています。 Microsoft Azure API Management Microsoft Azureを使ってAPIの設計と公開ができます。クォート制限を行ったり、モニタリング、複数のバックエンドを単一のエンドポイントに集約、ドキュメント機能などが提供されています。 IBM API Management Service APIをコーディングレスで設計、公開できます。既存の資産を活かしてWeb API化でき、アクセス制御や監視、解析機能を提供しています。 Akana 既存のAPIに管理機能を追加します。ドキュメント管理、解析、マネタイズなどの機能が追加されます。 Mashape APIのマーケットプレイスを提供しているサービスです。APIの返却するフォーマットを変換したり、アクセスコントロール、モニタリング、アラートそして課金管理も行います。 Amazon API Gateway Amazon Web Servicesの一つとして最近リリースされたのがAmazon API Gatewayです。Amazon API Gatewayをフロントエンドとして、EC2やAWS Lambda、任意のWebアプリケーションにアクセスするAPIを作成できます。Amazon API Gatewayは主にトラフィック管理、認証、アクセス管理、モニタリング、バージョン管理などを提供します。 それぞれサービスによって提供される機能は異なりますが、既にあるWeb APIに解析、セキュリティ機能を追加するものであったり、全くのゼロからWeb APIを設計できるものもあります。既存の資産を活かし、ビジネスをさらに飛躍すべくWeb APIを活用してください。
APIとAPIを組み合わせてマッシュアップサービスを作ろうと思った場合、まず自分が欲しいデータを提供しているAPIを探す必要があります。今回はそんなAPIのディレクトリを提供しているサービスをまとめて紹介します。 PublicAPIs 執筆時点で5,330のAPIから検索ができるAPIインデックスサービスになっています。名前やAPI名などを入れることで、新しいAPIの登録申請もできるようになっています。 PublicAPIs | Directory of public APIs for web and mobile API For That 検索、ソーシャル、ファイナンスなど約20のカテゴリに分かれて登録されています。約300種類くらいのAPIが登録されています。 API For That | An API Directory Zapier IFTTTのビジネス版と言った雰囲気のサービスになっています。2つのサービスを連携させてアクションを起こします。Exploreメニューから多くのAPIにアクセス可能です(Zapierが使えるものに限られます)。 The best apps. Better together. - Zapier ProgrammableWeb APIのディレクトリ、ニュースを配信しているサイトです。13,000種類を超えるAPIが揃っています。日本のAPIは多くありませんが、世界中のAPIを探すならまずここを当たるのが良さそうです。 ProgrammableWeb - APIs, Mashups and the Web as Platform Mashup Awards 日本のAPIを探すのであればMashup AwardsのAPIリストページを見ると一番揃っているのではないかと思います。海外のものもありますが、250種類近くのAPIが一覧化されています。 APIリスト | MA【エム・エー】 by Mashup Awards 天気やホテルなど位置情報に基づくサービスはその国のサービスが提供しているAPIを使う方が精度が高いように見えます。とはいえ、二つのAPIを組み合わせることで思いもしなかった効果が見いだせる可能性だってあるでしょう。 自分が作りたいものを決めてからAPIを探すのも良いですが、逆にリストを眺めてインスピレーションを得るというのはいかがでしょうか。
Web APIは自動化を担う仕組みになりますので常に一定のパフォーマンスが求められます。単純にアクセスしてレスポンスを返せばいいだけでなく、パラメータに対してロジックを実行した上で素早くレスポンスを返す必要があります。 今回はそうしたWeb APIのパフォーマンスをテストするロードテストに使える外部サービスを紹介します。 On Demand Load Testing for Developers & Testers | Load Impact 専用のツールを使って操作を記録し、その操作スクリプトに従ってロードテストを行います。スクリプトを修正し、異なるアクセス方法に変更することもできます。さらに異なるロケーションからのテスト(例えばイタリアなど)が行えたり、モバイル回線を使ったテストにも対応しています。 Application Load Testing Tools for API Endpoints with loader.io 無料で使えるのが大きなポイントのロードテストサービスです。APIも用意されていますので、Web API開発と組み合わせた運用も考えられるでしょう。 Performance and Load Testing from the Cloud - Blitz by Spirent 同時に20万の仮想ユーザおよび8つの異なるロケーションからのアクセスをサポートしています。Google ChromeとFirefox向けに機能拡張が提供されており、それを使うことでテストが容易に作れるようになります。自動化のためにはRuby向けのライブラリやAtlassian製のCIサーバと連携ができるようです。 Test Automation for DevOps パフォーマンステスト、CI連携のテスト、そしてモバイルパフォーマンステストが大きな特徴となっています。Apache JMeterと100%の互換性があります。テストについてはSeleniumを使っています。 API Performance Monitoring · Runscope テストは世界中の各地域から実行でき、Slackをはじめとして各チャットサービスに結果を投稿できるようになっています。監視サービスを含んでおり、問題が発生した時にすぐに気づける仕組みも提供されています。 Cloud Testing Platform | Cloud Load Testing for APIs and Websites, API & Website Monitoring and Website Speed Testing Tool for APIs, Websites and Mobile Applications Web APIのロードテストはもちろん、通常のWebサイトのモニタリングやスピードテストも行えるようになっています。 Apica | Advanced Load Testing Solutions. Flexible Load Testing Service Plans エンタープライズ向けにサービス提供されており、ハイボリューム(200万仮想ユーザ以上)でのロードテストが可能です。APIも提供されていますのでCIとの連携も行えます。 LoadUI - The Home of Load Testing | API Load Testing Tool LoadUIはSaaSではなくダウンロード型のソフトウェアになります。サーバの監視機能もあり、SaaSでは導入がしづらい企業においては良い選択肢になるのではないでしょうか。 ロードテストは負荷テストに比べてより実践的なデータを送受信するテストと言えるでしょう。そのためテスト設計が大変ではありますが、一度組んでしまえば後は自動化した上で開発する度にテストを自動実行できるようになります。 その上でデータが蓄積されて徐々に性能が劣化していくのをいち早くつかんだり、特に重たい処理を知ることで改善につなげることもできるでしょう。ぜひ使ってみてください。