(57)【要約】【課題】固定的な判定規則を予め用意することなく設計ガイドラインへの準拠性を判定できる準拠性判定装置を提供する。【解決手段】設計ガイドラインで示された規定に準拠したアプリケーションプログラミングインターフェース仕様が記憶されたＡＰＩ仕様記憶部１０と、アプリケーションプログラミングインターフェース仕様の各項目を説明する文字列と、当該文字列に対応するラベルとを組みにした学習データを抽出する学習データ抽出部２０と、学習データを取得し、外部から入力されるＡＰＩ仕様情報の各項目が設計ガイドラインに準拠するか否かを判定する識別関数を、機械学習によって生成する識別関数生成部３０と、ＡＰＩ仕様情報から設計ガイドラインの項目ごとに対応する文字列とラベルを組みにした試験データを抽出し、当該試験データを識別関数に入力し、当該試験データが設計ガイドラインに準拠しているか否かを判定する準拠性判定部４０とを備える。【選択図】図１
2020122999.tif 000002
【特許請求の範囲】
【請求項１】
設計ガイドラインで示された規定に準拠したアプリケーションプログラミングインターフェース仕様が記憶されたＡＰＩ仕様記憶部と、
前記アプリケーションプログラミングインターフェース仕様の各項目を説明する文字列と、当該文字列に対応するラベルとを組みにした学習データを抽出する学習データ抽出部と、
前記学習データを取得し、外部から入力されるＡＰＩ仕様情報の各項目が前記設計ガイドラインに準拠するか否かを判定する識別関数を、機械学習によって生成する識別関数生成部と、
前記ＡＰＩ仕様情報から前記設計ガイドラインの項目ごとに対応する前記文字列と前記ラベルを組みにした試験データを抽出し、当該試験データを前記識別関数に入力し、当該試験データが前記設計ガイドラインに準拠しているか否かを判定する準拠性判定部と
を備えることを特徴とする準拠性判定装置。
【請求項２】
前記設計ガイドラインに準拠していないと判定された前記ＡＰＩ仕様情報を、前記識別関数を用いて、前記設計ガイドラインに準拠する仕様に修正する仕様修正部を
備えることを特徴とする請求項１に記載の準拠性判定装置。
【請求項３】
前記設計ガイドラインの各項目と同一の規定を有する他の設計ガイドラインに準拠する複数の前記アプリケーションプログラミングインターフェース仕様を、ネットワークを介して外部から収集して前記学習データ抽出部に出力するＡＰＩ情報収集部を
備えることを特徴とする請求項１又は２に記載の準拠性判定装置。
【請求項４】
準拠性判定装置が実行する準拠性判定方法であって、
アプリケーションプログラミングインターフェース仕様の各項目を説明する文字列と、当該文字列に対応するラベルとを組みにした学習データを抽出する学習データ抽出ステップと、
前記学習データを取得し、外部から入力されるＡＰＩ仕様情報の各項目が設計ガイドラインに準拠するか否かを判定する識別関数を、機械学習によって生成する識別関数生成ステップと、
前記ＡＰＩ仕様情報から前記設計ガイドラインの項目ごとに対応する前記文字列と前記ラベルを組みにした試験データを抽出し、当該試験データを前記識別関数に入力し、当該試験データが前記設計ガイドラインに準拠しているか否かを判定するする準拠性判定ステップと
を行うことを特徴とする準拠性判定方法。
【請求項５】
前記設計ガイドラインに準拠していないと判定された前記ＡＰＩ仕様情報を、前記識別関数を用いて、前記設計ガイドラインに準拠する仕様に修正する仕様修正ステップを
行うことを特徴とする請求項４に記載の準拠性判定方法。
【請求項６】
前記設計ガイドラインの各項目と同一の項目を有する他の設計ガイドラインに準拠する複数の前記アプリケーションプログラミングインターフェース仕様を、ネットワークを介して外部から収集するＡＰＩ情報収集ステップを
行うことを特徴とする請求項４又は５に記載の準拠性判定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、設計仕様書がルールに準拠しているか否かを判定する技術に関する。
【背景技術】
【０００２】
近年、様々なネットワークサービスがアプリケーションプログラミングインターフェース（以降、ＡＰＩ）という形で提供されている。ＡＰＩとは、データのやり取りを通じて、他のシステムの情報や機能等を利用する仕組みである。
【０００３】
よって、新たなネットワークサービスを構築する際は、ＡＰＩ利用を容易にするために、ＡＰＩ仕様は統一的な指針（ＡＰＩ設計指針）に基づいて設計されることが望ましい。そこで、各ＡＰＩ仕様が設計指針（以降、設計ガイドライン）に準拠しているか否かを判定する必要がある。
【０００４】
設計ガイドラインへの準拠性を判定するシステムとして、ＡＰＩ実装後に試験するツール（非特許文献１）が知られている。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】［平成３１年１月１６日検索］、Postman Makes API Development Simple、インターネット＜URL: http://www.getpostman.com/＞
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、非特許文献１に開示された技術では、ＡＰＩ仕様内のある値が設計ガイドラインで示された規定に含まれることは判定できるが、その値が設計ガイドラインで示された意味で使用されているかを判定することができない。つまり、ＡＰＩ仕様書の表現の揺らぎに対応することができない。要するに、固定的な判定規則に基づいて判定するため正確な判定ができないという課題がある。
【０００７】
本発明は、この課題に鑑みてなされたものであり、固定的な判定規則を予め用意することなく設計ガイドラインへの準拠性を判定できる準拠性判定装置及びその方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一態様に係る準拠性判定装置は、設計ガイドラインで示された規定に準拠したアプリケーションプログラミングインターフェース仕様が記憶されたＡＰＩ仕様記憶部と、前記アプリケーションプログラミングインターフェース仕様の各項目を説明する文字列と、当該文字列に対応するラベルとを組みにした学習データを抽出する学習データ抽出部と、前記学習データを取得し、外部から入力されるＡＰＩ仕様情報の各項目が前記設計ガイドラインに準拠するか否かを判定する識別関数を、機械学習によって生成する識別関数生成部と、前記ＡＰＩ仕様情報から前記設計ガイドラインの項目ごとに対応する前記文字列と前記ラベルを組みにした試験データを抽出し、当該試験データを前記識別関数に入力し、当該試験データが前記設計ガイドラインに準拠しているか否かを判定する準拠性判定部とを備えることを要旨とする。
【０００９】
また、本発明の一態様に係る準拠性判定方法は、上記の準拠性判定装置が実行する準拠性判定方法であって、アプリケーションプログラミングインターフェース仕様の各項目を説明する文字列と、当該文字列に対応するラベルとを組みにした学習データを抽出する学習データ抽出ステップと、前記学習データを取得し、外部から入力されるＡＰＩ仕様情報の各項目が前記設計ガイドラインに準拠するか否かを判定する識別関数を、機械学習によって生成する識別関数生成ステップと、前記ＡＰＩ仕様情報から前記設計ガイドラインの項目ごとに対応する前記文字列と前記ラベルを組みにした試験データを抽出し、当該試験データを前記識別関数に入力し、当該試験データが前記設計ガイドラインに準拠しているか否かを判定するする準拠性判定ステップとを行うことを要旨とする。
【発明の効果】
【００１０】
本発明によれば、固定的な判定規則を予め用意することなく設計ガイドラインへの準拠性を判定できる準拠性判定装置及びその方法を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の第１実施形態に係る準拠性判定装置の機能構成例を示すブロック図である。
【図２】図１に示す準拠性判定装置の概略の処理手順を示すフローチャートである。
【図３】アプリケーションプログラミングインターフェースの仕様の一部の例を示す図である。
【図４】設計ガイドラインに準拠していないアプリケーションプログラミングインターフェースの仕様の一部の例を示す図である。
【図５】本発明の第２実施形態に係る準拠性判定装置の機能構成例を示すブロック図である。
【図６】図５に示す準拠性判定装置の概略の処理手順を示すフローチャートである。
【図７】本発明の第３実施形態に係る準拠性判定装置の機能構成例を示すブロック図である。
【図８】図７に示す準拠性判定装置の概略の処理手順を示すフローチャートである。
【図９】図７に示すＡＰＩ情報収集部が収集したアプリケーションプログラミングインターフェース仕様の例を示す図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施形態について図面を用いて説明する。複数の図面中同一のものに
は同じ参照符号を付し、説明は繰り返さない。
【００１３】
〔第１実施形態〕
図１は、本発明の第１実施形態に係る準拠性判定装置の機能構成例を示すブロック図である。図２は、図１に示す準拠性判定装置１００の概略の処理手順を示すフローチャートである。
【００１４】
準拠性判定装置１００は、ＡＰＩ仕様記憶部１０、学習データ抽出部２０、識別関数生成部３０、及び準拠性判定部４０を備える。各機能構成部の連携は、制御部（図示せず）によって制御される。なお、図１は、本実施形態を説明するのに必要な機能構成部のみを表記している。準拠性判定装置１００を構成するのに必要な入力部、記憶部、制御部、及び表示部等の一般的な機能構成部の表記は省略している。
【００１５】
準拠性判定装置１００は、例えば、ＲＯＭ、ＲＡＭ、ＣＰＵ等からなるコンピュータで実現することができる。各機能構成部をコンピュータによって実現する場合、各機能構成部が有すべき機能の処理内容はプログラムによって記述される。このことは、後述する他の実施形態でも同じである。
【００１６】
ＡＰＩ仕様記憶部１０には、設計ガイドラインで示された規定に準拠したアプリケーションプログラミングインターフェース（以降、ＡＰＩと略す）仕様が記憶される。ここで設計ガイドラインは、いわゆる設計指針のことであり、サーバ間でデータのやりとりをする際の共通的なデータ項目等の定義を記載したものである。
【００１７】
ＡＰＩ仕様記憶部１０は、設計ガイドラインと、当該設計ガイドラインで示された規定に準拠した一つ以上のＡＰＩ仕様書を対応付けて記憶する。ＡＰＩ仕様書は、同一の設計ガイドラインの範囲内の複数のＡＰＩ仕様書であっても良い。なお、設計ガイドラインは一つである。
【００１８】
設計ガイドラインラインの一例は、例えば“TMF630 API Design Guidelines 3.0 R17.5.1”であり、その設計ガイドラインで示された規定に準拠したＡＰＩ仕様情報の一例は、例えば“TMF629 Customer Management API REST Specification R18.0.0”である。
【００１９】
学習データ抽出部２０は、ＡＰＩ仕様書内の設計ガイドラインの各項目が関連する特定文字列（例えばSwaggerファイルにおける各規定に含まれるSummary項）と、当該文字列に対応するラベル（例えばＨＴＴＰメソッド項）とを組みにした学習データを抽出する。抽出された学習データは、例えばＲＡＭ等に記憶される。
【００２０】
学習データ抽出部２０は、ＡＰＩ仕様書の各項目を説明する文字列と、当該文字列に対応するラベルとを組みにした学習データを抽出する（図２：ステップＳ１）。ここで、ＡＰＩ仕様書の各項目の一つは、例えば表１に示す「ＨＴＴＰメソッド」のことである。また、ＡＰＩを実行した結果を表すステータスコードもＡＰＩ仕様書の各項目の一つである。
【００２１】
表１は、ＨＴＴＰメソッドの一部を示す。表１に示すものの他に例えばＨＥＡＤ等があるがそれらの表記は省略する。
【００２２】
【表１】
2020122999.tif 000003
【００２３】
表１の2列目の例えば「リソース情報の「読み出し」」は、ＧＥＴメソッドを説明する文字列の一つである。そして1列目の例えば「ＧＥＴ」は、当該文字列に対応するラベルである。
【００２４】
よって、学習データ抽出部２０は、「リソース情報の「読み出し」」の文字列と、「ＧＥＴ」のラベルを組みにした学習データを抽出する。また、ＡＰＩを実行した結果を表すステータスコードからも、文字列とラベルの組みを抽出する。その文字列は、例えば「正常応答」である。また、ステータスコードの当該文字列に対応するラベルは「２００」である。
【００２５】
表２は、ステータスコードの一部を示す。
【００２６】
【表２】
2020122999.tif 000004
【００２７】
図３は、学習データの例を示す図である。図３に示す例は、同じＨＴＴＰメソッドであるＧＥＴメソッドを利用するＡＰＩの意味を説明する文字列が“List all fruits”（図３（ａ））と“Find a pet ID”（図３（ｂ））の2つある例を示している。このようにＡＰＩ仕様の表現に揺らぎが有っても構わない。
【００２８】
識別関数生成部３０は、学習データ抽出部２０で抽出された学習データを取得し、外部から入力されるＡＰＩ仕様情報の各項目が設計ガイドラインに準拠するか否かを判定する識別関数を、機械学習によって生成する（ステップＳ２）。機械学習は、例えば周知のサポートベクターマシンを用いる。また、ナイーブベイズ法による機械学習を行っても良い。
【００２９】
機械学習によって生成された識別関数は、外部から入力されるＡＰＩ仕様情報の各項目を入力することで当該ＡＰＩ仕様情報が、設計ガイドラインに準拠しているか否かを判定する。
【００３０】
準拠性判定部４０は、外部から入力されるＡＰＩ仕様情報から設計ガイドラインの項目ごとに対応する文字列とラベルを組みにした試験データを抽出し、当該試験データを識別関数に入力し、当該試験データが設計ガイドラインに準拠しているか否かを判定する（ステップＳ３）。
【００３１】
図３に示した学習データから生成された識別関数は、外部から入力されるＡＰＩ仕様情報から抽出した試験データに例えば「ＧＥＴ」のラベルと“List all fruits”の文字列が在れば、当該ＡＰＩ仕様情報の項目を設計ガイドラインに準拠していると判定する。
【００３２】
図４は、設計ガイドラインに準拠していないＡＰＩ仕様情報の一例を示す図である。図４に示すように3行目にＧＥＴメソッドの記載がある。しかし、4行目の説明文に“Create  a pet ID”の記述がある。この説明文からは、このＡＰＩはリソース情報を新規に作成するＡＰＩであり、ＨＴＴＰメソッドはＰＯＳＴメソッドを利用すべきであると考えられる。
【００３３】
この場合、準拠性判定部４０は、「ＧＥＴ」のラベルと“Create a pet ID”の文字列からなる試験データを設計ガイドラインに準拠していないと判定する。判定結果は、例えば表示部（図示せず）に表示される。
【００３４】
以上説明したように本実施形態に係る準拠性判定装置１００は、設計ガイドラインで示された規定に準拠したＡＰＩ仕様が記憶されたＡＰＩ仕様記憶部１０と、ＡＰＩ仕様の各項目を説明する文字列と、当該文字列に対応するラベルとを組みにした学習データを抽出する学習データ抽出部２０と、学習データを取得し、外部から入力されるＡＰＩ仕様情報の各項目が設計ガイドラインに準拠するか否かを判定する識別関数を、機械学習によって生成する識別関数生成部３０と、外部から入力されるＡＰＩ仕様情報から設計ガイドラインの項目ごとに対応する文字列とラベルを組みにした試験データを抽出し、当該試験データを識別関数に入力し、当該試験データが設計ガイドラインに準拠しているか否かを判定する準拠性判定部４０とを備える。これにより、固定的な判定規則を予め用意することなく設計ガイドラインへの準拠性を判定できる準拠性判定装置及を提供することができる。
【００３５】
〔第２実施形態〕
図５は、本発明の第２実施形態に係る準拠性判定装置の機能構成例を示すブロック図である。図６は、図５に示す準拠性判定装置２００の概略の処理手順を示すフローチャートである。
【００３６】
準拠性判定装置２００は、準拠性判定装置１００（図１）に対して仕様修正部２１０を備える点で異なる。仕様修正部２１０は、準拠性判定装置１００によって設計ガイドラインに準拠していないと判定（ステップ４のＮＯ）されたＡＰＩ仕様情報を、識別関数を用いて設計ガイドラインに準拠する仕様に修正する（ステップＳ５）。
【００３７】
仕様修正部２１０は、図４に示すＡＰＩ仕様情報の項目については、ＨＴＴＰメソッドの「ＧＥＴ」を、説明文の“Create a pet ID”の記述に対応するＨＴＴＰメソッドの「ＰＯＳＴ」に修正する。識別関数を用いればＡＰＩ仕様情報に対応するＨＴＴＰメソッドの文字列を生成することができる。
【００３８】
このように本実施形態に係る準拠性判定装置２００は、設計ガイドラインに準拠していないと判定されたＡＰＩ仕様情報を、識別関数を用いて、設計ガイドラインに準拠する仕様に修正する仕様修正部２１０を備える。これにより、設計ガイドラインに準拠していないＡＰＩ設計仕様情報を準拠するように修正するので利用者の利便性を向上させることができる。
【００３９】
〔第３実施形態〕
図７は、本発明の第２実施形態に係る準拠性判定装置の機能構成例を示すブロック図である。図８は、図７に示す準拠性判定装置３００の概略の処理手順を示すフローチャートである。
【００４０】
準拠性判定装置３００は、準拠性判定装置１００（図１）及び準拠性判定装置２００（図５）に対してＡＰＩ情報収集部３１０を備える点で異なる。ＡＰＩ情報収集部３１０は、設計ガイドラインの各項目と同一の規定を有する他の設計ガイドラインに準拠する複数のＡＰＩ仕様を、ネットワークを介して外部から収集して学習データ抽出部２０に出力する（ステップＳ６）。
【００４１】
図９は、ＡＰＩ情報収集部３１０で収集されたＡＰＩ仕様の例を示す図である。図９の左から、「設計ガイドラインの項目」、「説明する文字列」、「文字列の場所」、「ラベル」、及び「ラベルの場所」である。
【００４２】
図９に示す「設計ガイドラインの項目」、「説明する文字列」、及「ラベル」の組みが学習データを構成する。「文字列の場所」及び「ラベルの場所」は、それぞれの情報が存在するＡＰＩ仕様書内の場所を表す情報であり無くても構わない。
【００４３】
ＡＰＩ情報収集部３１０は、準拠対象とする設計ガイドラインの各項目（例えば、用途に応じたＨＴＴＰメソッドの使い分け基準）に対し、同一の規定を有する他の設計ガイドラインに従う複数のＡＰＩ仕様（Swaggerファイル）あるいは当該ＡＰＩ仕様を識別するための情報（例えばＵＲＩ）を収集する。ＡＰＩ情報収集部３１０で収集された情報は、学習データ抽出部２０に出力されるので、学習データを増やすことができる。
【００４４】
このように本実施形態に係る準拠性判定装置３００は、設計ガイドラインの各項目と同一の規定を有する他の設計ガイドラインに準拠する複数のＡＰＩ仕様を、ネットワークを介して外部から収集して学習データ抽出部２０に出力する。これにより、学習データの数を増やすことができ、識別関数の精度を向上させることができる。
【００４５】
以上説明したように本実施形態に係る準拠性判定装置１００，２００，３００によれば、固定的な判定規則を予め用意することなく設計ガイドラインへの準拠性を判定できる準拠性判定装置及びその方法を提供することができる。
【００４６】
なお、準拠性判定装置３００（図７）は、準拠性判定装置１００（図１）がＡＰＩ情報収集部３１０を備える例で説明したがこの例に限られない。準拠性判定装置２００（図５）がＡＰＩ情報収集部３１０を備えるように構成しても良い。
【００４７】
このように、本発明はここでは記載していない様々な実施形態等を含むことは勿論である。したがって、本発明の技術的範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【符号の説明】
【００４８】
１００，２００，３００：準拠性判定装置
１０：ＡＰＩ仕様記憶部
２０：学習データ抽出部
３０：識別関数生成部
４０：準拠性判定部
２１０：仕様修正部
３１０：ＡＰＩ情報収集部
【図１】
2020122999.tif 000005
【図２】
2020122999.tif 000006
【図３】
2020122999.tif 000007
【図４】
2020122999.tif 000008
【図５】
2020122999.tif 000009
【図６】
2020122999.tif 000010
【図７】
2020122999.tif 000011
【図８】
2020122999.tif 000012
【図９】
2020122999.tif 000013