Web API 利 用 のためのプログラムライブラリ 自 動 生 成 高 井 正 成 1 阪 口 哲 男 2 筑 波 大 学 大 学 院 図 書 館 情 報 メディア 研 究 科 1 筑 波 大 学 図 書 館 情 報 メディア 系 2 305-8550 茨 城 県 つくば 市 春 日 1-2 概 要 近 年,Webアプリケーションの 提 供 者 はその 機 能 を 他 のアプリケーションから 利 用 してもらうため, Web APIを 提 供 する 事 例 が 増 加 している.Web APIではHTTPなどの 通 信 プロトコルによるリクエス ト レスポンスにより 通 信 を 行 うという 大 きな 枠 組 みは 共 通 しているものの, 細 かな 仕 様 は 各 Web API 提 供 者 によって 定 められる.そのため 各 Web APIに 互 換 性 がなく,Webアプリケーション 開 発 者 はWeb APIを 利 用 する 場 合, 仕 様 を 確 認 しそれぞれのWeb APIの 仕 様 に 沿 ったプログラムライブラリを 作 成 す る 必 要 がある.そこで 本 研 究 では 開 発 者 がプログラムライブラリを 自 分 で 作 成 する 手 間 を 省 くため, Web APIの 仕 様 文 書 から 情 報 を 抽 出 し,プログラムライブラリを 自 動 生 成 する 手 法 を 提 案 する. キーワード Web API,Webアプリケーション, 情 報 抽 出 Automatic Generation of Program Libraries for Accessing Web APIs Masanari TAKAI 1 Tetsuo SAKAGUCHI 2 Graduate School of Library, Information and Media Studies, University of Tsukuba 1 Faculty of Library, Information and Media Science, University of Tsukuba 2 1-2, Kasuga, Tsukuba, Ibaraki, 305-8550, JAPAN Abstract The case is increasing that Web Application providers publish Web APIs which are used by other applications with Web protocol. They are designed based on common simple protocol but detail specification of each of them is decided by its provider. So Web APIs don t have compatibility with each other. Web application developers have to read documents of Web APIs and make program libraries for them if they use Web APIs. This paper proposes a method to make program libraries automatically by means of information extraction from Web API documents in order to developers avoids the trouble of making program libraries. Keywords Web API,Web Application, Information Extraction 1
1. はじめに 近 年,Webアプリケーションが 自 身 の 機 能 をWeb APIとして 提 供 する 事 例 が 増 えている.Web APIに よってWebアプリケーション 開 発 者 は 他 の 任 意 のWebアプリケーションの 機 能 を 利 用 することができ る.Web APIリポジトリであるProgrammable Web [1] には 現 在 6000 件 以 上 のWeb APIが 登 録 されており, Web APIの 登 録 数 は 年 々 増 加 している( 図 1). Webアプリケーション 開 発 者 はWeb APIを 利 用 する 場 合, 各 Web APIの 仕 様 を 提 供 されるオンライン ドキュメントなどで 確 認 する.プログラミングの 際 はWeb APIを 利 用 する 処 理 はプログラムライブラリ として 他 の 処 理 と 分 けて 記 述 する 場 合 が 多 い.Web APIではHTTPなどの 通 信 プロトコルによるリクエ スト レスポンスにより 通 信 を 行 うという 大 きな 枠 組 みは 共 通 しているものの, 細 かな 仕 様 は 各 Web API 提 供 者 によって 定 められる.そのため 各 Web APIに 互 換 性 がなく,Webアプリケーション 開 発 者 は Web APIを 利 用 する 場 合,それぞれのWeb APIの 仕 様 に 沿 ったプログラムライブラリを 作 成 する 必 要 が ある. 新 たなWeb APIが 公 開 された 場 合 複 数 の 開 発 者 がそのWeb APIを 利 用 しようとして, 複 数 の 同 様 の 機 能 を 持 ったプログラムライブラリが 作 成 されてしまう. 実 際 にマイクロブログサービスtwitterの Web APIではプログラムライブラリが 複 数 作 成, 公 開 されており, 公 式 サイトで 紹 介 されているものだ けでも43 件 のプログラムライブラリが 存 在 し,Rubyという 一 つのプログラミング 言 語 に 限 った 場 合 で も5 件 のライブラリが 存 在 する [2].このように 複 数 の 開 発 者 が 別 々にWeb APIのプログラムライブラリを 作 成 することは 非 効 率 である.Web APIの 仕 様 が 変 更 された 場 合 は,プログラムライブラリを 修 正 しな ければならないが, 複 数 あるライブラリ 全 ての 修 正 が 必 要 となり, 修 正 漏 れがあったプログラムライブ ラリは 動 作 不 能 になったり, 機 能 が 不 足 してしまったりすることもある. 以 上 のような 理 由 からWeb APIのプログラムライブラリを 開 発 者 が 作 成 するのは 開 発 において 非 効 率 であるといえる.そこで 本 研 究 では 開 発 者 がプログラムライブラリを 自 分 で 作 成 する 手 間 を 省 くため,Web APIのオンラインドキュ メントから 情 報 を 抽 出 し,プログラムライブラリを 自 動 生 成 する 手 法 を 提 案 する. 図 1. Programmable Webにおける 年 ごとのWeb API 登 録 数 の 推 移 ([1]から 引 用 ) 2
2. Web APIのプログラムライブラリ 生 成 手 法 2.1. 概 要 本 章 ではWeb APIのプログラムライブラリの 生 成 手 法 について 述 べる. 本 手 法 では 各 Web APIのオン ラインドキュメントを 利 用 し,そこからプログラムライブラリの 生 成 に 必 要 な 情 報 を 抽 出 する( 図 2). 抽 出 した 情 報 からプログラムライブラリを 生 成 する.ここでいうオンラインドキュメントとは,Web APIを 利 用 する 開 発 者 のためにWeb APIの 仕 様 を 記 述 したもので,リクエストのベースURLや 利 用 でき るパラメータ,レスポンスの 形 式 などが 記 述 されている. 図 2. Web APIプログラムライブラリ 生 成 手 法 概 要 図 2.2. Web APIオンラインドキュメントからの 情 報 抽 出 プログラムライブラリの 生 成 に 必 要 な 情 報 は 各 Web APIのオンラインドキュメントから 抽 出 する. 抽 出 にはWeb APIのオンラインドキュメントに 見 られる 規 則 性 を 利 用 する.オンラインドキュメントでは Web APIの 情 報 が 提 供 元 によって 様 々な 記 述 形 式 で 記 されているがその 中 には 幾 つかの 共 通 点 がある. 例 としてtwitter APIのオンラインドキュメントとYahoo! Answers APIのオンラインドキュメントをそ れぞれ 図 3, 図 4に 示 す. 図 3. Twitter APIのオンラインドキュメント( 一 部 ) 3
図 4. Yahoo! Answers APIのオンラインドキュメント( 一 部 ) Web APIの 中 で, 特 にREST 型 と 呼 ばれるものは,HTTPのリクエストを 送 りそのリクエストに 応 じた レスポンスが 返 される. 図 2, 図 3ではドキュメント 中 にResource URLもしくはRequest URLとしてベ ースとなるURL(ベースURL)が 記 述 されている.その 下 にベースURLと 一 緒 に 送 るリクエストパラ メータについて,そのパラメータ 名 とパラメータの 型 や 説 明 が 記 述 されている.このように 多 くのオン ラインドキュメントではベースURLの 記 述 からパラメータに 関 する 説 明 など 共 通 の 項 目 が 説 明 されて おり, 各 情 報 は 箇 条 書 きや 表 によって 整 理 されていたり, 大 文 字 によるタイトルの 後 に 記 述 されていた りと 記 述 の 方 法 にある 程 度 の 規 則 性 が 見 られる. 本 手 法 ではオンラインドキュメントのHTMLのタグ 構 造 とキーワードに 見 られる 規 則 性 を 利 用 し, 情 報 の 抽 出 を 行 う. 2.3. 抽 出 した 情 報 の 記 述 とプログラムライブラリへの 変 換 本 研 究 では 抽 出 した 情 報 の 記 述 にWebアプリケーション 仕 様 記 述 言 語 であるWADL(Web Application Description Language) [3] を 用 いる.WADLはREST 型 のWeb APIの 仕 様 を 記 述 する 場 合 に 用 いられる 記 述 形 式 で,XMLで 記 述 される.WADLを 利 用 することで 抽 出 した 情 報 を 機 械 的 に 解 釈 しやすい 形 で 記 述 できる. 現 在 WADLを 利 用 することで 既 存 の 開 発 環 境 においてプログラムライブラリを 生 成 することが 可 能 となっている. 例 えば 統 合 開 発 環 境 のひとつであるNetBeansではWADLを 読 み 込 み,プログラム ライブラリを 生 成 することができる. WADLの 生 成 にあたり, 本 研 究 では 生 成 に 必 要 とする 情 報 を 以 下 の7 項 目 とした. 本 手 法 ではオンラ インドキュメントからこれらの 情 報 を 抽 出 し,WADLを 作 成 する. 4
ベースURL HTTPリクエストを 送 る 際 に 指 定 するURL パラメータ 名 リクエストで 指 定 できるパラメータの 名 前 パラメータの 型 文 字 列 や 数 字 など 各 パラメータで 指 定 できる 型 パラメータのデフォルト 値 リクエストで 指 定 しなかった 場 合 の 省 略 時 値 必 須 パラメータか 否 か 必 ず 指 定 しなければならないパラメータであるか 否 か リクエストの 形 式 リクエストの 送 信 方 法 に 関 する 規 定 (GETメソッドかPOSTメソッドか,など) レスポンスの 形 式 レスポンス 自 体 の 形 式 に 関 する 規 定 (XMLかJSONか,など) 3. 抽 出 手 法 の 評 価 本 研 究 では 抽 出 手 法 を, 実 際 のWeb APIオンラインドキュメントに 対 して 適 用 し 評 価 する. 抽 出 精 度 は, 人 出 による 抽 出 との 比 較 によって 求 める. 対 象 はProgrammable Webに 登 録 されている Web APIのオンラインドキュメント(HTMLソースコード)とする. 対 象 から,まず 人 手 で2.3に 示 し た7 項 目 の 情 報 を 抽 出 する. 次 に 抽 出 手 法 を 実 装 したプログラムを 対 象 に 適 用 し, 人 手 で 得 られた 結 果 とプログラムの 結 果 を 比 較 する. 本 手 法 のプログラムは,オンラインドキュメントの 規 則 性 に 対 応 する 複 数 の 抽 出 ルールを 実 装 したも のとする. 抽 出 ルールとは 例 えば tableタグがあり,かつ パラメータ という 単 語 がtableタグより 上 の 行 にある 場 合 は,tableタグの 第 1 要 素 をパラメータ 名 とみなす などである.この 例 はパラメータ 名 に 関 する 抽 出 ルールのひとつである. 単 純 に 抽 出 精 度 を 求 める 他 に,どのルールがより 情 報 抽 出 に 役 立 つか,いくつのルールがあれば 情 報 抽 出 が 行 えるか 実 験 を 行 い,それぞれの 抽 出 ルールに 対 しての 評 価 も 行 う. 実 験 対 象 と, 人 手 で 抽 出 した 情 報 と 比 較 する 際 に,プログラム 内 で 適 用 する 抽 出 ルールを 実 験 ごとに 変 更 し,どのルールが 抽 出 精 度 に 影 響 を 与 えるか 確 認 する. 4. 予 備 実 験 本 研 究 の 手 法 の 有 効 性 を 確 かめるため, 予 備 実 験 を 行 った. 本 章 ではその 予 備 実 験 の 方 法 と 結 果,お よびそれによって 得 られた 知 見 について 述 べる. 4.1. 実 験 方 法 と 結 果 本 手 法 を 実 装 したプログラムを 実 際 のWeb APIオンラインドキュメントに 対 して 適 用 し, 情 報 が 抽 出 できるかどうか 試 行 した. 対 象 としたオンラインドキュメントを 以 下 に 示 す. (1) はてなキーワードAPI( 旧 文 書 ) http://d.hatena.ne.jp/keyword/%a4%cf%a4%c6%a4%ca%a5%ad%a1%bc%a5%ef%a1%bc% A5%C9API( 参 照 2012-08-20) (2) はてなキーワードAPI( 新 文 書 ) http://developer.hatena.ne.jp/ja/documents/keyword/apis/rest( 参 照 2012-08-20) (3) CiNii API( 論 文 検 索 ) http://ci.nii.ac.jp/info/ja/api/a_opensearch.html( 参 照 2012-08-20) (4) 郵 便 番 号 検 索 API http://groovetechnology.jp/webservice/zipsearch/index.html( 参 照 2012-08-20) 5
(5) 顔 検 出 API http://kaolabo.com/webapi/spec( 参 照 2012-08-20) はてなキーワードAPIに 関 しては, 旧 文 書 と 新 文 書 の2 件 が 存 在 したので,その 両 方 を 利 用 した. 予 備 実 験 では 抽 出 する 情 報 は,2 章 で 示 した7 項 目 のうち,ベースURLとパラメータ 名 のみとした. 実 験 では 対 象 から 人 手 で 情 報 を 抽 出 し,それを 正 解 とする.その 後 本 手 法 を 実 装 したプログラムを 以 上 の5 件 のオ ンラインドキュメントに 対 して 適 用 し, 抽 出 した 情 報 を 正 解 と 比 較 した. 今 回 適 用 したルールを 以 下 に 示 す. (ルール1) http:// で 始 まるURLの 記 法 に 則 っており,そのURLの 記 法 に 則 った 文 字 列 以 前 の 行 に ベ ースURL や Request URL など,ベースURLに 関 係 するキーワードが 多 くある 場 合,その 文 字 列 をベースURLとみなす. (ルール2) http:// で 始 まり, 途 中? で 区 切 られる,Web APIのベースURLとしてよく 見 られる URLの 記 法 に 則 っており,そのURLの 記 法 に 則 った 文 字 列 以 前 の 行 に ベースURL や Request URL など,ベースURLに 関 係 するキーワードが 多 くある 場 合,その 文 字 列 をベース URLとみな す.このルールによって 発 見 されたベースURLはルール1より 優 先 されることとする. (ルール3)HTMLのtableタグで 囲 まれた 表 の 中 の 要 素 の 一 つであり,かつそのtableタグ 以 前 の 行 もし くは 表 内 で パラメータ や Parameter などパラメータに 関 係 するキーワードが 多 くある,か つ 要 素 自 体 は 英 数 字 とURLとして 利 用 可 能 な 記 号 で 構 成 されている 文 字 列 がある 場 合,その 文 字 列 をパラメータ 名 とみなす. (ルール4)HTMLのdtタグで 囲 まれており,かつそれ 自 体 は 英 数 字 とURLとして 利 用 可 能 な 記 号 で 構 成 されている 文 字 列 である 場 合,その 文 字 列 をパラメータ 名 とみなす. 実 験 の 結 果 として,3.1で 示 したすべてのオンラインドキュメントから 正 解 と 等 しい 情 報 を 抽 出 するこ とができた. 実 験 におけるベースURLの 抽 出 に 関 する 結 果 を 表 1に 示 す.ベースURLは, 複 数 の 抽 出 候 補 に 対 して 優 先 順 位 をつけて 抽 出 している. 表 1では 抽 出 候 補 の 上 位 3 件 を 優 先 度 順 に 上 位 から 示 してい る. 4.2. 予 備 実 験 により 得 られた 知 見 今 回 の 予 備 実 験 によりベースURLとパラメータ 名 が 本 手 法 によって 取 得 可 能 であることがわかった. 今 回 は 情 報 を2 項 目 しか 抽 出 していないが,パラメータ 名 に 関 しては 表 形 式 で 記 述 されているもの (HTMLのtableタグを 用 いているもの)はその 表 の 中 の 要 素 を 抽 出 することに 成 功 しているので,パ ラメータに 関 する 他 の 情 報 もパラメータ 名 と 同 じように 抽 出 できる 可 能 性 が 高 い. 問 題 としては, 今 回 対 象 としたオンラインドキュメントは 日 本 語 であったため,パラメータ 名 やベースURLとの 区 別 がつき やすかったが, 英 語 のオンラインドキュメントは 区 別 がつきにくい 可 能 性 があることが 挙 げられる.ベ ースURLに 関 しては, 正 解 のURL 以 外 のURLも 誤 って 優 先 度 が 高 いとみなされて 抽 出 されたものもあ ったため,ベースURL 候 補 の 優 先 順 位 の 付 け 方 を 検 討 する 必 要 がある.また 今 回 は 対 象 としたオンライ ンドキュメントの 件 数 が 少 なかったが,より 対 象 件 数 を 増 やした 場 合 には 表 記 のゆれなど 今 回 出 なかっ た 問 題 が 発 生 する 可 能 性 がある. 6
表 1. 予 備 実 験 結 果 (ベースURLの 抽 出 ) 抽 出 対 象 人 手 による 抽 出 ( 正 解 ) 提 案 手 法 による 抽 出 (1) http://search.hatena.ne.jp/keyword http://search.hatena.ne.jp/keyword http://red3.hatena.ne.jp/adframe http://red.st-hatena.com/adframe (2) http://search.hatena.ne.jp/keyword http://search.hatena.ne.jp/keyword http://d.hatena.ne.jp/keyword http://hatenadeveloper.g.hatena.ne.jp/keyword/ja/keywor d/apis/rest (3) http://ci.nii.ac.jp/opensearch/search http://ci.nii.ac.jp/opensearch/search https://register-ci.nii.ac.jp/auth/action/login https://register-ci.nii.ac.jp/userregist/usertypesel.do (4) http://api.postalcode.jp/v1/zipsearch http://api.postalcode.jp/v1/zipsearch http://groovetechnology.jp/sitemap.html http://uchiai.com/ (5) https://kaolabo.com/api/detect https://kaolabo.com/xmlrpc.php https://kaolabo.com/api/detect http://kaolabo.com/feed 5. 関 連 研 究 Web API を 用 いたアプリケーション 開 発 効 率 向 上 に 関 しては 井 上 らの 研 究 [4]がある.この 研 究 では REST 型 と 呼 ばれる Web API においてのサーバ 内 でのデータ 管 理 について,アプリケーションに 求 め られる 共 通 機 能 をそなえたデータベース システムを 開 発 している.この 研 究 は Web アプリケーショ ンの 提 供 者 側 のサーバ 内 の 処 理 機 能 の 効 率 化 であり, 開 発 者 側 のプログラムライブラリについては 言 及 していない.この 他 に 開 発 者 側 の 開 発 効 率 化 として Riabov らの 研 究 [5]や Lu ら [6] の 研 究 がある. 彼 らの 研 究 では 複 数 の Web API を 利 用 したマッシュアップの 効 率 化 について 述 べられており,Web API の 仕 様 は 既 にプログラムとして 実 装 されている 前 提 での 研 究 となっている. 以 上 の 研 究 とは 異 なり, 本 研 究 では Web API の 機 能 を 利 用 するためのプログラムライブラリを 生 成 する. HTML からの 情 報 抽 出 という 観 点 では 片 山 らの 研 究 [7]や 池 田 ら [8] の 研 究 がある.これらの 研 究 では HTML のタグ 構 造 や 類 似 度 を 利 用 し HTML の 解 析 を 行 なっているが, 対 象 となる HTML は Web API のオンラインドキュメントではなく, 広 範 囲 の HTML を 対 象 としている. 本 研 究 の 手 法 は Web API の オンラインドキュメントのみを 対 象 とし,それに 見 られる 規 則 性 を 利 用 して, 特 定 の 情 報 の 抽 出 を 行 な うものである. 6. おわりに 本 研 究 では,Web APIのオンラインドキュメントから 仕 様 の 情 報 を 抽 出 し,Web APIのプログラムラ イブラリを 自 動 で 生 成 する 手 法 を 提 案 した.これによりWebアプリケーション 開 発 者 はプログラムライ ブラリの 作 成 に 関 する 開 発 上 の 手 間 がなくなり, 開 発 効 率 が 向 上 する. 今 後 は 英 語 のWeb APIオンラインドキュメントから 情 報 を 抽 出 できるようにし, 実 際 にどの 程 度 の 情 7
報 が 抽 出 可 能 であるのか 評 価 する. 参 考 文 献 [1] ProgrammableWeb - Mashups, APIs, and the Web as Platform. Programmable Web.com. http://www.programmableweb.com/, ( 参 照 2012-06-27). [2] Twitter Libraries Twitter Developers. Twitter. https://dev.twitter.com/docs/twitter-libraries, ( 参 照 2012-08-08). [3] Sun Microsystems. Web Application Description Language. World Wide Web Consortium (W3C). http://www.w3.org/submission/wadl/, ( 参 照 2012-07-23). [4] 井 上 武, 朝 倉 浩 志, 植 松 幸 生, 佐 藤 浩 史, 高 橋 紀 之. 迅 速 なアプリケーション 開 発 のためのWeb API データべースシステム. 電 子 情 報 通 信 学 会 技 術 研 究 報 告. IN, 情 報 ネットワーク, 2010-01-28, 109(411), p. 97-102. [5] Anton V. Riabov ほか. Wishful Search: Interactive Composition of Data Mashups. WWW. 2008, p. 775-784. [6] Bin Lu ほか. smash: Semantic-based Mashup Navigationfor Data API Network. WWW. 2009, p.1133-1134. [7] 片 山 太 一 ほか. スプログ 検 出 における HTML 構 造 の 類 似 性 の 有 効 性 の 評 価. 情 報 処 理 学 会 研 究 報 告. データベース システム 研 究 会 報 告. 2009-11-13, 2009-DBS-149(19), p. 1-8. [8] 池 田 彰 吾 ほか. 繰 り 返 し 構 造 を 考 慮 した Web ページの 見 出 しの 階 層 構 造 の 解 析. 情 報 処 理 学 会 研 究 報 告. 情 報 学 基 礎 研 究 会 報 告. 2008-03-28, 2008(34), p. 31-38. 8