(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024131497
(43)【公開日】2024-09-30
(54)【発明の名称】API提供システムおよびAPI提供方法
(51)【国際特許分類】
G06F 9/445 20180101AFI20240920BHJP
G06F 16/908 20190101ALI20240920BHJP
【FI】
G06F9/445 130
G06F16/908
【審査請求】未請求
【請求項の数】13
【出願形態】OL
(21)【出願番号】P 2023041789
(22)【出願日】2023-03-16
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVASCRIPT
(71)【出願人】
【識別番号】000233295
【氏名又は名称】株式会社日立情報通信エンジニアリング
(74)【代理人】
【識別番号】110000198
【氏名又は名称】弁理士法人湘洋特許事務所
(72)【発明者】
【氏名】森 久斗
【テーマコード(参考)】
5B175
5B376
【Fターム(参考)】
5B175FA01
5B376AC01
5B376AC21
(57)【要約】
【課題】 APIが設けられていないWebアプリケーションについて、簡便にエラー制御が可能なAPIを提供する。
【解決手段】
API提供システムであって、プロセッサと、記憶装置と、を備える情報処理装置を含み、API化対象のWebアプリケーションのエントリポイントの指定と、当該Webアプリケーションの運用手順書の指定と、を受け付けて該エントリポイントへの操作要求を受け付けるためのAPIを生成するAPI生成部と、前記API生成部により生成されたAPIへのアクセスを受け付けると、前記Webアプリケーションに対する操作へ変換を行って前記Webアプリケーションを実行させるAPI実行部と、前記API実行部による前記Webアプリケーションの実行結果に応じて結果情報をアクセス元へ出力するAPI結果報告部と、を備える。
【選択図】
図1
【特許請求の範囲】
【請求項1】
プロセッサと、記憶装置と、を備える情報処理装置を含み、
API化対象のWebアプリケーションのエントリポイントの指定と、当該Webアプリケーションの運用手順書の指定と、を受け付けて該エントリポイントへの操作要求を受け付けるためのAPIを生成するAPI生成部と、
前記API生成部により生成されたAPIへのアクセスを受け付けると、前記Webアプリケーションに対する操作へ変換を行って前記Webアプリケーションを実行させるAPI実行部と、
前記API実行部による前記Webアプリケーションの実行結果に応じて結果情報をアクセス元へ出力するAPI結果報告部と、
を備えるAPI提供システム。
【請求項2】
請求項1に記載のAPI提供システムであって、
前記API実行部または前記API結果報告部において得られるGUIを記録するエビデンス記録部、
を備えることを特徴とするAPI提供システム。
【請求項3】
請求項2に記載のAPI提供システムであって、
前記API生成部は、APIのパラメータと、アクションと、結果表示と、を含む確認画面を提示してAPI生成の指示を受け付ける、
ことを特徴とするAPI提供システム。
【請求項4】
請求項3に記載のAPI提供システムであって、
前記API生成部は、前記確認画面において、前記APIのパラメータおよび前記アクションのそれぞれのXpathを前記エントリポイントへのアクセスにより取得されるGUIから取得する、
ことを特徴とするAPI提供システム。
【請求項5】
請求項4に記載のAPI提供システムであって、
前記API生成部は、前記確認画面において、前記運用手順書において必要と示されているパラメータを明示する、
ことを特徴とするAPI提供システム。
【請求項6】
請求項5に記載のAPI提供システムであって、
前記運用手順書は、表計算形式のファイルである、
ことを特徴とするAPI提供システム。
【請求項7】
請求項6に記載のAPI提供システムであって、
前記API実行部は、前記Webアプリケーションに対する操作をRPA(Robotic Process Automation)を用いて行う、
ことを特徴とするAPI提供システム。
【請求項8】
請求項7に記載のAPI提供システムであって、
前記API結果報告部は、前記Webアプリケーションの実行結果画面に含まれる文字列を用いて結果を判定する、
ことを特徴とするAPI提供システム。
【請求項9】
請求項8に記載のAPI提供システムであって、
前記エビデンス記録部は、スクリーンショットにより前記GUIを記録する、
ことを特徴とするAPI提供システム。
【請求項10】
請求項9に記載のAPI提供システムであって、
前記WebアプリケーションのGUIの更新有無を判定するGUI更新チェック部、
を備えることを特徴とするAPI提供システム。
【請求項11】
請求項10に記載のAPI提供システムであって、
前記GUI更新チェック部は、前記GUIの更新により追加されたパラメータについて通知を行う、
ことを特徴とするAPI提供システム。
【請求項12】
請求項11に記載のAPI提供システムであって、
前記GUI更新チェック部は、前記追加されたパラメータに対応するAPIの生成を前記API生成部に行わせる、
ことを特徴とするAPI提供システム。
【請求項13】
プロセッサと、記憶装置と、を備える情報処理装置が、
API化対象のWebアプリケーションのエントリポイントの指定と、当該Webアプリケーションの運用手順書の指定と、を受け付けて該エントリポイントへの操作要求を受け付けるためのAPIを生成するAPI生成ステップと、
前記API生成ステップにより生成されたAPIへのアクセスを受け付けると、前記Webアプリケーションに対する操作へ変換を行って前記Webアプリケーションを実行させるAPI実行ステップと、
前記API実行ステップによる前記Webアプリケーションの実行結果に応じて結果情報をアクセス元へ出力するAPI結果報告ステップと、
を実施するAPI提供方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、API提供システムおよびAPI提供方法に関する。
【背景技術】
【0002】
特許文献1には、プロセッサと記憶装置とを有する情報処理装置を用いて構成され、API化しようとするWebアプリケーションに対してWebブラウザを介して行われる一連の操作をアクセス手順として取得するアクセス手順取得部と、取得した前記アクセス手順の内容をユーザーに提示しつつ、前記API化において必要となるAPI仕様の設定をユーザーから受け付けることによりAPI仕様を生成するAPI仕様設定部と、を備えるAPI化支援システムの開示がある。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記特許文献1に記載された技術は、人手によるGUI操作(アクセス手順)およびパラメータ情報の入力を元にWebアプリケーションのAPIを生成している。しかし、生成されるAPIでは、Webアプリケーションの実行エラーが発生した場合を想定していないため、Webアプリケーションの呼び出し側にてエラー制御を適切に行うことは難しい場合がある。
【0005】
本発明の目的は、APIが設けられていないWebアプリケーションについて、簡便にエラー制御が可能なAPIを提供する技術を提供することにある。
【課題を解決するための手段】
【0006】
本願は、上記課題の少なくとも一部を解決する手段を複数含んでいるが、その例を挙げるならば、以下のとおりである。上記課題を解決すべく、本発明の一態様に係るAPI提供システムは、プロセッサと、記憶装置と、を備える情報処理装置を含み、API化対象のWebアプリケーションのエントリポイントの指定と、当該Webアプリケーションの運用手順書の指定と、を受け付けて該エントリポイントへの操作要求を受け付けるためのAPIを生成するAPI生成部と、前記API生成部により生成されたAPIへのアクセスを受け付けると、前記Webアプリケーションに対する操作へ変換を行って前記Webアプリケーションを実行させるAPI実行部と、前記API実行部による前記Webアプリケーションの実行結果に応じて結果情報をアクセス元へ出力するAPI結果報告部と、を備える。
【0007】
また、上記のAPI提供システムにおいて、前記API実行部または前記API結果報告部において得られるGUIを記録するエビデンス記録部、を備えるものであってもよい。
【0008】
また、上記のAPI提供システムにおいて、前記API生成部は、APIのパラメータと、アクションと、結果表示と、を含む確認画面を提示してAPI生成の指示を受け付けるようにしてもよい。
【0009】
また、上記のAPI提供システムにおいて、前記API生成部は、前記確認画面において、前記APIのパラメータおよび前記アクションのそれぞれのXpathを前記エントリポイントへのアクセスにより取得されるGUIから取得するようにしてもよい。
【0010】
また、上記のAPI提供システムにおいて、前記API生成部は、前記確認画面において、前記運用手順書において必要と示されているパラメータを明示するようにしてもよい。
【0011】
また、上記のAPI提供システムにおいて、前記運用手順書は、表計算形式のファイルであってもよい。
【0012】
また、上記のAPI提供システムにおいて、前記API実行部は、前記Webアプリケーションに対する操作をRPA(Robotic Process Automation)を用いて行うものであってもよい。
【0013】
また、上記のAPI提供システムにおいて、前記API結果報告部は、前記Webアプリケーションの実行結果画面に含まれる文字列を用いて結果を判定するものであってもよい。
【0014】
また、上記のAPI提供システムにおいて、前記エビデンス記録部は、スクリーンショットにより前記GUIを記録するものであってもよい。
【0015】
また、上記のAPI提供システムにおいて、前記WebアプリケーションのGUIの更新有無を判定するGUI更新チェック部、を備えるものであってもよい。
【0016】
また、上記のAPI提供システムにおいて、前記GUI更新チェック部は、前記GUIの更新により追加されたパラメータについて通知を行うものであってもよい。
【0017】
また、上記のAPI提供システムにおいて、前記GUI更新チェック部は、前記追加されたパラメータに対応するAPIの生成を前記API生成部に行わせるものであってもよい。
【0018】
また、本発明の別の態様に係るAPI提供方法は、プロセッサと、記憶装置と、を備える情報処理装置が、API化対象のWebアプリケーションのエントリポイントの指定と、当該Webアプリケーションの運用手順書の指定と、を受け付けて該エントリポイントへの操作要求を受け付けるためのAPIを生成するAPI生成ステップと、前記API生成ステップにより生成されたAPIへのアクセスを受け付けると、前記Webアプリケーションに対する操作へ変換を行って前記Webアプリケーションを実行させるAPI実行ステップと、前記API実行ステップによる前記Webアプリケーションの実行結果に応じて結果情報をアクセス元へ出力するAPI結果報告ステップと、を実施する。
【発明の効果】
【0019】
本発明によれば、APIが設けられていないWebアプリケーションについて、簡便にエラー制御が可能なAPIを提供することができる。上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【0020】
【
図1】API提供システムの利用例を示す図である。
【
図2】API提供システムの構成例を示す図である。
【
図3】APIパラメータ情報のデータ構造の例を示す図である。
【
図4】APIアクション情報のデータ構造の例を示す図である。
【
図5】API実行結果情報のデータ構造の例を示す図である。
【
図6】API提供装置のハードウェア構成例を示す図である。
【
図9】API生成処理の出力画面例を示す図である。
【
図11】WebアプリケーションのGUIの例を示す図である。
【
図12】API更新処理の出力画面例を示す図である。
【発明を実施するための形態】
【0021】
以下、本発明に係る実施の形態を図面に基づいて説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。また、以下の実施の形態において、その構成要素(要素ステップ等も含む)は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではないことは言うまでもない。また、「Aからなる」、「Aよりなる」、「Aを有する」、「Aを含む」と言うときは、特にその要素のみである旨明示した場合等を除き、それ以外の要素を排除するものでないことは言うまでもない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。
【0022】
以下の説明では、API提供装置100およびAPI生成装置200の入出力部と表示部は、図示しないが、一つ以上のインターフェースデバイスでよい。当該一つ以上のインターフェースデバイスは、下記のうちの少なくとも一つでよい。
・一つ以上のI/O(Input/Output)インターフェースデバイス。API提供装置100およびAPI生成装置200に対するI/Oインターフェースデバイスは、ユーザインターフェースデバイス、例えば、キーボード及びポインティングデバイスのような入力デバイスと、表示デバイスのような出力デバイスとのうちのいずれでもよい。
・一つ以上の通信インターフェースデバイス。一つ以上の通信インターフェースデバイスは、一つ以上の同種の通信インターフェースデバイス(例えば一つ以上のNIC(Network Interface Card))であってもよいし二つ以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
【0023】
また、以下の説明では、「メモリ」は、一つ以上の記憶デバイスの一例である一つ以上のメモリデバイスであり、典型的には主記憶デバイスでよい。メモリにおける少なくとも一つのメモリデバイスは、揮発性メモリデバイスであってもよいし不揮発性メモリデバイスであってもよい。
【0024】
また、以下の説明では、「記憶部」または「ストレージ」は、メモリと永続記憶装置のうちメモリかまたは両方であればよい。具体的には、永続記憶装置は例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、NVME(Non-Volatile Memory Express)ドライブ、又は、SCM(Storage Class Memory)でよい。
【0025】
また、以下の説明では、「処理部」または「プロセッサ」は、一つ以上のプロセッサデバイスでよい。少なくとも一つのプロセッサデバイスは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサデバイスでよいが、GPU(Graphics Processing Unit)のような他種のプロセッサデバイスでもよい。少なくとも一つのプロセッサデバイスは、シングルコアでもよいしマルチコアでもよい。少なくとも一つのプロセッサデバイスは、プロセッサコアでもよい。少なくとも一つのプロセッサデバイスは、処理の一部又は全部を行うハードウェア記述言語によりゲートアレイの集合体である回路(例えばFPGA(Field-Programmable Gate Array)、CPLD(Complex Programmable Logic Device)又はASIC(Application Specific Integrated Circuit))といった広義のプロセッサデバイスでもよい。
【0026】
また、以下の説明では、「yyy部」の表現にて機能を説明することがあるが、機能は、一つ以上のコンピュータプログラムがプロセッサによって実行されることで実現されてもよいし、一つ以上のハードウェア回路(例えばFPGA又はASIC)によって実現されてもよいし、それらの組合せによって実現されてもよい。プログラムがプロセッサによって実行されることで機能が実現される場合、定められた処理が、適宜に記憶装置及び/又はインターフェース装置等を用いながら行われるため、機能はプロセッサの少なくとも一部とされてもよい。機能を主語として説明された処理は、プロセッサあるいはそのプロセッサを有する装置が行う処理としてもよい。プログラムは、プログラムソースからインストールされてもよい。プログラムソースは、例えば、プログラム配布計算機又は計算機が読み取り可能な記録媒体(例えば非一時的な記録媒体)であってもよい。各機能の説明は一例であり、複数の機能が一つの機能にまとめられたり、一つの機能が複数の機能に分割されたりしてもよい。
【0027】
また、以下の説明では、プログラムや処理部を主語として説明された処理は、プロセッサあるいはそのプロセッサを有する装置が行う処理としてもよい。また、二つ以上のプログラムが一つのプログラムとして実現されてもよいし、一つのプログラムが二つ以上のプログラムとして実現されてもよい。
【0028】
また、以下の説明では、「xxxテーブル」あるいは「xxx情報」といった表現にて、入力に対して出力が得られる情報を説明することがあるが、当該情報は、どのような構造のテーブルでもよいし、入力に対する出力を発生するニューラルネットワーク、遺伝的アルゴリズムやランダムフォレストに代表されるような学習モデルでもよい。また、以下の説明において、各テーブルの構成は一例であり、一つのテーブルは、二つ以上のテーブルに分割されてもよいし、二つ以上のテーブルの全部又は一部が一つのテーブルであってもよい。
【0029】
以下の説明において、Webサービスを提供するWebアプリケーションのことを「Webアプリ」と称し、WebAPI(Web Application Programming Interface)を利用するアプリケーションのことを「WebAPI利用アプリ」と称することがある。
【0030】
近年、クラウドコンピューティング技術の発展に伴い、IaC(Infrastructure as Code)を活用したシステムの自動構築技術が注目されている。IaCによるシステム構築のためには、構築の対象となる製品やサービス(例えば、Webプロキシ等のセキュリティ製品等)にAPIが存在することが前提となるが、システムの複雑化に伴って、構築対象が多岐にわたると、APIが無い製品、サービスも利用対象となる場合もある。その場合、IaCによる一括したシステム構築ができなくなり、APIが無い製品、サービスは手作業による構築を実施する必要が出るため、著しく効率が低下してしまう。
【0031】
発明者は、このような問題に関して、APIを生成することでAPIが無い製品、サービスについてもIaCによるシステム構築を行うことを考えたが、以下のような課題に直面した。
・APIの生成には人手によるGUI操作(アクセス手順)が必要であり、アクセス手順は膨大であるためAPI作成には時間と作業の負荷が高くなる。
・生成したAPIの呼び出し時にWebアプリケーションでエラーが発生した場合、APIを利用するアプリケーションでエラー時の処理(例えば、リトライ処理等)を行う必要がある場合が多い。APIの実行結果の応答が適切なエラー情報を返さない場合には、結果として利用者の意図通りにWebアプリケーションを操作できない場合が発生する。
【0032】
図1は、API提供システムの利用例を示す図である。通信ネットワークを介して接続されるサードパーティ製品/サービスのうち、WebAPIを備えるもの(サードパーティ製品/サービス300X)がある場合、構成管理ツール(IaC)は設定値の変更等の構成管理をWebAPIを介して行うことができる。しかし、WebAPIを備えないサードパーティ製品/サービス300については、Webアプリ301のWebGUIを介して機能提供部302にアクセス可能であるものの、WebGUIを作業者が都度操作する必要があり、効率的ではない。これに対し、API提供装置100が
図2に示すAPI利用装置400からのAPIの呼び出しを受け付けてWebGUIにアクセスを行うようにすることで、疑似的にWebAPIによる構成管理が可能となる。また、API生成装置200は、API提供装置100が提供するAPI機能を生成する機能を備える。しかし、これに限られるものではなく、API提供装置100と、API生成装置200とは、同一の装置であってもよい。
【0033】
図2は、API提供システムの構成例を示す図である。API提供システム1では、API利用装置400においてWebAPI利用アプリ401がサードパーティ製品/サービス300に関するサービスの構成管理のためのAPI呼び出しを行うと、API提供装置100の処理部120に含まれるWebAPI121がAPI実行部122により起動される。API実行部122は、WebAPI121に受け渡されたパラメータを用いてWebGUI操作部123の操作に変換し、WebGUI操作部123はサードパーティ製品/サービス300が提供するWebGUI(Webアプリ301)を操作する。操作の結果情報をAPI結果報告部124は受け取り、正常終了、エラー終了を切り分けてWebAPI121の戻り値とする。WebAPI利用アプリ401は、API呼び出しの戻り値をAPI結果報告部124から受け取り、エラー制御等の後続処理を行うことができる。
【0034】
API提供装置100は、記憶部110と、処理部120と、図示しない通信部と、を含んで構成される情報処理装置である。WebAPI121と、API実行部122と、WebGUI操作部123と、API結果報告部124と、エビデンス記録部125とは、API提供装置100の処理部120に含まれる。また、記憶部110には、APIパラメータ情報111と、APIアクション情報112と、API実行結果情報113と、が含まれる。
【0035】
WebAPI121は、API化対象のWebアプリ301のエントリポイント(URL:Uniform Resource Locator)への操作要求および指定するパラメータを受け付ける。
【0036】
API実行部122は、WebAPI121へのアクセスを解析し、WebAPIが受け付けた操作要求および指定するパラメータと、後述する記憶部110のAPIパラメータ情報111と、APIアクション情報112とを用いて、Webアプリ301に対する操作へ変換を行ってWebGUI操作部123を介してWebアプリ301を実行させる。当該処理において、API実行部122は、Webアプリ301に対する操作をRPA(Robotic Process Automation)を用いて行う。
【0037】
WebGUI操作部123は、RPAツール等を用いて、サードパーティ製品/サービス300が提供するWebアプリ301(WebGUI)を操作する。
【0038】
API結果報告部124は、API実行部122によるWebアプリ301の実行結果に応じて結果情報をアクセス元となるWebAPI利用アプリ401へ出力する。当該処理において、API結果報告部124は、Webアプリケーションの実行結果画面に含まれる文字列を用いて結果を判定する。
【0039】
エビデンス記録部125は、API実行部122またはAPI結果報告部124において得られるGUIをエビデンスとして記録する。具体的には、エビデンス記録部125は、WebGUI操作部123が取得したGUIをいわゆるスクリーンショット等により静止画像あるいは動画化して記録する。
【0040】
図3は、APIパラメータ情報のデータ構造の例を示す図である。APIパラメータ情報111は、対象URL111aと運用手順書111bとの組み合わせに応じて、Xpath111c(ページ内相対パス)と、パラメータ名111dと、型111eと、要否111fと、を対応付けて格納する。対象URL111aは、API化の対象となるWebアプリ301のエントリポイントとなるURLである。運用手順書111bは、API化の対象となるWebアプリ301の操作手順を記した表計算ファイル等の所定のフォーマットの文書を特定する情報である。
【0041】
なお、運用手順書は、表計算ファイルに限られず、例えばPDF(Portable Document Format)、XML(Extensible Markup Language)、HTML(Hypertext Markup Language)、あるいはJSON(Javascript Object Notation)等による記述がなされたファイルであってよい。
【0042】
Xpath111cは、API化の対象となるWebアプリ301が出力する画面ページ内の相対パスを特定する情報である。パラメータ名111dおよび型111eは、API化の対象となるWebアプリ301が出力する画面内の入力パラメータの名称およびデータ型である。要否111fは、運用手順において入力が必須とされる項目か否かを示す情報である。
【0043】
図4は、APIアクション情報のデータ構造の例を示す図である。APIアクション情報112は、対象URL112aと運用手順書112bとの組み合わせに応じて、Xpath112cと、操作112dと、要否112eと、を対応付けて格納する。対象URL112aは、API化の対象となるWebアプリ301のエントリポイントとなるURLである。運用手順書112bは、API化の対象となるWebアプリ301の操作手順を記した表計算ファイル等の所定のフォーマットの文書を特定する情報である。なお、運用手順書は、表計算ファイルに限られず、例えばPDF、XML、HTML、あるいはJSON等による記述がなされたファイルであってよい。
【0044】
Xpath112cは、API化の対象となるWebアプリ301が出力する画面ページ内の相対パスを特定する情報である。操作112dは、API化の対象となるWebアプリ301が出力する画面内の操作アクションの種類である。要否112eは、運用手順において実行が必須とされるアクションか否かを示す情報である。
【0045】
図5は、API実行結果情報のデータ構造の例を示す図である。API実行結果情報113は、対象URL113aと運用手順書113bとの組み合わせに応じて、判定文字113cを対応付けて格納する。対象URL113aは、API化の対象となるWebアプリ301のエントリポイントとなるURLである。運用手順書113bは、API化の対象となるWebアプリ301の操作手順を記した表計算ファイル等の所定のフォーマットの文書を特定する情報である。なお、運用手順書は、表計算ファイルに限られず、例えばPDF、XML、HTML、あるいはJSON等による記述がなされたファイルであってよい。
【0046】
判定文字113cは、API化の対象となるWebアプリ301が出力する結果画面ページ内において、運用手順上正常とされる処理結果を特定する情報である。ここで、運用手順上正常とされる処理結果としているのは、Webアプリ301上の正常処理結果は通常は運用手順上の正常処理結果と一致するが、必ずしもWebアプリ301上の正常処理結果が運用手順上の正常処理結果と一致するとは限らないためである。例えば、不要ユーザーの削除処理を行った後、正しくユーザー情報が削除されていることを確認するために照会を行いエラーを表示させる場合等、正常でない処理結果を運用手順上の正常とする必要がある場合もあり得るためである。
【0047】
説明を
図2に戻す。API生成装置200は、記憶部210と、処理部220と、を備える情報処理装置である。記憶部210には、API提供装置100の記憶部110に格納されているAPIパラメータ情報111と、APIアクション情報112と、API実行結果情報113と、と同様のデータ構造を備えるAPIパラメータ情報211と、APIアクション情報212と、API実行結果情報213と、が含まれる。それぞれのデータ構造については、上述のとおりであるため、説明を省略する。
【0048】
処理部220には、WebGUI解析部221と、運用手順書解析部222と、API生成部223と、GUI更新チェック部224と、が含まれる。
【0049】
WebGUI解析部221は、APIの生成処理において、API化の対象となるWebアプリ301のWebGUIを解析して、パラメータと、アクションと、結果情報と、を特定して取得する。
【0050】
運用手順書解析部222は、APIの生成処理において、API化の対象となるWebアプリ301の運用手順書を解析して、該手順において利用するパラメータと、アクションと、結果情報と、を特定して取得する。
【0051】
API生成部223は、API化対象のWebアプリ301のエントリポイント(URL)の指定と、当該Webアプリ301の運用手順書の指定と、を受け付けて該エントリポイントへの操作要求を受け付けるためのAPIを生成する。その際、API生成部223は、APIのパラメータと、アクションと、結果表示と、を含む確認画面を提示してAPI生成の指示を受け付ける。
【0052】
なお、API生成部223は、確認画面において、APIのパラメータおよびアクションのそれぞれのXpathをエントリポイントへのアクセスにより取得されるGUIから取得する。また、API生成部223は、確認画面において、運用手順書において必要と示されているパラメータを明示する。
【0053】
GUI更新チェック部224は、Webアプリ301のGUIの更新有無を判定する。具体的には、GUI更新チェック部224は、Webアプリ301のGUIの更新により追加されたパラメータがあれば、その通知およびAPIの更新を知らせる通知を行う。そして、GUI更新チェック部224は、所定の指示を受け付けると、追加されたパラメータに対応するAPIの生成をAPI生成部223に行わせる。
【0054】
図6は、API提供装置のハードウェア構成例を示す図である。API提供装置100は、CPU(Central Processing Unit)等のプロセッサ101と、RAM(Random Access Memory)等のメモリ102と、ハードディスクやSSD(Solid State Drive)等のストレージ103と、通信装置104と、これらをつなぐバスと、を含んで構成される。
【0055】
上記した記憶部110のAPIパラメータ情報111と、APIアクション情報112と、API実行結果情報113とは、メモリ102あるいはストレージ103により実現される。また、処理部120のWebAPI121と、API実行部122と、WebGUI操作部123と、API結果報告部124と、エビデンス記録部125とは、プロセッサ101により実現される。そして、図示しない通信部は、通信装置104により実現される。
【0056】
以上が、本実施形態におけるAPI提供装置100のハードウェア構成例である。しかし、これに限らず、その他のハードウェアを用いて構成されるものであってもよい。なお、API提供装置100は、図示しないが、OS、ミドルウェア、アプリケーションなどの一般的なコンピュータの公知の要素を有する。
【0057】
また、API生成装置200についても、基本的にAPI提供装置100と同様のハードウェア構成を備える。API生成装置200においては、処理部220のWebGUI解析部221と、運用手順書解析部222と、API生成部223と、GUI更新チェック部224とがプロセッサ101により実現される点で相違する。なお、API提供装置100と、API生成装置200とは、説明の便宜上別ハードウェアにて実現されるよう説明しているが、これに限られず、同一のハードウェアにて実現されるものであってもよい。
【0058】
[動作の説明]次に、本実施形態におけるAPI生成装置200およびAPI提供装置100の動作を説明する。
【0059】
図7は、API生成処理のフロー例を示す図である。API生成処理は、API生成装置200において、開始指示を受け付けると開始される。
【0060】
まず、API生成部223は、API生成対象のエントリポイント(URL)を受け付ける(ステップS001)。具体的には、API生成部223は、Webアプリ301を実行開始するためのURLを受け付ける。
【0061】
そして、API生成部223は、API生成対象の運用手順書を受け付ける(ステップS002)。具体的には、API生成部223は、Webアプリ301の操作手順が含まれる運用手順書のURLあるいはファイルパス等を受け付ける。なお、ステップS001、ステップS002は便宜上分けて処理するものとして説明しているが、略同時に処理されるものであってもよい。
【0062】
そして、WebGUI解析部221は、API生成対象のGUIを解析する(ステップS003)。具体的には、WebGUI解析部221は、API化の対象となるWebアプリ301のエントリポイントにリクエストを発行してレスポンスとして得たWebGUIを解析して、パラメータと、アクションとを特定して取得する。例えば、WebGUI解析部221は、WebGUIに含まれるインプットタグやボタンタグ等を特定して、それぞれのパラメータやアクションのXpath(ページ内相対パス)を特定する。
【0063】
そして、API生成部223は、API生成対象の運用手順書の情報をユーザーへ提示する(ステップS004)。具体的には、運用手順書解析部222は、API化の対象となるWebアプリ301の運用手順書を解析して、該手順において利用するパラメータと、アクションと、結果情報と、を特定して取得する。そして、API生成部223は、運用手順書から取得したパラメータと、アクションと、について、ステップS003にて得たXpathの情報を含む確認画面を出力する。
【0064】
また、その際、API生成部223は、パラメータと、アクションと、について、運用手順書にて入力を要すると記載されているものがいずれか判るように表示する。また、API生成部223は、運用手順書から取得したパラメータと、アクションと、について、ステップS003にて得たXpathの情報を組み合わせてAPIパラメータ情報111と、APIアクション情報112と、に格納する。なお、API生成部223は、運用手順書から取得した結果情報を、API実行結果情報113に格納する。
【0065】
そして、API生成部223は、運用手順書の情報とWebGUIの情報を用いてAPIを生成し、WebAPI121としてAPI提供装置100に配布する(ステップS005)。具体的には、API生成部223は、運用手順書のパラメータをAPIのフォーム情報(インプットタグ)に対応付け、運用手順書のアクションをAPIのアクション情報(ボタンタグ)に対応付けることで、RPAによるGUI操作を可能とするAPIを生成する。APIの生成に際しては、OpenAPI Generator等の既存の技術を用いて自動で生成する。
【0066】
以上が、API生成処理のフローの例である。API生成処理のフローの例によれば、WebAPIを備えないWebアプリ(GUI)等に、APIを設けることができる。
【0067】
図8は、API呼出処理のフロー例を示す図である。API呼出処理は、API生成処理により生成されたWebAPI121が呼び出されると、開始される。
【0068】
まず、WebAPI121は、APIのパラメータ情報を取得する(ステップS101)。具体的には、WebAPI121は、呼び出し元のWebAPI利用アプリ401から受け渡されたAPIのパラメータ情報を特定する。
【0069】
そして、API実行部122はWebアプリ301に対するGUIへパラメータ入力を行う(ステップS102)。具体的には、API実行部122は、WebAPI121が受け付けた操作要求および指定するパラメータと、APIパラメータ情報111と、APIアクション情報112とを用いて、Webアプリ301に対するGUI操作へ変換を行って、RPAを介してGUIのパラメータ入力を行う。なお、入力を行った後、エビデンス記録部125は、入力完了後の画面情報のスクリーンショット等により、入力値が入力された状態のWebアプリ301のGUI画面の静止画あるいは動画を取得して、エビデンスとして記憶部110に記憶させる。
【0070】
そして、API実行部122は、WebGUIでのアクションを実行する(ステップS103)。具体的には、API実行部122は、WebGUI操作部123を介してWebアプリ301を実行させる。WebGUI操作部123は、パラメータとアクションを含む指示をWebアプリ301に受け渡し、アクションの実行結果の画面情報を得る。なお、実行結果の画面情報を得た後、エビデンス記録部125は、実行結果の画面情報のスクリーンショット等により、結果が表示された状態のWebアプリ301のGUI画面の静止画あるいは動画を取得して、エビデンスとして記憶部110に記憶させる。
【0071】
そして、API結果報告部124は、WebGUIの出力がAPI実行結果情報113の情報と一致するか否か判定する(ステップS104)。なお、API結果報告部124は、WebGUIの出力画面のテキスト内に、API実行結果情報113の判定文字113cが含まれている場合には一致すると判定し、そうでない場合には一致しないと判定する。
【0072】
ただし、これに限られるものではなく、API結果報告部124は、WebGUIの出力画面の画像から、OCR(Optical Character Recognition)等により文字認識を行い、API実行結果情報113の判定文字113cが含まれている場合には一致すると判定し、そうでない場合には一致しないと判定するようにしてもよい。あるいは、API結果報告部124は、WebGUIの出力画面の所定の範囲内の画像と、API実行結果情報113の画像との一致する、あるいは相似や類似する場合にWebGUIの出力がAPI実行結果情報113の情報と一致するとみなすようにしてもよい。
【0073】
WebGUIの出力がAPI実行結果情報113の情報と一致する場合(ステップS104にて、「Yes」の場合)には、API結果報告部124は、APIのHTTPレスポンスステータスコードを成功レスポンス(例えば、「200OK」)として呼び出し元のWebAPI利用アプリ401に返す(ステップS105)。
【0074】
WebGUIの出力がAPI実行結果情報113の情報と一致しない場合(ステップS104にて、「No」の場合)には、API結果報告部124は、APIのHTTPレスポンスステータスコードをエラーレスポンス(例えば、「400Bad Request」)として呼び出し元のWebAPI利用アプリ401に返す(ステップS106)。あるいは、API結果報告部124は、WebGUIの出力に所定のエラーコードが含まれる場合には、当該エラーコードをAPIのHTTPレスポンスステータスコードとして呼び出し元のWebAPI利用アプリ401に返すようにしてもよい。
【0075】
以上が、API呼出処理のフローの例である。API呼出処理のフローの例によれば、WebAPIを備えないWebアプリ(GUI)等を、WebAPIを介して呼び出すことができる。また、呼び出して実行した結果を含む応答を得ることができるため、呼び出し元においてエラー制御が可能となる。
【0076】
図9は、API生成処理の出力画面例を示す図である。API生成処理においては、まず、初期画面500が表示される。初期画面500には、API生成対象のURL入力欄501と、運用手順書パス入力欄502と、API情報取得ボタン503と、が含まれる。API情報取得ボタン503に入力を受け付けると、API生成対象のURLと、運用手順書のファイルパスと、がAPI生成部223に受け渡される。そして、確認画面であるAPI生成指示画面510に遷移する。
【0077】
API生成指示画面510には、運用手順書およびWebGUIから得られたAPIパラメータ511と、API実行アクション512と、API実行結果513と、API生成ボタン514と、が表示される。API生成ボタン514に入力を受け付けると、APIパラメータ511と、API実行アクション512と、API実行結果513と、を満たすAPIが生成される。
【0078】
図10は、運用手順書の書式の例を示す図である。運用手順書600は、章・節立て(「1-1ユーザ追加手順」や「1-2ユーザ追加手順」等)が操作画面の画像あるいは模式図ごとになされて構造化される。そして、操作手順(「1」や「2」)が文章で記載され、パラメータや変数の設定値等がリストあるいはキーバリュー形式等の所定の書式で列挙される。そのため、運用手順書解析部222は運用手順書を容易に解析できる。
【0079】
図11は、WebアプリケーションのGUIの例を示す図である。ここで、Webアプリ301は、ユーザーアカウントを追加する機能を提供するものであるとする。その入力画面のGUI700には、追加するアカウントのユーザー名(UserName)や説明(Description)等の入力受付欄が含まれる。
【0080】
図12は、API更新処理の出力画面例を示す図である。API更新処理は、GUI更新チェック部224が所定の間隔(例えば、1カ月ごとあるいは1日ごと)に開始する処理である。API更新処理において、GUI更新チェック部224は、Webアプリ301のGUIの更新有無を判定する。具体的には、GUI更新チェック部224は、Webアプリ301のGUIの更新により追加されたパラメータがあれば、その通知およびAPIの更新を知らせる通知を行う。そして、GUI更新チェック部224は、所定の指示を受け付けると、追加されたパラメータに対応するAPIの生成をAPI生成部223に行わせる。
【0081】
具体的には、API更新処理においては、API生成処理と同様に、初期画面500が表示される。初期画面500には、API生成対象のURL入力欄501と、運用手順書パス入力欄502と、API情報取得ボタン503と、が含まれる。API情報取得ボタン503に入力を受け付けると、API生成対象のURLと、運用手順書のファイルパスと、がAPI生成部223に受け渡される。そして、API更新処理においては、確認画面であるAPI更新指示画面510´に遷移する。
【0082】
API生成指示画面510には、運用手順書およびWebGUIから得られたAPIパラメータ511と、API実行アクション512と、API実行結果513と、API更新ボタン514´と、が表示され、GUIの更新により追加されたパラメータがあれば通知される。
図12の例では、APIパラメータ511に、「Policy」の項目が追加されており、太字やハイライト表示により通知されている。API更新ボタン514´に入力を受け付けると、APIパラメータ511と、API実行アクション512と、API実行結果513と、を満たすAPIが生成される。
【0083】
このように、API更新処理により、既作成のAPIについても、Webアプリ301のGUIの更新により追加されたパラメータがあれば、その通知およびAPIの更新を行うことができる。
【0084】
以上が、実施形態に係るAPI提供システムおよびAPI提供方法である。実施形態に係るAPI提供システムおよびAPI提供方法によれば、APIが設けられていないWebアプリケーションについて、簡便にエラー制御が可能なAPIを提供できる。
【0085】
以上、実施形態を挙げて具体的に説明したが、本発明はこの実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、API提供装置は、API生成装置と同一筐体であってもよいし、API提供装置は負荷分散・障害耐性向上のために冗長化されていてもよい。なお、上記した実施形態では本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。
【0086】
また、上記の各構成、機能、処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【0087】
また、上記したAPI提供装置100およびAPI生成装置200の各構成、機能、処理部等は、それらの一部又は全部を、例えば別の装置で実行して統合処理する等によりセキュアに分散システムで実現してもよい。
【0088】
また、上記した実施形態の技術的要素は、単独で適用されてもよいし、プログラム部品とハードウェア部品のような複数の部分に分けられて適用されるようにしてもよい。
【0089】
以上、本発明について、実施形態を中心に説明した。
【符号の説明】
【0090】
1・・・API提供システム、100・・・API提供装置、110・・・記憶部、111・・・APIパラメータ情報、112・・・APIアクション情報、113・・・API実行結果情報、120・・・処理部、121・・・WebAPI、122・・・API実行部、123・・・WebGUI操作部、124・・・API結果報告部、125・・・エビデンス記録部、200・・・API生成装置、210・・・記憶部、211・・・APIパラメータ情報、212・・・APIアクション情報、213・・・API実行結果情報、220・・・処理部、221・・・WebGUI解析部、222・・・運用手順書解析部、223・・・API生成部、224・・・GUI更新チェック部、300・・・サードパーティ製品/サービス、301・・・Webアプリ、302・・・機能提供部、400・・・API利用装置、401・・・WebAPI利用アプリ。