HTMLスクレイピングやファイルでのバッチ連携を不要に、「API管理ツール」でWebへRESTful APIを公開。ドキュメントもSwagger記述も自動生成[PR]

2017年7月11日

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にするかなどを検討しなくてはなりません。

fig

そしてこれらは誰が何のためにそのAPIを使うかに依存するため、どれか1つに決めるのではなくどちらも実装して利用者に選択可能にする、というケースもあります。さらにこれらの規格や標準仕様などは日々進化しアップデートされているため、つねに使いやすいAPIにするためにはそうした更新に追従していくメンテナンス作業も求められるでしょう。

現時点でパブリックAPIやプライベートAPIがなかなか普及しないのは、こうしたハードルがあることが大きな要因といえます。

そこで、一般にこれらの課題を解決するために存在するのが 「API管理ツール」と呼ばれる分野の製品です。

API管理ツールのアーキテクチャとは

API管理ツールとはどのようなものか、ここではCDataの製品「CData API Server」を紹介しましょう。

一般に同製品をはじめとするAPI管理ツールは、APIを提供する実体となるゲートウェイサーバ、下図の「API Server」と、そのAPIサーバの動作を管理し、データソースとの接続やAPIの仕様定義などをするための管理ツールなどから構成されます。

fig

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を起動し、管理者としてログインします。

fig

ここではローカルで起動しているMySQLに接続することにします。

fig

するとMySQLで設定されているテーブルの一覧が表示されるので、対象となるテーブルを選択、さらにテーブル内のカラムも選択します。

fig
fig

つづいてユーザー認証を設定します。アクセス可能なユーザーと、そのユーザーがどのメソッドを利用可能か、1時間あたりのリクエストの上限などが設定できます。

fig

これで設定は終了です。APIが生成され、日本語のドキュメントも自動生成されます。

fig

APIのリクエスト方法、パラメータ、取得データ型なども記述されています。

fig

データ取得用のURL「http://localhost:8387/api.rsc/city/」をブラウザで開いてみると、まずAuthトークンの認証が要求され、その後にJSON形式でMySQLのデータが返ってきます。

fig

生成されたAPIを利用してSwagger EditorからSwagger用の記述も得ることができます。

fig

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 API Server

fig

CDataでは、CData API Serverのローンチイベント「CData Day 2017」を7月20日(木)に開催します。API 構築や活用など最新の事例に関心のある方はこちらのイベント情報をご参照ください

(本記事はCData Software提供のタイアップ記事です)

あわせて読みたい

プログラミング言語 開発ツール API PR




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本