JP2021179748A - 管理プログラム、管理方法及び管理装置 - Google Patents

管理プログラム、管理方法及び管理装置 Download PDF

Info

Publication number
JP2021179748A
JP2021179748A JP2020084146A JP2020084146A JP2021179748A JP 2021179748 A JP2021179748 A JP 2021179748A JP 2020084146 A JP2020084146 A JP 2020084146A JP 2020084146 A JP2020084146 A JP 2020084146A JP 2021179748 A JP2021179748 A JP 2021179748A
Authority
JP
Japan
Prior art keywords
schema
api
relationship
definition
webapi
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2020084146A
Other languages
English (en)
Inventor
雅洋 福寄
Masahiro Fukuyori
敦二 関口
Atsuji Sekiguchi
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2020084146A priority Critical patent/JP2021179748A/ja
Publication of JP2021179748A publication Critical patent/JP2021179748A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】効率的な開発環境を整える管理プログラム、管理方法及び管理装置を提供する。【解決手段】1つ又は複数のスキーマ定義を呼び出す複数のAPI定義を有するWebAPIにおける各スキーマ定義から各スキーマ定義で示される各スキーマにおける上位スキーマと下位スキーマとの参照関係を抽出する。API定義から各API定義で示される各APIに対する各スキーマの呼び出し関係を抽出する。参照関係及び呼び出し関係を基に、各APIによる上位スキーマの呼び出しに連動する下位スキーマの呼び出しの関係性を求める。各APIの呼び出し回数と関係性に基づいて、各スキーマの呼び出し回数を算出する。【選択図】図15

Description

