HTMLスクレイピングやファイルでのバッチ連携を不要に、「API管理ツール」でWebへRESTful APIを公開。ドキュメントもSwagger記述も自動生成[PR]
WebサイトやWebサービス上の情報を取得し加工したい、あるいは、別の情報と組み合わせるために情報を取得して再利用したい、というとき、そのWebサイトにデータを取得できるAPIが用意されていれば便利ですが、現在のところ、現実にそういうAPIが整備されているケースは滅多にありません。
そのため、WebサイトからHTMLを取得して解析することでデータを取得する、いわゆる「HTMLスクレイピング」を用いるケースも増えてきています。しかしIDとパスワードを第三者に渡してのスクレイピングは、Webサイトやサービス提供者として、セキュリティやサーバへの負担からも避けたいところでしょう。
社内の業務アプリケーションでも同様です。
自社のカスタムシステムやパッケージソフトウェアのデータベースに入っているデータを別のアプリケーションで利用したいときに、その場しのぎでデータをファイルに落として受け渡すバッチを作るよりは、できればユーザーの認証や不要なシステムからのアクセスは遮断できるアクセス制限もきちんと行えるようなAPI経由でデータをやりとりする方が望ましいでしょう。
もちろん、そんなAPIを簡単に作ることができれば、なのですが。
APIを公開するうえでの多くの課題
これらパブリックAPIやプライベートAPIの開発には、共通する多くの課題があります。
例えばAPIの設計をどうするか、どんなデータ形式で提供するのか、認証をどうするか、大量のアクセスがあった場合の制限はどうするかなどです。下記をはじめとする多く課題が思いつきます。
- APIの設計
- APIを利用できるHTTPのメソッドやスクリプトの定義
- データ形式
- ユーザー認証
- IP制御
- リミット制御、スロット制御
- 課金
- 通知やログ
- 利用者のためのドキュメント作成
- APIを管理するためのコンソール
これらをすべて最初からプログラミングしドキュメントを作成するのは、いかにも手間がかかります。
例えば、APIを設計する場面。アーキテクチャとしてRESTful APIを選択したとして、記述標準のSwaggerへの対応はどうするか、データ形式はOData(XML)にするかJSONにするかなどを検討しなくてはなりません。
そしてこれらは誰が何のためにそのAPIを使うかに依存するため、どれか1つに決めるのではなくどちらも実装して利用者に選択可能にする、というケースもあります。さらにこれらの規格や標準仕様などは日々進化しアップデートされているため、つねに使いやすいAPIにするためにはそうした更新に追従していくメンテナンス作業も求められるでしょう。
現時点でパブリックAPIやプライベートAPIがなかなか普及しないのは、こうしたハードルがあることが大きな要因といえます。
そこで、一般にこれらの課題を解決するために存在するのが 「API管理ツール」と呼ばれる分野の製品です。
API管理ツールのアーキテクチャとは
API管理ツールとはどのようなものか、ここではCDataの製品「CData API Server」を紹介しましょう。
一般に同製品をはじめとするAPI管理ツールは、APIを提供する実体となるゲートウェイサーバ、下図の「API Server」と、そのAPIサーバの動作を管理し、データソースとの接続やAPIの仕様定義などをするための管理ツールなどから構成されます。
CData API Serverはデータソースとの豊富な接続機能を持っていて、このデータソースをAPI経由で公開します。
データソースとしてOracleやSQL Server、MySQL、PostgreSQL、IBM DB2、さらにAccdessやSQLiteなどオンプレミスでよく使われているリレーショナルデータベースに加えて、Amazon Redshift、SQL Azure、CloudSQLなどのクラウドデータベース、さらにCassandra、MongoDB、Couchbase、HBase、ElasticsearchなどのNoSQLも対応。フラットファイルにも対応。
エントリーポイントおよびデータ形式として、RESTful APIはもちろん、OData、JSON、SOAP、CSV、TSVなどに対応し、APIとドキュメントの自動生成機能などがあります。
APIへのアクセス状況のモニタリング、ログ、レート制限などの管理も可能で、SSL暗号化、ユーザー管理などのセキュリティも備えています。
プログラミング不要、設定するだけでAPIを自動生成
実際にCData API ServerがAPIを自動生成する手順を見てみましょう。
CData API Serverを起動し、管理者としてログインします。
ここではローカルで起動しているMySQLに接続することにします。
するとMySQLで設定されているテーブルの一覧が表示されるので、対象となるテーブルを選択、さらにテーブル内のカラムも選択します。
つづいてユーザー認証を設定します。アクセス可能なユーザーと、そのユーザーがどのメソッドを利用可能か、1時間あたりのリクエストの上限などが設定できます。
これで設定は終了です。APIが生成され、日本語のドキュメントも自動生成されます。
APIのリクエスト方法、パラメータ、取得データ型なども記述されています。
データ取得用のURL「http://localhost:8387/api.rsc/city/」をブラウザで開いてみると、まずAuthトークンの認証が要求され、その後にJSON形式でMySQLのデータが返ってきます。
生成されたAPIを利用してSwagger EditorからSwagger用の記述も得ることができます。
CData API Serverはこのようにコードを記述することなく、簡単な手順で自動的にAPIとドキュメントを生成できることが大きな特徴になっています。
Windows、Linux、MacOSなどに対応。無償版も配布
CData API Sererは、Windows、Unix/Linux、MacOSなどのOSに対応。オンプレミスでのホスティングに加え、Microsoft Azure、AWS、Google Cloudなどクラウドでのホスティングも可能です。
しかもオープンソースのデータベースに対応したシングルコアのサーバ用「Personal」版は無償で利用可能。商用リレーショナルデータベースにも対応し、4コアサーバに対応した「Standard」版は年額20万円、NoSQLにも対応し8コアサーバに対応した「Professional」版は年額80万円となっています。
CDataでは、CData API Serverのローンチイベント「CData Day 2017」を7月20日(木)に開催します。API 構築や活用など最新の事例に関心のある方はこちらのイベント情報をご参照ください。
(本記事はCData Software提供のタイアップ記事です)
あわせて読みたい
「Azure Managed Applications」パブリックプレビュー開始。マネージドサービス付きのアプリをマーケットプレイスで販売し、料金をAzureの月額料金に上乗せ可能に
≪前の記事
[速報]「Microsoft 365」発表。Office 365+Windows 10+セキュリティ機能を月額課金で1ユーザー20ドルから。大企業向けと中小企業向けに提供