本発明は、管理プログラム、管理方法及び管理装置に関する。
ソフトウェアの機能をネットワーク越しに外部から利用できるようにするApplication Programming Interface(API)の一形態として、WebAPIがある。開発者には、WebAPIを介して自分が開発した機能を公開するWebAPI提供者と、WebAPIを介して他人が公開した機能を利用するWebAPI利用者という2つの立場がある。
WebAPI提供者は、自分が提供した機能の強化、バクの修正などの理由でWebAPIを修正する場合がある。APIは、そのAPIで利用されるデータの構造を示す情報であるスキーマを有する。そして、WebAPI提供者は、APIを修正する場合、スキーマを修正する場合がある。このようにWebAPI提供者によりWebAPIに対してスキーマ修正のような非互換な修正が加えられた場合、利用者は、その修正に対応しなければ、修正が加えられたWebAPIを利用する自分のソフトウェアが正常に動作しなくなるおそれがある。例えば、スキーマ修正は、Required属性のついた要素であるスキーマの必須要素に対する修正、追加又は削除が行われた場合に、非互換な修正となる。また、スキーマ修正のうちRequired属性のない要素であるオプション要素の修正及び削除は、その要素を利用する場合に利用者は影響を受け、オプション要素の追加の場合は、利用者は影響を受けない。
従来のライブラリで提供されるAPIについては、API利用者がライブラリを取得して、APIの実行前にローカルでAPI利用コードをコンパイルする際に、APIの不一致を検出することが可能であった。
これに対して、WebAPIは、ネットワーク越しに文字列を送信することでAPI呼び出しを行うという規則に準ずるが、他の規則に関しては不確定である。そのため、WebAPI利用者は、事前のコンパイルチェックを行うことは困難であり、APIを実行するまでAPIの不一致を検出することは難しい。このようなことから、WebAPIは生ものであるといわれることがある。以上のような理由から、WebAPI提供者は、WebAPI利用者に影響のあるAPI変更は可能な限りさけることが好ましい。
そこで、WebAPI利用者に影響のあるAPI変更を避けるために、スキーマの重要度によって変更の影響度を判定し得るようにすることが好ましい。そして、各スキーマの利用頻度を算出することで、スキーマの重要度を知ることができる。
WebAPIを利用する技術として、アプリケーションが送信したAPIリクエストの履歴とAPIリクエストの内容の遷移とに基づいて算出した安定度に応じて、アプリケーションからのAPIアクセス可能回数を設定する従来技術がある。また、API群の構造として、階層構造を有するスキーマ定義や関数のライブラリを含ませる従来技術がある。また、WebアプリケーションのDOMツリーを読み込み、DOMツリーの各要素の属性を解析してWebアプリケーションに対して行われたユーザ操作を検出して記録する従来技術がある。また、API仕様書からパラメータ名などの情報を抽出し、抽出した情報がAPI規約に基づくスキーマ定義ルールファイルを満たすか否かを判定することで、そのAPIがAPI規約に沿っていることを確認する従来技術がある。
特開2017−162312号公報 特開2016−170548号公報 国際公開第2013/128645号 特開2018−142271号公報
しかしながら、APIで利用されるスキーマは階層化される場合がある。階層化されたスキーマを有するAPIの場合、APIで利用されるスキーマをすべて展開してログに記録すると、記録量が膨大になってしまう。スキーマの利用状態のログの記録量が膨大になった場合、各スキーマの利用頻度の算出が困難となる。また、API定義を利用した場合、親スキーマは特定可能であるが、階層化された子スキーマを特定するにはスキーマ定義の参照が行われるため、スキーマの階層が深い場合スキーマの特定が困難となる。そのため、単にAPI定義を利用する方法では、各スキーマの利用頻度を算出することは困難である。以上のように、従来のスキーマの利用頻度を求める方法では、修正による影響を抑えた適切なWebAPIの提供や変更の可能性が少ないスキーマを用いたWebAPIの利用が難しく、効率的な開発環境を整えることは困難である。
また、アプリケーションが送信したAPIリクエストの履歴とAPIリクエストの内容の遷移とに基づいて算出した安定度を算出する従来技術であっても、APIリクエストの回数はわかるが、各スキーマの利用頻度までは特定困難である。また、階層構造を有するスキーマ定義を含むAPI群、DOMツリーの各要素の属性を解析、APIの各要素のスキーマ定義ルールファイルを用いたチェックなどといった従来技術では、各スキーマへのアクセス頻度は考慮されていない。そのため、これらの従来技術を用いても、各スキーマの利用頻度を特定することは困難である。したがって、効率的な開発環境を整えることは困難である。
開示の技術は、上記に鑑みてなされたものであって、効率的な開発環境を整える管理プログラム、管理方法及び管理装置を提供することを目的とする。
本願の開示する管理プログラム、管理方法及び管理装置の一つの態様において、1つ又は複数のスキーマ定義を呼び出す複数のAPI定義を有するWebAPIにおける各前記スキーマ定義から各前記スキーマ定義で示される各スキーマにおける上位スキーマと下位スキーマとの参照関係を抽出する。前記API定義から各前記API定義で示される各APIに対する各前記スキーマの呼び出し関係を抽出する。前記参照関係及び前記呼び出し関係を基に、各前記APIによる前記上位スキーマの呼び出しに連動する前記下位スキーマの呼び出しの関係性を求める。各前記APIの呼び出し回数と前記関係性に基づいて、各前記スキーマの呼び出し回数を算出する。
1つの側面では、本発明は、効率的な開発環境を整えることができる。
図1は、実施例に係るAPI管理装置を含む情報処理システムのイメージ図である。 図2は、API管理装置のブロック図である。 図3Aは、API定義ファイルの一例を示す図である。 図3Bは、API定義ファイルのシンタックスの一例を示す図である。 図4は、API定義ファイルにおけるAPI定義及びスキーマ定義を模式的に表した図である。 図5は、API管理テーブルの一例を示す図である。 図6は、利用スキーマ対応テーブルの一例を表す図である。 図7は、階層構造テーブルの一例の図である。 図8は、重要度テーブルの一例を表す図である。 図9は、API定義から直接呼び出された回数を表す図である。 図10は、直接及び間接的に呼び出し元となるAPIを表す図である。 図11は、実施例に係るAPI管理装置により算出される各スキーマの重要度を表す図である。 図12は、各スキーマの重要度の第1の報知例を表す図である。 図13は、各スキーマの重要度の第2の報知例を表す図である。 図14は、各スキーマの重要度の第3の報知例を表す図である。 図15は、実施例に係るAPI管理装置によるスキーマ重要度決定処理のフローチャートである。
以下に、本願の開示する管理プログラム、管理方法及び管理装置の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する管理プログラム、管理方法及び管理装置が限定されるものではない。
図1は、実施例に係るAPI管理装置を含む情報処理システムのイメージ図である。図1に示すように、WebAPIを用いた情報処理システムでは、WebAPI提供はP1、WebAPI利用者P2及びWebAPI利用者P3が存在する。
WebAPI提供者P1は、WebAPIを開発して、インターネットなどのネットワーク1を経由して、WebAPI提供プログラム5を用いて開発したWebAPIをWebAPI利用者P2及びP3に提供する。また、WebAPI提供者P1は、開発したWebAPIに関するAPI仕様公開ページやOpen API Specification(OAS)を、ファイル2を用いてネットワーク1を介して提供する。OASは、APIの仕様を記述するフォーマットである。ファイル2には、API定義などが含まれる。
WebAPI提供プログラム5は、WebAPI利用プログラム6及び7から参照される。WebAPI提供プログラム5に含まれる各WebAPIがWebAPI利用プログラム6及び7により呼び出された履歴は、WebAPI呼出ログ4として保存される。
本実施例に係るAPI管理装置100は、ファイル2からAPI定義を取得する。また、API管理装置100は、WebAPI呼出ログ4を取得する。そして、API管理装置100は、API定義及びWebAPI呼出ログ4を用いて、WebAPIに含まれる各スキーマの重要度を求める。WebAPI提供者P1は、ファイル3を用いてスキーマの重要度が示されたOASをネットワーク1を介して提供する。
さらに、WebAPI提供者P1は、自分が開発したWebAPIを修正する場合に、API管理装置100により求められたWebAPIの各スキーマの重要度を用いて、どのような修正を加えるかを決定する。そして、WebAPI提供者P1は、決定した修正をWebAPIに加えて、WebAPI提供プログラム5に反映させる。また、WebAPI提供者P1は、ファイル2にも修正を反映させる。
WebAPI利用者P2は、ファイル2により提供されるAPI仕様公開ページやOAS提供などを用いて、WebAPI提供プログラム5からWebAPIを呼び出して利用するWebAPI利用プログラム6の開発を行う。この際、WebAPI利用者P2は、ファイル2の情報とともに、ファイル3の情報を用いてWebAPIに含まれる各スキーマの重要度を基に、WebAPI利用プログラム6の開発を行う。これにより、WebAPI利用者P2は、呼び出すWebAPIに修正が加えられても影響が少ないWebAPI利用プログラム6を開発できる。
WebAPI利用者P3は、WebAPI提供プログラム5からWebAPIを呼び出して利用するWebAPI利用プログラム7を使用する。本実施例の場合、WebAPI利用プログラム7からの呼び出しが多く重要度が高いスキーマに対して修正が加えられることが少ないため、そのような重要度が高いスキーマを使用するWebAPI利用プログラム7は、安定動作が可能となる。
図2は、API管理装置のブロック図である。次に、図2を参照して、API管理装置100について詳細に説明する。API管理装置100は、API呼出ログ格納部101、API定義ファイル格納部102、API管理部103、スキーマ抽出部104、個別算出式生成部105、階層構造判定部106、伝搬部107、重要度算出部108及び報知部109を有する。
API呼出ログ格納部101は、API管理装置100が取得したWebAPI呼出ログ4を格納する。上述したように、WebAPI呼出ログ4には、WebAPI利用プログラム6及び7による各API定義に対する呼び出し履歴が含まれる。
API定義ファイル格納部102は、API管理装置100がファイル2から取得した図3Aに示すようなAPI定義ファイル200が格納される。図3Aは、API定義ファイルの一例を示す図である。API定義ファイル200は、API定義が格納される領域121、スキーマ定義が格納される領域122及び領域123を有する。
図3Bは、API定義ファイルのシンタックスの一例を示す図である。図3Bに示すシンタックス125は、API定義ファイル200を記述したプログラムの一部である。シンタックス125における「paths」が領域121にあたり、複数のAPI定義を含む。また、「definitions」が領域122にあたり複数のスキーマ定義を含む。そして、「paths」に含まれる各API定義において、各API定義が利用するスキーマ定義が指定される。例えば、「paths」の中の行126により行127に記載された「pet」というスキーマ定義が呼びされる。
図4は、API定義ファイルにおけるAPI定義及びスキーマ定義を模式的に表した図である。例えば、API定義ファイル200の領域121には、複数のAPI定義201が格納される。ここでは、API定義ファイル200に含まれる6つのAPI定義201により示されるAPIをそれぞれAPI#1〜#6と表す。
また、API定義ファイル200の領域122には、複数のスキーマ定義210が格納される。ここでは、API定義ファイル200に含まれるスキーマ定義210で表される各スキーマを、スキーマ#A〜#C、#a〜#c、並びに、#α及びβと表す。そして、図4において、重ねられたスキーマ定義210は、上に重なるスキーマ定義210で表されるスキーマが下のスキーマ定義210で表されるスキーマにおいて利用されることを表す。例えば、スキーマ#Aは、スキーマ#aを利用する。
また、各API定義201は、そのAPIが利用するスキーマのスキーマ定義210を含む。例えば、API#1は、スキーマ#A及び#bを利用する。以下の説明では、この図4に模式的に示したAPI定義201を例に説明する。
API管理部103は、WebAPIで利用されるAPI定義ファイル200をAPI定義ファイル格納部102から取得する。次に、API管理部103は、API定義ファイル200から、WebAPIで使用されるAPI定義201を抽出する。そして、API管理部103は、抽出した各API定義201で示されるそれぞれのAPIを項目とする図5に示すAPI管理テーブル221を生成する。図5は、API管理テーブルの一例を示す図である。ここでは、API管理部103は、API管理テーブル221にAPIの識別情報としてAPI名であるAPI#1〜#6を登録する。
さらに、API管理部103は、各API#1〜#6のそれぞれの呼び出し回数を表す変数をAPI管理テーブル221に設定する。ここでは、API#1〜#6のそれぞれの呼び出し回数について、x、y、z、s、t、uを変数として設定する。
その後、API管理部103は、API呼出ログ格納部101に格納されたAPI呼出ログ4を解析して各APIの呼び出し回数を取得する。そして、API管理部103は、API管理テーブル221にAPI#1〜#6のそれぞれの呼び出し回数を登録する。
スキーマ抽出部104は、WebAPIで利用されるAPI定義ファイル200をAPI定義ファイル格納部102から取得する。次に、スキーマ抽出部104は、API定義ファイル200から、API#1〜#6のそれぞれで使用されるスキーマ定義210を抽出する。そして、スキーマ抽出部104は、API定義201の識別情報であるAPI#1〜#6と抽出した各スキーマ定義210で示されるそれぞれのスキーマの識別情報を対応付ける図6に示す利用スキーマ対応テーブル222を生成する。図6は、利用スキーマ対応テーブルの一例を表す図である。例えば、API管理部103は、API#1に、スキーマ#A及び#bを対応付けて利用スキーマ対応テーブル222に登録する。
階層構造判定部106は、WebAPIで利用されるAPI定義ファイル200をAPI定義ファイル格納部102から取得する。次に、階層構造判定部106は、API定義ファイル200から、API定義ファイル200で使用される全てのスキーマ定義210をそれぞれ抽出する。そして、階層構造判定部106は、各スキーマ定義210で表されるそれぞれのスキーマの識別情報毎の情報を表す図7に示す階層構造テーブル223を生成する。図7は、階層構造テーブルの一例の図である。
次に、階層構造判定部106は、階層構造テーブル223に登録したスキーマの中からスキーマを1つ選択する。そして、階層構造判定部106は、選択したスキーマのスキーマ定義210を解析してそのスキーマが下位スキーマを参照するか否かを判定する。
下位スキーマを参照しない場合、階層構造判定部106は、下位スキーマの不存在を示す値を、階層構造テーブル223における選択したスキーマの下位スキーマを表す項目に登録する。ここでは、階層構造判定部106は、下位スキーマの不存在を表す値として、ハイフン(−)を登録する。
これに対して、下位スキーマを参照する場合、階層構造判定部106は、その参照される下位スキーマの識別情報を、階層構造テーブル223における選択したスキーマの下位スキーマを表す項目に登録する。階層構造判定部106は、階層構造テーブル223に登録した全てのスキーマに対して下位スキーマの判定を実行する。この階層構造判定部106により判定される上位スキーマによる下位スキーマの参照を表す関係が、「参照関係」の一例にあたる。
個別算出式生成部105は、APIによる各スキーマの利用状況から、APIの呼び出し回数に応じた各スキーマの呼び出し回数を求める個別算出式を生成する。以下に、個別算出式生成部105による個別算出式の生成の詳細を説明する。
個別算出式生成部105は、利用スキーマ対応テーブル222をスキーマ抽出部104から取得する。また、個別算出式生成部105は、API管理テーブル221からAPI#1〜#6のそれぞれの呼び出し回数を表す変数を取得する。
次に、個別算出式生成部105は、利用スキーマ対応テーブル222に登録されたAPIの中から1つAPIを選択する。次に、個別算出式生成部105は、選択したAPIが利用するスキーマの呼び出し回数を表す式に、選択したAPIの呼び出し回数を表す変数を加算する。個別算出式生成部105は、利用スキーマ対応テーブル222に登録された全てのAPIについて、利用するスキーマの呼び出し回数を表す式への変数の加算を繰り返す。これにより、個別算出式生成部105は、全てのスキーマ#A〜#C、#a〜#c、並びに、#α及びβのそれぞれの呼び出し回数を表す個別算出式を生成する。
例えば、スキーマ#AはAPI#1及びAPI#3で利用されるため、個別算出式生成部105は、API#1の呼び出し回数を表す変数xとAPI#3の呼び出し回数を表す変数zを加算したx+zをスキーマ#Aの個別算出式とする。
個別算出式生成部105は、スキーマ#A〜#C、#a〜#c、並びに、#α及びβのそれぞれの個別算出式を伝搬部107へ出力する。この個別算出式生成部105が、「呼出関係抽出部」の一例にあたる。また、各APIとそのAPIから呼び出されるスキーマとの対応関係が、「各APIに対する各前記スキーマの呼び出し関係」の一例にあたる。
伝搬部107は、各スキーマ#A〜#C、#a〜#c、並びに、#α及びβの個別算出式の入力を個別算出式生成部105から受ける。また、伝搬部107は、階層構造テーブル223を階層構造判定部106から取得する。そして、伝搬部107は、階層構造テーブル223の各スキーマに未伝搬フラグを設定する。
伝搬部107は、階層構造テーブル223に登録されたスキーマ#A〜#C、#a〜#c、並びに、#α及びβの中から、上位のスキーマが存在しないスキーマ又は上位のスキーマが全て未伝搬でないスキーマを1つ選択する。ここで、伝搬部107は、階層構造テーブル223の未伝搬フラグにより各スキーマが未伝搬か否かを判定する。
次に、伝搬部107は、選択したスキーマの伝搬後の読み出し回数を求める式、すなわち、個別算出式に上位のスキーマから伝搬された個別算出式を加算した式を、下位のスキーマの読み出し回数を求める式に伝搬させて加算する。ここで、いずれのスキーマにおいても、上位のスキーマからの式の伝搬が行われる前の読み出し回数を求める式は、個別算出式である。その後、伝搬部107は、選択したスキーマの階層構造テーブル223における未伝搬フラグを削除する。伝搬部107は、個別算出式の伝搬を上位のスキーマが存在しないスキーマ又は上位のスキーマが全て未伝搬でないスキーマがなくなるまで繰り返し、全てのスキーマ#A〜#C、#a〜#c、並びに、#α及びβに個別算出式を伝搬させる。
伝搬部107は、加算結果がスキーマの実際の呼び出し回数を表す式であることから、算出した各加算結果をスキーマ#A〜#C、#a〜#c、並びに、#α及びβのそれぞれの重要度の算出式とする。そして、伝搬部107は、スキーマ#A〜#C、#a〜#c、並びに、#α及びβの識別情報と重要度の算出式との対応を表す図8に示す重要度テーブル224を生成する。図8は、重要度テーブルの一例を表す図である。この伝搬部107が、「呼出関係抽出部」の一例にあたる。そして、各スキーマの呼び出し回数を表す式が、「各APIによる上位スキーマの呼び出しに連動する下位スキーマの呼び出しの関係性」の一例にあたる。
重要度算出部108は、重要度テーブル224を伝搬部107から取得する。また、重要度算出部108は、API管理部103が保持するAPI管理テーブル221からAPI#1〜#6のそれぞれの呼び出し回数及びその変数を取得する。
次に、重要度算出部108は、取得した呼び出し回数を重要度テーブル224に登録された重要度の算出式に代入して、スキーマ#A〜#C、#a〜#c、並びに、#α及びβのそれぞれの重要度を求める。その後、重要度算出部108は、スキーマ#A〜#C、#a〜#c、並びに、#α及びβのそれぞれの重要度を重要度テーブル224に登録する。この重要度算出部108が、「呼出回数取得部」の一例にあたる。
ここで、図9〜図11を参照して、スキーマ#A〜#C、#a〜#c、並びに、#α及びβの重要度について説明する。図9は、API定義から直接呼び出された回数を表す図である。図10は、直接及び間接的に呼び出し元となるAPIを表す図である。図11は、実施例に係るAPI管理装置により算出される各スキーマの重要度を表す図である。
スキーマ#A〜#C、#a〜#c、並びに、#α及びβがそれぞれ直接APIから呼び出される回数を考えた場合、スキーマ#A〜#C、#a〜#c、並びに、#α及びβの呼び出し回数は図9に示す値となる。この値を用いた大小は、スキーマ#C>スキーマ#b>スキーマ#A>スキーマ#B=スキーマ#α>スキーマ#c>スキーマ#a>スキーマ#βと表される。しかし、この値は個別算出式を用いて算出した呼び出し回数にあたり、この値には上位スキーマによる呼び出しが考慮されていない。そのため、上位のスキーマから呼び出される可能性があるスキーマの重要度が低く評価されてしまう。
また、API定義201及びスキーマ定義210に基づく呼び出し関係を考えた場合、スキーマ#A〜#C、#a〜#c、並びに、#α及びβを直接及び間接的な呼び出し元となるAPIの重複を許した合計数は、図10に示す値となる。図10では、各スキーマの脇に呼び出し元となるAPI定義201を重複を許して表示し、さらにその合計数を示した。この値を用いた大小は、スキーマ#β>スキーマ#c=スキーマ#α>スキーマ#a=スキーマ#b>スキーマ#A=スキーマ#C>スキーマ#Bと表される。しかし、この値には実際の呼び出し回数が考慮されていない。そのため実際には多く利用されたスキーマの重要度が低く評価されてしまう。
そこで、本実施例に係るAPI管理装置100では、直接APIから呼び出される回数にAPI定義201及びスキーマ定義210に基づく呼び出し関係を加味して、実際の呼び出し回数を求める。その場合の値は、図11に示すようなる。この場合、上位スキーマからの呼び出しも考慮した、スキーマ#A〜#C、#a〜#c、並びに、#α及びβがそれぞれの実際の呼び出し回数を求めることができる。これにより、各スキーマの利用状態に応じた重要度を適切に評価することが可能となる。
図2に戻って説明を続ける。報知部109は、重要度算出部108が有する重要度テーブル224を参照して、スキーマ#A〜#C、#a〜#c、並びに、#α及びβのそれぞれの重要度を取得する。そして、報知部109は、スキーマ#A〜#C、#a〜#c、並びに、#α及びβのそれぞれの重要度をモニタなどに表示することで、WebAPI提供者P1などに報知する。また、報知部109は、スキーマ#A〜#C、#a〜#c、並びに、#α及びβのそれぞれの重要度が示されたOASを提供するファイル3を生成する。
図12は、各スキーマの重要度の第1の報知例を表す図である。報知部109は、例えば、WebAPI提供者P1がWebAPIに修正を加える際に、図12に示すように変更の対象とされたスキーマの重要度が高い場合に影響範囲が大きいことを表す警告を通知する。図12では、「pet」という名のスキーマの記述301が、WebAPI提供者P1により記述302へ変更される。このとき、報知部109は、変更対象のスキーマである「pet」の重要度を重要度テーブル224から取得する。そして、報知部109は、その重要度が重要度テーブル224に登録された全てのスキーマの重要度の上から所定数の範囲に入っていた場合に、WebAPI提供者P1の作業用端末のモニタにメッセージ303を表示する。この場合、報知部109は、メッセージ303として、重要度が高いことを表す警告文とともに、各スキーマの重要度を並べて表示する。
これにより、WebAPI提供者P1は、そのスキーマの変更の影響範囲が大きいため、その変更の回避が推奨されることを確認できるとともに、影響の少ないスキーマを確認することができ、代替となる他の影響の少ないスキーマを選択することが可能となる。このメッセージ303は、他にも、WebAPI利用者P2がWebAPIを利用する際に表示しても良い。
図13は、各スキーマの重要度の第2の報知例を表す図である。報知部109は、例えば図13に示すような重要度表示320をモニタに表示するなどして、WebAPI提供者P1やWebAPI利用者P2に提供する。重要度表示320に示すように、報知部109は、スキーマの階層構造を有効グラフで表現する。この場合、報知部109は、各スキーマを有効グラフにおけるノードとして表す。さらに、報知部109は、重要度を各ノードの大きさで表す。
これにより、報知部109は、変更時の影響範囲が大きいスキーマをWebAPI提供者P1やWebAPI利用者P2に提供する。WebAPI提供者P1及びWebAPI利用者P2は、WebAPIに含まれる各スキーマの変更による影響範囲を視認でき、容易に影響範囲を把握することができる。また、WebAPI提供者P1及びWebAPI利用者P2は、影響の少ないスキーマを確認することができ、代替となる他の影響の少ないスキーマを選択することが可能となる。
図14は、各スキーマの重要度の第3の報知例を表す図である。報知部109は、例えば、WebAPI利用者P2がWebAPIを利用する際に、図14に示すように、モニタに表示されたWebAPIを記述したシンタックス330にスキーマの重要度に応じた表示を加える。例えば、報知部109は、各スキーマの重要度を重要度テーブル224から取得する。そして、報知部109は、重要度に応じて、重要度が高い方から低い方へ赤から青に段階的に色が変わるように、シンタックス330における各スキーマを表す記述に配色を行う。さらに、報知部109は、各色の意味を表す配色情報333をモニタに表示させる。例えば、記述331で指定されるスキーマの重要度が高い場合に、報知部109は、記述331を赤色にする。また、例えば、記述331で指定されるスキーマの重要度が低い場合に、報知部109は、記述332を青色にする。さらに、報知部109は、赤色の重要度が高く、青色の重要度が低いことを表す配色情報333をモニタに表示させる。
これにより、報知部109は、重要度が低いスキーマの変更される可能性が高いことを報知する。WebAPI利用者P2は、各スキーマの重要度によりそれぞれのスキーマの変更される可能性の高低を確認することができる。これにより、WebAP利用者P2は、変更される可能性が低いスキーマを用いて開発を行うことができ、安定したプログラムを開発することが可能となる。この表示は、他にも、WebAPI提供者P1がWebAPIを修正する際に表示しても良い。
次に、図15を参照して、実施例に係るAPI管理装置100によるスキーマ重要度決定処理の流れについて説明する。図15は、実施例に係るAPI管理装置によるスキーマ重要度決定処理のフローチャートである。
API管理部103は、API定義ファイル200をAPI定義ファイル格納部102から取得する。次に、API管理部103は、API定義ファイル200から、WebAPIで使用されるAPI定義201を抽出する。そして、API管理部103は、抽出した各API定義201で示されるそれぞれのAPIを項目とするAPI管理テーブル221を生成する。さらに、API管理部103は、各API定義201に呼び出し回数を表す変数を割り当てる(ステップS1)。
スキーマ抽出部104は、API定義ファイル200をAPI定義ファイル格納部102から取得する。次に、スキーマ抽出部104は、API定義ファイル200に含まれるスキーマ定義210から各API定義ファイル200で使用されるスキーマを抽出する(ステップS2)。そして、スキーマ抽出部104は、利用スキーマ対応テーブル222を生成する。
階層構造判定部106は、API定義ファイル200をAPI定義ファイル格納部102から取得する。次に、階層構造判定部106は、API定義ファイル200から、API定義ファイル200で使用される全てのスキーマ定義210を個別抽出する(ステップS3)。そして、階層構造判定部106は、階層構造テーブル223を生成する。
次に、階層構造判定部106は、階層構造テーブル223に登録したスキーマの中から下位スキーマを未抽出のスキーマを1つ選択する(ステップS4)。
次に、階層構造判定部106は、選択したスキーマが下位スキーマを参照するか否かを判定する(ステップS5)。
選択したスキーマが下位スキーマを参照する場合(ステップS5:肯定)、階層構造判定部106は、その参照される下位スキーマを階層構造テーブル223に登録する(ステップS6)。
これに対して、選択したスキーマが下位スキーマを参照しない場合(ステップS5:否定)、階層構造判定部106は、下位スキーマの不存在を示す値を階層構造テーブル223に登録する(ステップS7)。
次に、階層構造判定部106は、下位スキーマが未抽出のスキーマがないか否かを判定する(ステップS8)。下位スキーマが未抽出のスキーマが残っている場合(ステップS8:否定)、階層構造判定部106は、ステップS4へ戻る。
これに対して、下位スキーマが未抽出のスキーマがない場合(ステップS8:肯定)、個別算出式生成部105は、利用スキーマ対応テーブル222をスキーマ抽出部104から取得する。また、個別算出式生成部105は、API管理テーブル221から各APIのそれぞれの呼び出し回数を表す変数を取得する。次に、個別算出式生成部105は、利用スキーマ対応テーブル222に登録されたAPIの中から1つAPIを選択する(ステップS9)。
次に、個別算出式生成部105は、選択したAPIが利用するスキーマの呼び出し回数を表す式に、選択したAPIの呼び出し回数を表す変数を加算する(ステップS10)。
次に、個別算出式生成部105は、全てのAPIを用いた個別算出式の生成処理が終了したか否かを判定する(ステップS11)。個別算出式の生成に用いていないAPIが残っている場合(ステップS11:否定)、個別算出式生成部105は、ステップS9へ戻る。
これに対して、全てのAPIを用いた個別算出式の生成処理が終了した場合(ステップS11:肯定)、伝搬部107は、個別算出式の入力を個別算出式生成部105から取得する。また、伝搬部107は、階層構造テーブル223を階層構造判定部106から取得する。そして、伝搬部107は、階層構造テーブル223の各スキーマに未伝搬フラグを設定する(ステップS12)。
次に、伝搬部107は、階層構造テーブル223に登録されたスキーマの中から、上位のスキーマが存在しないスキーマ又は上位のスキーマが全て未伝搬でないスキーマを1つ選択する(ステップS13)。
次に、伝搬部107は、選択したスキーマの呼び出し回数を求める式を下位のスキーマに伝搬させて、下位のスキーマの呼び出し回数を求める式に加算する(ステップS14)。
その後、伝搬部107は、選択したスキーマの階層構造テーブル223における未伝搬フラグを削除する(ステップS15)。
伝搬部107は、個別算出式の伝搬を上位のスキーマが存在しないスキーマ又は上位のスキーマが全て未伝搬でないスキーマがないという選択条件に一致するスキーマが存在するか否かを判定する(ステップS16)。選択条件に一致するスキーマが残っている場合(ステップS16:肯定)、伝搬部107は、ステップS13へ戻る。
これに対して、選択条件に一致するスキーマが存在しない場合(ステップS16:否定)、重要度算出部108は、重要度テーブル224を伝搬部107から取得する。また、重要度算出部108は、API管理部103が保持するAPI管理テーブル221からAPIのそれぞれの呼び出し回数を取得する(ステップS17)。
次に、重要度算出部108は、取得した呼び出し回数を重要度テーブル224に登録された重要度の算出式に代入して各スキーマの重要度を算出する(ステップS18)。その後、重要度算出部108は、各スキーマの重要度を重要度テーブル224に登録する。
報知部109は、重要度テーブル224を重要度算出部108から取得する。その後、報知部109は、各スキーマの重要度に応じた報知を実行する(ステップS19)。
以上に説明したように、本実施例に係るAPI管理装置は、WebAPIに含まれる各APIの呼び出し回数、並びに、API定義及びスキーマ定義を用いて各スキーマの実際の呼び出し回数に応じた重要度を求める。そして、API管理装置は、求めた重要度をWebAPIの提供者及び利用者に通知する。この場合、APIの呼び出し履歴をログとして保持すればよく、スキーマ毎の呼び出し履歴を保持しなくてもよいため、スキーマを階層化した場合にもログの記録量を少なく抑えることができる。そのため、ログの検索処理の短縮が可能となり、各スキーマの利用頻度の算出が容易に行え、確度の高い重要度を容易に求めることができる。そして、確度の高い重要度に応じた報知を行うことで、各スキーマの変更による影響範囲を通知することができ、修正による影響を抑えた適切なWebAPIの提供や、変更の可能性が少ないスキーマを用いたWebAPIの利用が可能となる。したがって、本実施例に係るAPI管理装置を用いることで、効率的な開発環境を整えることが可能となる。
100 API管理装置
101 API呼出ログ格納部
102 API定義ファイル格納部
103 API管理部
104 スキーマ抽出部
105 個別算出式生成部
106 階層構造判定部
107 伝搬部
108 重要度算出部
109 報知部
P1 WebAPI提供者
P2,P3 WebAPI利用者

Claims (8)

  1. 1つ又は複数のスキーマ定義を呼び出す複数のAPI定義を有するWebAPIにおける各前記スキーマ定義から各前記スキーマ定義で示される各スキーマにおける上位スキーマと下位スキーマとの参照関係を抽出し、
    前記API定義から各前記API定義で示される各APIに対する各前記スキーマの呼び出し関係を抽出し、
    前記参照関係及び前記呼び出し関係を基に、各前記APIによる前記上位スキーマの呼び出しに連動する前記下位スキーマの呼び出しの関係性を求め、
    各前記APIの呼び出し回数と前記関係性に基づいて、各前記スキーマの呼び出し回数を算出する
    処理をコンピュータに実行させることを特徴とする管理プログラム。
  2. 前記関係性は、各前記APIが呼び出された場合に、各前記APIから前記上位スキーマを介して呼び出される前記下位スキーマを示し、
    各前記APIから直接呼び出される回数及び前記下位スキーマとして呼び出される回数を合計した値を各前記スキーマの前記呼び出し回数とする
    処理をコンピュータに実行させることを特徴とする請求項1に記載の管理プログラム。
  3. 各前記スキーマの呼び出し回数が多いほど高くなるように重要度を設定し、前記重要度を報知する処理をコンピュータにさらに実行させることを特徴とする請求項1又は2に記載の管理プログラム。
  4. 前記WebAPIにおける特定のスキーマが修正される場合に、前記特定のスキーマの重要度を報知する処理をコンピュータに実行させることを特徴とする請求項3に記載の管理プログラム。
  5. 前記重要度が高いほど表示サイズが大きくなるように、前記WebAPIに含まれる各前記スキーマを表示装置に表示させる処理をコンピュータに実行させることを特徴とする請求項3に記載の管理プログラム。
  6. 前記WebAPIを表すプログラムを表示する場合に、前記重要度に応じた色付けを前記プログラム内で記述される前記スキーマ定義毎に行う処理をコンピュータに実行させることを特徴とする請求項3に記載の管理プログラム。
  7. 1つ又は複数のスキーマ定義を呼び出す複数のAPI定義を有するWebAPIにおける各前記スキーマ定義から各前記スキーマ定義で示される各スキーマにおける上位スキーマと下位スキーマとの参照関係を抽出し、
    前記API定義から各前記API定義で示される各APIに対する各前記スキーマの呼び出し関係を抽出し、
    前記参照関係及び前記呼び出し関係を基に、各前記APIによる前記上位スキーマの呼び出しに連動する前記下位スキーマの呼び出しの関係性を求め、
    各前記APIの呼び出し回数と前記関係性に基づいて、各前記スキーマの呼び出し回数を算出する
    ことを特徴とする管理方法。
  8. 1つ又は複数のスキーマ定義を呼び出す複数のAPI定義を有するWebAPIにおける各前記スキーマ定義から各前記スキーマ定義で示される各スキーマにおける上位スキーマと下位スキーマとの参照関係を抽出する階層構造判定部と、
    前記API定義から各前記API定義で示される各APIに対する各前記スキーマの呼び出し関係を抽出する呼出関係抽出部と、
    前記参照関係及び前記呼び出し関係を基に、各前記APIによる前記上位スキーマの呼び出しに連動する前記下位スキーマの呼び出しの関係性を求める関係性取得部と、
    各前記APIの呼び出し回数と前記関係性に基づいて、各前記スキーマの呼び出し回数を算出する呼出回数算出部と
    を備えたことを特徴とする管理装置。
JP2020084146A 2020-05-12 2020-05-12 管理プログラム、管理方法及び管理装置 Pending JP2021179748A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2020084146A JP2021179748A (ja) 2020-05-12 2020-05-12 管理プログラム、管理方法及び管理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020084146A JP2021179748A (ja) 2020-05-12 2020-05-12 管理プログラム、管理方法及び管理装置

Publications (1)

Publication Number Publication Date
JP2021179748A true JP2021179748A (ja) 2021-11-18

Family

ID=78510335

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020084146A Pending JP2021179748A (ja) 2020-05-12 2020-05-12 管理プログラム、管理方法及び管理装置

Country Status (1)

Country Link
JP (1) JP2021179748A (ja)

Similar Documents

Publication Publication Date Title
AU2018272840B2 (en) Automated dependency analyzer for heterogeneously programmed data processing system
CN107704265B (zh) 一种面向业务流可配置的规则生成方法
CN107644323B (zh) 一种面向业务流的智能审核系统
CN110928772B (zh) 一种测试方法及装置
KR101644418B1 (ko) 데이터 요소 간의 관계의 시각화 및 데이터 요소 속성의 그래픽 표현
CN105511873B (zh) 用户界面控件展示方法及装置
Martin-Lopez et al. Specification and automated analysis of inter-parameter dependencies in web APIs
CN108762743B (zh) 一种数据表操作代码生成方法及装置
US10489024B2 (en) UI rendering based on adaptive label text infrastructure
CN110688118B (zh) 一种网页优化方法及装置
JP6205512B2 (ja) ルール管理支援装置、およびルール管理支援方法
CN106484389A (zh) 动作流分段管理
US20240061993A1 (en) Multi-component abstract association and fusion method and apparatus in page design
JP6692281B2 (ja) テストケース生成装置、及びテストケース生成方法
JP2009064124A (ja) 性能データ収集・表示システム、性能データ表示装置、そのプログラム
US11947441B2 (en) Visual testing of implemented product code from a codified user experience design
JP2021179748A (ja) 管理プログラム、管理方法及び管理装置
JP2006277282A (ja) モデル評価解析システムおよびモデル評価解析プログラム
CN113010758A (zh) 关联网络知识图谱可视化组件和方法
JP2005122398A (ja) 動的文書生成プログラム、その記録媒体、動的文書生成装置、及び動的文書生成方法
US11340918B2 (en) Knowledge engine auto-generation of guided flow experience
JP7391740B2 (ja) 影響特定支援装置及び影響特定支援方法
JP4307122B2 (ja) ワークフロー処理方法及びプログラム
JP2013065077A (ja) 保険料算出システム、保険料算出装置及びプログラム
Loth Enhancing ProMoEE and DyVProMo with Additional Features to Foster Empirical Studies in the Context of Process Models Comprehension

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230209

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240213

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240227