(57)【要約】      （修正有）【課題】ＡＰＩリクエスト−レスポンスをもとに低コストでＯＡＳ仕様書を作成できるＡＰＩ仕様書生成装置、ＡＰＩ仕様書生成方法、およびプログラムを提供する。【解決手段】ＡＰＩ仕様書生成装置１００は、ＯＡＳ仕様書を作成する際の雛形ファイル１２１をあらかじめ設定するＯＡＳ雛形設定部１１１と、ＯＡＳ仕様書で用いるパラメータ設定ロジックを記述する挿入値ファイル１２２を設定する挿入値ファイル設定部１１２と、ＡＰＩリクエストとそのレスポンスをキャプチャするＡＰＩリクエスト−レスポンスキャプチャ部１０２と、キャプチャしたＡＰＩリクエスト−レスポンスデータと、挿入値ファイルの参照結果とを雛形ファイルに反映してパラメータを設定し、設定したパラメータをもとにＯＡＳ仕様書を作成するＯＡＳ作成部１１０とを備える。【選択図】図２
2020024567.tif 000002
【特許請求の範囲】
【請求項１】
既存ＡＰＩ（Application Program Interface）の仕様を変換して標準仕様のＯＡＳ（Open API spec）仕様書を生成するＡＰＩ仕様書生成装置であって、
前記ＯＡＳ仕様書を作成する際の雛形ファイルをあらかじめ設定するＯＡＳ雛形設定部と、
前記ＯＡＳ仕様書で用いるパラメータ設定ロジックを記述する挿入値ファイルを設定する挿入値ファイル設定部と、
ＡＰＩリクエストとそのレスポンスをキャプチャするＡＰＩリクエスト−レスポンスキャプチャ部と、
キャプチャしたＡＰＩリクエスト−レスポンスデータと、前記挿入値ファイルの参照結果とを前記雛形ファイルに反映してパラメータを設定し、設定した前記パラメータをもとに前記ＯＡＳ仕様書を作成するＯＡＳ作成部と、を備える
ことを特徴とするＡＰＩ仕様書生成装置。
【請求項２】
一意にＯＡＳ仕様書へパラメータを登録するパラメータ設定辞書を格納するパラメータ設定辞書格納部をさらに備え、
前記ＯＡＳ作成部は、
キャプチャしたＡＰＩリクエスト−レスポンスデータと、前記挿入値ファイルの参照結果とを前記雛形ファイルに反映して暫定パラメータを設定するとともに、
キャプチャしたＡＰＩリクエスト−レスポンスデータと、前記パラメータ設定辞書を参照して、前記暫定パラメータを、当該暫定パラメータよりも精度の高いパラメータに設定し、設定した前記パラメータをもとに前記ＯＡＳ仕様書を作成する
ことを特徴とする請求項１に記載のＡＰＩ仕様書生成装置。
【請求項３】
アプリケーションプログラミングインタフェースを設計する際のルールを記述したＡＰＩ記述ルールを入力するＡＰＩ記述ルール入力部と、
前記ＡＰＩ記述ルールを解析してチェックポリシーを作成するＡＰＩ記述ルール解析部と、
前記チェックポリシーに基づいて前記ＡＰＩ記述ルールに準拠していることをチェックする準拠性チェック処理部と、をさらに備え、
前記ＯＡＳ作成部は、
作成した前記ＯＡＳ仕様書を前記準拠性チェック処理部に送り、
前記準拠性チェック処理部は、
前記ＯＡＳ作成部から送られた前記ＯＡＳ仕様書をもとに、前記ＡＰＩ記述ルールへの準拠性をチェックする
ことを特徴とする請求項１に記載のＡＰＩ仕様書生成装置。
【請求項４】
既存ＡＰＩの仕様を変換して標準仕様のＯＡＳ仕様書を生成するＡＰＩ仕様書生成装置が、
前記ＯＡＳ仕様書を作成する際の雛形ファイルをあらかじめ設定するステップと、
前記ＯＡＳ仕様書で用いるパラメータ設定ロジックを記述する挿入値ファイルを設定するステップと、
ＡＰＩリクエストとそのレスポンスをキャプチャするステップと、
キャプチャしたＡＰＩリクエスト−レスポンスデータと、前記挿入値ファイルの参照結果とを前記雛形ファイルに反映してパラメータを設定し、設定した前記パラメータをもとに前記ＯＡＳ仕様書を作成するステップと、を実行する
ことを特徴とするＡＰＩ仕様書生成方法。
【請求項５】
既存ＡＰＩの仕様を変換して標準仕様のＯＡＳ仕様書を生成するＡＰＩ仕様書生成装置としてのコンピュータを、
前記ＯＡＳ仕様書を作成する際の雛形ファイルをあらかじめ設定するＯＡＳ雛形設定手段、
前記ＯＡＳ仕様書で用いるパラメータ設定ロジックを記述する挿入値ファイルを設定する挿入値ファイル設定手段、
ＡＰＩリクエストとそのレスポンスをキャプチャするＡＰＩリクエスト−レスポンスキャプチャ手段、
キャプチャしたＡＰＩリクエスト−レスポンスデータと、前記挿入値ファイルの参照結果とを前記雛形ファイルに反映してパラメータを設定し、設定した前記パラメータをもとに前記ＯＡＳ仕様書を作成するＯＡＳ作成手段、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＡＰＩ仕様書生成装置、ＡＰＩ仕様書生成方法、およびプログラムに関する。
【背景技術】
【０００２】
各事業者がサービスを管理するためのＡＰＩ（Application Program Interface）をウェブ上にて提供しており、ユーザはＡＰＩを呼び出すソフトウェアを通じてサービスを構築・運用している。ＡＰＩの仕様（ＡＰＩの名称、ＵＲＬ（Uniform Resource Locator）、パラメータ等）は、各事業者が規定しており、ユーザは当該規定に従ってＡＰＩを使用する。
【０００３】
既存機能やＡＰＩ仕様をＯＡＳ（Open API spec）仕様に変換する技術として、非特許文献１，２に記載された技術がある。また、ＯＡＳを活用した関連技術には、非特許文献３〜５に記載された技術がある。
【０００４】
非特許文献１には、データベース（ＤＢ）からWeb APIをドキュメント(Open API標準)と共に自動作成するツールが記載されている。
【０００５】
非特許文献２には、ＡＰＩリクエスト−レスポンスから簡易的なＯＡＳ仕様書を自動作成するツールが記載されている。
【０００６】
非特許文献３には、存在従属グラフからSwagger仕様書の生成クラス図のようなドメインモデルからSwagger Specを作成する技術が記載されている。
【０００７】
非特許文献４には、ＡＰＩ設計書に記載されているＡＰＩ特有のパラメータ（ＡＰＩ概要、メソッド等）を解析し、Semantic的エラーを検出する技術が記載されている。
【０００８】
非特許文献５には、開発済のＡＰＩを、ＴＭＦ（TM Forum members）提供のＣＴＫ（Conformance Test Kits）に従いNewmanというツールを用いてＡＰＩリクエストを送ると、Syntax的にＴＭＦ準拠になっているかチェックするツールが記載されている。このツールは、テスト結果をhtmlやjsonファイルとして生成する。
【０００９】
ＯＡＳベースで設計／（「／」は、「および／または」、を表記する。以下同様。）開発されていない既存ＡＰＩ（以降、「既存ＡＰＩ」という)仕様を標準仕様書であるＯＡＳ形式にする場合について説明する。
図１２は、ＯＡＳ仕様書作成を説明する図であり、（ａ）はその全体構成図、（ｂ）はその動作説明図である。図１２（ａ）中、二重線で示される表記は、ＡＰＩを示す（以下、各図において同様）。図１３は、図１２の簡易ＯＡＳフォーマット作成ツールで用いるＡＰＩリクエストおよびＡＰＩレスポンスの一例を示す図である。
図１２（ａ）に示すように、ＡＰＬ（Application）サービス（以下、既存ＡＰＬという）１１と既存機能１２（既存機能Ａ１２という）との間には、インターフェースであるＲＥＳＴ（REpresentational State Transfer） ＡＰＩ１０が設けられている。なお、ＲＥＳＴ ＡＰＩ１０は、ＨＴＴＰ以外のプロトコルに対応した機能はない。
【００１０】
既存ＡＰＩからＯＡＳ仕様書を作成する場合、簡易ＯＡＳフォーマット作成ツール（図１２（ａ）の符号ａ参照）を用いて、既存ＡＰＩのリクエスト−レスポンスを解析する。例えば、図１２（ｂ）に示すＡＰＩリクエスト−レスポンス１２６（ＨＴＴＰ）を解析する。ＡＰＩリクエスト−レスポンス１２６は、図１３に示すＡＰＩリクエスト１２４およびＡＰＩレスポンス１２５からなる。
【００１１】
図１２（ｂ）の符号ｂに示すように、簡易ＯＡＳフォーマット作成ツールを用いて、機能ＡについてＯＡＳ形式のフォーマット（機能Ａ ＯＡＳフォーマット２０）を生成する。
図１２（ｂ）の符号ｃに示すように、開発者が、生成された機能Ａ ＯＡＳフォーマット２０に対してパラメータ等の修正を加えて、機能Ａ ＯＡＳ仕様書２１を作成する。
機能Ａ ＯＡＳフォーマット２０に、微修正を加えて、機能Ａ ＯＡＳ仕様書２１を作成している。
【先行技術文献】
【非特許文献】
【００１２】
【非特許文献１】API Server: データベースからREST API を超高速で自動生成,［online］,［平成３０年７月１５日検索］,インターネット 〈URL: https://www.cdata.com/jp/apiserver/〉
【非特許文献２】Swagger inspector,［online］,［平成３０年７月１５日検索］,インターネット 〈URL: https://inspector.swagger.io/builder〉
【非特許文献３】井田明男，他２名，「存在従属グラフからSWAGGER仕様書の生成」，信学技報, IEICE Technical Report KBSE2016-29(2016-11)
【非特許文献４】小俣真吾，「API記述ルールに準拠したAPI設計支援方法に関する一検討」，第14 回NWS 研究会，Oct., 2017
【非特許文献５】CTK(Compatibility Test Kit),［online］,［平成３０年７月１５日検索］,インターネット 〈URL: github.com/tmforum/CustomerManagementCTK〉
【発明の概要】
【発明が解決しようとする課題】
【００１３】
上述したように、既存のＲＥＳＴ ＡＰＩのＡＰＩリクエスト−レスポンス１２６の解析のみで簡易なＯＡＳ仕様書２１の作成は可能である。
しかしながら、（１）単純なＡＰＩリクエスト−レスポンス１２６のみの解析では、ＯＡＳの仕様を決められないパラメータ（データ型、データ範囲、値の最大値／最小値等）が存在する。例えば、データ型（“string”，“number”，“integer”，“boolean”，“array”等）の決定や値の範囲（maximum  minimum）を一意に特定してＯＡＳに反映させるのは難しく、加筆修正する必要がある。そのため、ＯＡＳ仕様書を自動生成させても、ＯＡＳ仕様書を修正する稼働が発生する。また、ＨＴＴＰ（Hypertext Transfer Protocol）以外のプロトコルに対応したＯＡＳ仕様書の自動生成技術は存在しない。
【００１４】
（２）ＡＰＩリクエスト−レスポンス１２６のデータから、どのようなロジックでＯＡＳパラメータに反映するかのルールを設定する機能は存在しない。このため、各社独自パラメータやＨＴＴＰ以外のプロトコルに対応できていない。
【００１５】
以上の理由から、非特許文献１〜５に記載された技術ついても下記の課題がある。
非特許文献１に記載の技術は、特定のＤＢから機械的にパラメータを設定可能な領域に限定した簡易なＯＡＳを作成することはできるものの、一意に特定不可なパラメータまでは設定できない。また、パラメータ設定のロジックを組むことも不可である。
【００１６】
非特許文献２に記載の技術は、パラメータを機械的に、設定可能な領域に限定した簡易なＯＡＳを作成することはできるものの、一意に特定不可なパラメータ（データ型、値の範囲等）までは設定できない。また、パラメータ設定のロジックを組むことも不可である。さらに、ＨＴＴＰのみに対応であり、他のプロトコルに対応していない。
【００１７】
非特許文献３に記載の技術は、ＡＰＩリクエスト−レスポンスの結果をもとに、Swagger Specを作成する技術については触れられていない。
【００１８】
非特許文献４に記載の技術は、ＯＡＳ仕様書の作成について手書きを前提としており、既存ＡＰＩのリクエストレスポンスを解析してＯＡＳ仕様書を自動生成する機能には触れられていない。また、非特許文献４に記載の技術は、カスタマイズ領域が特定の記述ルールに準拠しているか否かをチェックするチェックルールに限定されている。非特許文献４に記載の技術は、ＡＰＩリクエスト−レスポンスパラメータの値をもとにＯＡＳ仕様書を作成する機能については触れられていない。
【００１９】
非特許文献５に記載の技術は、特定の記述ルールのうちSyntaxエラーを検出するツールであり、非特許文献５に記載の技術は、特定のルールへの準拠性を確認するのみである。このため、非特許文献５に記載の技術では、準拠性を確認するルールのカスタマイズは難しい。また、開発済ＡＰＩのリクエスト−レスポンスの結果からSwagger Specを自動生成する技術は具備していない。
【００２０】
上記非特許文献１〜５のいずれの技術についても、ＡＰＩリクエスト−レスポンスからデータ型や値の範囲まで反映するＯＡＳ仕様書の自動生成機能は提案されていない。様々なプロトコルに対応可能なカスタマイズ性を担保した機能も述べられていない。
【００２１】
このような背景に鑑みて本発明がなされたのであり、本発明は、ＡＰＩリクエスト−レスポンスをもとに低コストでＲＥＳＴ ＡＰＩの標準仕様書であるＯＡＳ仕様書を作成できるＡＰＩ仕様書生成装置、ＡＰＩ仕様書生成方法、およびプログラムを提供することを課題とする。
【課題を解決するための手段】
【００２２】
前記した課題を解決するため、請求項１に記載の発明は、既存ＡＰＩの仕様を変換して標準仕様のＯＡＳ仕様書を生成するＡＰＩ仕様書生成装置であって、前記ＯＡＳ仕様書を作成する際の雛形ファイルをあらかじめ設定するＯＡＳ雛形設定部と、前記ＯＡＳ仕様書で用いるパラメータ設定ロジックを記述する挿入値ファイルを設定する挿入値ファイル設定部と、ＡＰＩリクエストとそのレスポンスをキャプチャするＡＰＩリクエスト−レスポンスキャプチャ部と、キャプチャしたＡＰＩリクエスト−レスポンスデータと、前記挿入値ファイルの参照結果とを前記雛形ファイルに反映してパラメータを設定し、設定した前記パラメータをもとに前記ＯＡＳ仕様書を作成するＯＡＳ作成部と、を備えることを特徴とするＡＰＩ仕様書生成装置とした。
【００２３】
また、請求項４に記載の発明は、既存ＡＰＩの仕様を変換して標準仕様のＯＡＳ仕様書を生成するＡＰＩ仕様書生成装置が、前記ＯＡＳ仕様書を作成する際の雛形ファイルをあらかじめ設定するステップと、前記ＯＡＳ仕様書で用いるパラメータ設定ロジックを記述する挿入値ファイルを設定するステップと、ＡＰＩリクエストとそのレスポンスをキャプチャするステップと、キャプチャしたＡＰＩリクエスト−レスポンスデータと、前記挿入値ファイルの参照結果とを前記雛形ファイルに反映してパラメータを設定し、設定した前記パラメータをもとに前記ＯＡＳ仕様書を作成するステップと、を実行することを特徴とするＡＰＩ仕様書生成方法とした。
【００２４】
また、請求項５に記載の発明は、既存ＡＰＩの仕様を変換して標準仕様のＯＡＳ仕様書を生成するＡＰＩ仕様書生成装置としてのコンピュータを、前記ＯＡＳ仕様書を作成する際の雛形ファイルをあらかじめ設定するＯＡＳ雛形設定手段、前記ＯＡＳ仕様書で用いるパラメータ設定ロジックを記述する挿入値ファイルを設定する挿入値ファイル設定手段、ＡＰＩリクエストとそのレスポンスをキャプチャするＡＰＩリクエスト−レスポンスキャプチャ手段、キャプチャしたＡＰＩリクエスト−レスポンスデータと、前記挿入値ファイルの参照結果とを前記雛形ファイルに反映してパラメータを設定し、設定した前記パラメータをもとに前記ＯＡＳ仕様書を作成するＯＡＳ作成手段、として機能させるためのプログラムとした。
【００２５】
このようにすることで、ＡＰＩリクエスト−レスポンスをもとに低コストでデータ型や値の範囲まで反映するＯＡＳ仕様書を作成できる。また、各種プロトコルの値から、ＯＡＳにパラメータをどのように設定するかを記述するパラメータ設定ロジックも、システム運用者にてカスタマイズ可能である。さらに、独自パラメータやＨＴＴＰ以外のプロトコルもＯＡＳ仕様書の対象にすることができる。
【００２６】
また、請求項２に記載の発明は、一意にＯＡＳ仕様書へパラメータを登録するパラメータ設定辞書を格納するパラメータ設定辞書格納部をさらに備え、前記ＯＡＳ作成部は、キャプチャしたＡＰＩリクエスト−レスポンスデータと、前記挿入値ファイルの参照結果とを前記雛形ファイルに反映して暫定パラメータを設定するとともに、キャプチャしたＡＰＩリクエスト−レスポンスデータと、前記パラメータ設定辞書を参照して、前記暫定パラメータを、当該暫定パラメータよりも精度の高いパラメータに設定し、設定した前記パラメータをもとに前記ＯＡＳ仕様書を作成することを特徴とする請求項１に記載のＡＰＩ仕様書生成装置とした。
【００２７】
このようにすることで、ＡＰＩリクエスト−レスポンスとＡＰＩパラメータ設定辞書を参照して、一意に特定不可であるパラメータも高精度で設計可能となる。このため、ＯＡＳ仕様書の作成および修正稼働を削減することができる。
【００２８】
また、請求項３に記載の発明は、アプリケーションプログラミングインタフェースを設計する際のルールを記述したＡＰＩ記述ルールを入力するＡＰＩ記述ルール入力部と、前記ＡＰＩ記述ルールを解析してチェックポリシーを作成するＡＰＩ記述ルール解析部と、前記チェックポリシーに基づいて前記ＡＰＩ記述ルールに準拠していることをチェックする準拠性チェック処理部と、をさらに備え、前記ＯＡＳ作成部は、作成した前記ＯＡＳ仕様書を前記準拠性チェック処理部に送り、前記準拠性チェック処理部は、前記ＯＡＳ作成部から送られた前記ＯＡＳ仕様書をもとに、前記ＡＰＩ記述ルールへの準拠性をチェックすることを特徴とする請求項１に記載のＡＰＩ仕様書生成装置とした。
【００２９】
このようにすることで、生成されたＡＰＩ仕様書について、特定のＡＰＩ記述ルールへの準拠性も確認することができる。
【発明の効果】
【００３０】
本発明によれば、ＡＰＩリクエスト−レスポンスをもとに低コストでＯＡＳ仕様書を作成できるＡＰＩ仕様書生成装置、ＡＰＩ仕様書生成方法、およびプログラムを提供することができる。
【図面の簡単な説明】
【００３１】
【図１】本発明の実施形態に係るＡＰＩ仕様書生成装置の概要を示す図であり、（ａ）はその全体構成図、（ｂ）はその動作説明図である。
【図２】本発明の実施形態に係るＡＰＩ仕様書生成装置を示す構成図である。
【図３】本発明の実施形態に係るＡＰＩ仕様書生成装置のＯＡＳ雛形設定部が設定する雛形ファイルの一例を示す図である。
【図４】本発明の実施形態に係るＡＰＩ仕様書生成装置の挿入値ファイル設定部が設定する挿入値ファイルの一例を示す図である。
【図５】本発明の実施形態に係るＡＰＩ仕様書生成装置のＯＡＳ作成部の動作を示す図である。
【図６】本発明の実施形態に係るＡＰＩ仕様書生成装置のＯＡＳ作成部の動作により作成されたＯＡＳ仕様書を示す図である。
【図７】本発明の実施形態に係るＡＰＩ仕様書生成装置のＳＩＰをＨＴＴＰ形式のＲＥＳＴ ＡＰＩに変換する場合、ＯＡＳ雛形設定部が設定する雛形ファイルの一例を示す図である。
【図８】本発明の実施形態に係るＡＰＩ仕様書生成装置の挿入値ファイル設定部が設定する挿入値ファイルの一例を示す図である。
【図９】本発明の実施形態に係るＡＰＩ仕様書生成装置が規定する注釈様式に従って、構文的記述ルールを記載した例を示す図である。
【図１０】本発明の実施形態に係るＡＰＩ仕様書生成装置のＡＰＩ記述ルールを表にして示す図である。
【図１１】本発明の実施形態に係るＡＰＩ仕様書生成装置が規定する記述様式に従って、メソッド使用ルールを記載した例を示す図である。
【図１２】従来技術のＯＡＳ仕様書作成を説明する図であり、（ａ）は全体構成図、（ｂ）は動作説明図である。
【図１３】図１２の簡易ＯＡＳフォーマット作成ツールで用いるＡＰＩリクエストおよびＡＰＩレスポンスの一例を示す図である。
【発明を実施するための形態】
【００３２】
以下、図面を参照して本発明を実施するための形態（以下、「本実施形態」という）におけるＡＰＩ仕様書生成装置等について説明する。
（原理説明）
図１は、本発明の実施形態に係るＡＰＩ仕様書生成装置の概要を示す図であり、（ａ）はその全体構成図、（ｂ）はその動作説明図である。図１２および図１３と同一構成部分には同一符号を付している。
ＡＰＩ仕様書生成装置１００は、既存ＡＰＩの仕様を自動で標準仕様の仕様書に変換し生成する。
図１（ａ）に示すように、ＡＰＩ仕様書生成装置１００は、ＲＥＳＴ ＡＰＩ１０と既存機能１２間で送受信されるＡＰＩリクエスト−レスポンスをキャプチャ可能に設置される（詳細後記）。
図１（ｂ）の符号ｄに示すように、キャプチャブロック＃１でキャプチャされたＡＰＩリクエスト−レスポンス１２６は、ＯＡＳ生成処理ブロック＃２に出力される。
【００３３】
ＯＡＳ生成処理ブロック＃２は、ＯＡＳ雛形設定部１１１（後記）、挿入値ファイル設定部１１２（後記）、パラメータ設定辞書１２３（後記）を有する。
ＯＡＳ生成処理ブロック＃２では、パラメータ設定ロジックを含むＡＰＩガイドラインファイルに従い、あらかじめ用意してある雛形ファイル１２１に挿入値ファイル１２２の参照結果とパラメータを反映する（図１（ｂ）の符号ｅ参照）。
また、一意に特定不可であるパラメータについては、例えばＡＰＩガイドラインファイルのパラメータ設定ロジックに従い、パラメータ設定辞書１２３を参照の上、パラメータを設定する（図１（ｂ）の符号ｆ参照）。
【００３４】
ＡＰＩ仕様書生成装置１００は、特定のＡＰＩ記述ルールへの準拠性も確認する。すなわち、図１（ｂ）の符号ｇに示すように、ＯＡＳ生成処理ブロック＃２で生成したＯＡＳをＯＡＳ出力ブロック＃３に出力し、特定のＡＰＩ記述ルールへの準拠性も確認する（後記）。
【００３５】
（実施形態）
図２は、本発明の実施形態に係るＡＰＩ仕様書生成装置を示す構成図である。
図２に示すように、既存ＡＰＬ１１は、ＲＥＳＴ ＡＰＩ１０およびＬ２（layer2）スイッチ１５を介してＡＰＩ提供装置（既存機能）２０に接続される。既存ＡＰＬ１１は、既存ＡＰＩ開発者１が使用するものとする。Ｌ２スイッチ１５は、パケットのＭＡＣ（Media Access Control）アドレスにより中継先を判断して中継動作を行う。
【００３６】
ＡＰＩ仕様書生成装置１００は、ＲＥＳＴ ＡＰＩ１０とＡＰＩ提供装置２０間に設置される。ＡＰＩ仕様書生成装置１００は、既存ＡＰＩの仕様を自動で標準仕様の仕様書に変換し生成する。
【００３７】
ＡＰＩ仕様書生成装置１００は、既存ＡＰＩ開発者２からの入力を受付けるＡＰＩリクエスト−レスポンスＩＦ部１０１と、ＡＰＩリクエスト−レスポンスキャプチャ部１０２と、ＯＡＳ作成部１１０と、ＯＡＳ雛形設定部１１１と、挿入値ファイル設定部１１２と、パラメータ設定辞書格納部１１３と、を備える。上記ＯＡＳ雛形設定部１１１、挿入値ファイル設定部１１２およびパラメータ設定辞書格納部１１３は、ＡＰＩ記述ルール作成者／システム運用者３からの入力を受付ける。
【００３８】
また、ＡＰＩ仕様書生成装置１００は、ＡＰＩ記述ルール設定方式入力部１０３と、ＡＰＩ記述ルール作成者／システム運用者３からの入力を受付けるＡＰＩ記述ルール入力部１０４と、ＡＰＩ記述ルール作成者／システム運用者４からの入力を受付けるＡＰＩ記述ルール解析部１０５と、チェックポリシー設定部１０６と、既存ＡＰＩ開発者５からの入力を受付けるＡＰＩ設計エディタ部１０７と、準拠性チェック処理部１０８と、を備える。
なお、既存ＡＰＩ開発者１、既存ＡＰＩ開発者２、および既存ＡＰＩ開発者５は、同一の開発者であってもよい。ＡＰＩ記述ルール作成者／システム運用者３およびＡＰＩ記述ルール作成者／当該システム運用者４は、同一の運用者であってもよい。
【００３９】
ＡＰＩリクエスト−レスポンスＩＦ部１０１は、既存ＡＰＩ開発者２からの入力を変換してＡＰＩ提供装置２０に送信するととともに、ＡＰＩリクエスト−レスポンスキャプチャ部１０２に該当ＡＰＩリクエスト−レスポンスのデータ取込みを設定する。なお、ＡＰＩ提供装置２０は、ＡＰＩリクエスト−レスポンスＩＦ部１０１からの送信に対する応答を返す。
なお、上記ＡＰＩリクエスト−レスポンスのデータは、具体的にはＡＰＩリクエスト−レスポンス１２６（図１３参照）の各パラメータの値（詳細後記）である。
【００４０】
ＡＰＩリクエスト−レスポンスキャプチャ部１０２は、ＡＰＩリクエストとそのレスポンスであるＡＰＩリクエスト−レスポンス１２６（図１３参照）をキャプチャする。図２では、ＡＰＩリクエスト−レスポンスキャプチャ部１０２は、Ｌ２スイッチ１５により中継されたＡＰＩリクエスト−レスポンス１２６をキャプチャし、キャプチャしたＡＰＩリクエスト−レスポンス１２６をＯＡＳ作成部１１０に出力する。
【００４１】
ＯＡＳ作成部１１０は、キャプチャしたＡＰＩリクエスト−レスポンス１２６（図１３参照）データと、挿入値ファイル１２２（図４参照）の参照結果とを雛形ファイル１２１（図３参照）に反映してパラメータを設定し、設定したパラメータをもとにＯＡＳ仕様書１２７（図６参照）を作成する。
【００４２】
なお、ＡＰＩリクエスト−レスポンス１２６のパラメータに応じて変更する部分は、置換箇所を示す変換タグを記載する。
また、ＯＡＳ作成部１１０は、キャプチャしたＡＰＩリクエスト−レスポンスデータと、挿入値ファイル１２２の参照結果とを雛形ファイル１２１に反映して暫定パラメータを設定するとともに、キャプチャしたＡＰＩリクエスト−レスポンスデータと、パラメータ設定辞書１２３（図５参照）を参照して、暫定パラメータをより精度の高いパラメータに設定し、設定したパラメータをもとにＯＡＳ仕様書１２７を作成する。
【００４３】
ＯＡＳ作成部１１０は、ＡＰＩリクエスト−レスポンス１２６（図１３参照）のみでは一意に決められず、パラメータ設定辞書１２３の参照が必要とされる領域は、該当するＯＡＳタグ部分に辞書への参照命令を記載する。
なお、挿入値ファイル１２２に記載するパラメータ設定ロジックの書き方によっては、ＨＴＴＰ以外のプロトコルもＯＡＳ仕様書１２７に自動反映することも可能である（後記図８参照）。
【００４４】
ＯＡＳ雛形設定部１１１は、ＯＡＳ仕様書１２７（図６参照）を作成する際のＯＡＳ雛形（雛形ファイル１２１）（図３参照）をあらかじめ設定する。雛形ファイル１２１は、置換箇所を変換タグとして記載する。
【００４５】
挿入値ファイル設定部１１２は、ＯＡＳ仕様書１２７（図６参照）で用いるパラメータ設定ロジックを記述する挿入値ファイル１２２（図４参照）を設定する。挿入値ファイル１２２は、雛形ファイル１２１に反映するパラメータ設定ロジックを有する。挿入値ファイル設定部１１２は、雛形ファイル１２１（図３参照）記載の変換タグに対応した挿入値ファイル１２２を設定する。
【００４６】
パラメータ設定辞書格納部１１３は、一意にＯＡＳ仕様書１２７（図６参照）へ反映が難しいパラメータを登録するパラメータ設定辞書１２３（図５参照）を格納する。
【００４７】
ＡＰＩ記述ルール設定方式入力部１０３は、ＡＰＩ記述ルールの記述様式を入力する。例えば、ＡＰＩ記述ルール作成者／システム運用者４がＡＰＩ記述ルールの記述様式をＡＰＩ記述ルール設定方式入力部１０３にあらかじめ入力する。
【００４８】
ＡＰＩ記述ルール入力部１０４は、アプリケーションプログラミングインタフェースを設計する際のルールを記述したＡＰＩ記述ルールを入力する。
ＡＰＩ記述ルール入力部１０４は、ＡＰＩ記述ルール作成者／システム運用者３が、アノテーションや正規表現等の一般的なプログラミング言語、または、ＡＰＩ仕様書生成装置１００が指定するＡＰＩ特有の記述様式に従って記載されたＡＰＩ記述ルールを入力するインポート（import）部である。上記ＡＰＩ記述ルールは、ＡＰＩ仕様書生成装置１００が指定する記述様式に従って記載されたSyntax的なＡＰＩ記述ルール、および、Semantic的なＡＰＩ記述ルールである。具体的には、上記Syntax的なエラーは、構文／文法的なエラーである。上記Semantic的なエラーは、ＡＰＩ仕様の設計に関する領域において、使用しているメソッドがＣＲＵＤ（Create，Read，Update，Delete）の考え方に従っているか等意味の違いや矛盾によって生じるエラーである。
【００４９】
また、ＡＰＩ記述ルール入力部１０４は、ＡＰＩ記述ルール作成者／システム運用者３が、チェックポリシーを記載したソースコード等を入力する。
【００５０】
ＡＰＩ記述ルール解析部１０５は、ＡＰＩ記述ルールを解析してチェックポリシーを作成する。詳細には、ＡＰＩ記述ルール解析部１０５は、ＡＰＩ記述ルール設定方式入力部１０３により事前に規定された記述様式に従い、ＡＰＩ記述ルールを解析してチェックポリシーを作成する。作成したチェックポリシーは、チェックポリシー設定部１０６に送られる。
【００５１】
チェックポリシー設定部１０６は、ＡＰＩ記述ルール作成者／システム運用者４が、チェックポリシーに間違いのないことを確認する。チェックポリシーに間違いのないことが確認されると、チェックポリシー設定部１０６は、チェックポリシーを準拠性チェック処理部１０８に反映する。
【００５２】
ＡＰＩ設計エディタ部１０７は、既存ＡＰＩ開発者５が、ＡＰＩ設計書を入力する。
【００５３】
準拠性チェック処理部１０８は、チェックポリシーに基づいてＡＰＩ記述ルールに準拠していることをチェックする。準拠性チェック処理部１０８は、ＯＡＳ作成部１１０から送られたＯＡＳ仕様書１２７をもとに、ＡＰＩ記述ルールへの準拠性をチェックする。
具体的には、準拠性チェック処理部１０８は、既存ＡＰＩ開発者５からＡＰＩ設計書の入力を受け付け、入力されたＡＰＩ設計書をチェックポリシーに基づいてチェックし、チェックポリシーに沿っていない非準拠箇所を既存ＡＰＩ開発者５に通知する。
ＡＰＩ記述ルール作成者／システム運用者３は、ＡＰＩ設計エディタ部１０７を用いてＡＰＩ設計書を入力してもよいし、ＡＰＩ仕様書生成装置１００の提供するＡＰＩを用いてＡＰＩ設計書を送付してもよい。ＡＰＩ記述ルール作成者／システム運用者３がＡＰＩ設計エディタ部１０７を用いたときは、ＡＰＩ設計書の非準拠箇所をＡＰＩ設計エディタ部１０７に出力し、既存ＡＰＩ開発者５に通知する。
【００５４】
なお、図２のＡＰＩリクエスト−レスポンスＩＦ部１０１およびＡＰＩリクエスト−レスポンスキャプチャ部１０２は、図１のキャプチャブロック＃１に対応する。図２のＯＡＳ作成部１１０、ＯＡＳ雛形設定部１１１、挿入値ファイル設定部１１２、およびパラメータ設定辞書格納部１１３は、図１のＯＡＳ生成処理ブロック＃２に対応する。図２のＡＰＩ記述ルール設定方式入力部１０３、ＡＰＩ記述ルール入力部１０４、ＡＰＩ記述ルール解析部１０５、チェックポリシー設定部１０６、ＡＰＩ設計エディタ部１０７、および準拠性チェック処理部１０８、図１のＯＡＳ出力ブロック＃３に対応する。
【００５５】
<雛形ファイル１２１>
図３は、ＯＡＳ雛形設定部１１１が設定する雛形ファイル１２１の一例を示す図である。
雛形ファイル１２１は、ＡＰＩリクエスト−レスポンス１２６（図１３参照）の各パラメータの値に応じてＯＡＳ仕様書１２７（図６参照）を作成するための雛形である。雛形ファイル１２１は、置換箇所を変換タグとして記載する。
【００５６】
雛形ファイル１２１には、ＡＰＩリクエスト−レスポンス１２６のパラメータに応じて変更する部分に、置換箇所を示す変換タグが記載される。図３に示す雛形ファイル１２１は、「！！」に示す置換箇所（図３の太文字参照）が変換タグとして記載される。
【００５７】
<挿入値ファイル１２２>
図４は、挿入値ファイル設定部１１２が設定する挿入値ファイル１２２の一例を示す図である。
挿入値ファイル１２２は、雛形ファイル１２１（図３参照）に反映するパラメータ設定ロジックを有する。なお、一意に特定できないパラメータ領域は、パラメータ設定辞書１２３を参照するなどして決定する。
【００５８】
図４の符号ｗに示すように、
・host.yaml
host: [Host: ]は、リクエスト−レスポンスのHost:ヘッダの内容を、そのまま反映する。
【００５９】
図４の符号ｘに示すように、
・basePath.yaml
basePath: [Request URI: - Host: ]は、リクエストパラメータの各パラメータを参照してどのようにＯＡＳへ反映するかを設定する。本実施形態では、Request URLヘッダの値からHost:ヘッダの値を差し引いた値をbasePath: として設定するロジックを記載する。
【００６０】
図４の符号ｙに示すように、
・type_1.yaml
[Member Key: SELECT ParameterType FROM ParameterＤＢ WHERE [Member Key] = ParameterＤＢ.Word ]は、データ型等、ＡＰＩリクエスト−レスポンスの単純解析では、一意に特定不可なパラメータについて、パラメータ設定辞書を参照して設定する。
【００６１】
<パラメータ設定辞書１２３>
図５は、ＯＡＳ作成部１１０の動作を示す図である。ＯＡＳ作成部１１０の動作については、後記し、パラメータ設定辞書１２３の構成例について述べる。
パラメータ設定辞書１２３は、一意にＯＡＳ仕様書１２７（図６参照）へ反映が難しいパラメータを登録する。
図５に示すように、パラメータ設定辞書１２３は、Word(項目)に対応するType(型)、format(フォーマット)、maximum(最大値)、およびminimum(最小値)を有する。Wordは、例えば、Birthday、Telephone、Creditである。Typeは、例えば、integer(整数)である。formatは、int32(整数32bit)、int64(整数64bit)である。
【００６２】
図５に示すパラメータ設定辞書１２３で、例えば、Word「Birthday」が検索されると、Type 「integer」、format「int32」、maximum「99999999」、およびminimum「00」が参照される。Word「Birthday」の場合、maximumは、yyyymmdd(西暦4桁,月2桁,日2桁)が設定され、minimumは、dd(日2桁)が設定されている。このため、minimumに「00」(2桁)より大きいパラメータは設定できない。
同様に、Word「Telephone」が検索されると、Type 「integer」、format「int32」、maximum「−(設定なし)」、およびminimum「0000000000」(8桁)が参照される。
【００６３】
ＯＡＳ作成部１１０は、パラメータ設定辞書１２３を参照することで、リクエスト−レスポンスの解析のみでは機械的に設定できないパラメータついても、高い精度で適切なパラメータを設定することが可能となる（後記）。
【００６４】
以下、上述のように構成されたＡＰＩ仕様書生成装置１００のＡＰＩ仕様書生成方法について説明する。
［全体動作］
ＳＴＥＰ１
図２の符号ｈに示すように、既存ＡＰＬ１１からＡＰＩ提供装置２０に対してＡＰＩリクエストを送信する。
【００６５】
ＳＴＥＰ２
ＡＰＬリクエストがない場合、図２の符号ｉに示すように、既存ＡＰＩ開発者２は、既存ＡＰＩ１１にＡＰＩリクエストを送信するために必要な情報（ＵＲＬ，リクエストパラメータ等）を入力する。既存ＡＰＩ開発者２は、ＡＰＩリクエストに対するレスポンス結果も確認する。
【００６６】
ＳＴＥＰ３
図２の符号ｊに示すように、ＡＰＩリクエスト−レスポンスキャプチャ部１０２は、Ｌ２スイッチ１５により中継されたＡＰＩリクエスト−レスポンス１２６（図１３参照）をキャプチャする。
【００６７】
ＳＴＥＰ４
図２の破線矢印および符号ｋに示すように、ＡＰＩ記述ルール作成者／システム運用者３は、ＯＡＳ雛形設定部１１１の雛形ファイル１２１、挿入値ファイル設定部１１２の挿入値ファイル１２２、パラメータ設定辞書格納部１１３のパラメータ設定辞書１２３について、手動により雛形ファイル１２１、挿入値ファイル１２２、パラメータ設定辞書１２３を充実化またはカスタマイズさせる。
【００６８】
ＳＴＥＰ５
図２の符号ｌに示すように、ＯＡＳ作成部１１０は、ＯＡＳ雛形設定部１１１に設定された雛形ファイル１２１（図３参照）に、ＡＰＩリクエスト−レスポンスキャプチャ部１０２でキャプチャされたＡＰＩリクエスト−レスポンス１２６のキャプチャデータと挿入値ファイル設定部１１２の参照結果とを反映させる。
【００６９】
ＳＴＥＰ６
図２の符号ｍに示すように、ＯＡＳ作成部１１０は、一意にＯＡＳへ反映が難しいパラメータは、パラメータ設定辞書格納部１１３が格納するパラメータ設定辞書１２３（図５参照）を参照して、暫定的にパラメータを設定する。
【００７０】
ＳＴＥＰ７
図２の符号ｎに示すように、ＡＰＩ記述ルール作成者／システム運用者３は、ＡＰＩ記述ルール入力部１０４に、アノテーションや正規表現等の一般的なプログラミング言語、または、ＡＰＩ仕様書生成装置１００が指定するＡＰＩ特有の記述様式に従って記載されたＡＰＩ記述ルールを入力する。ＡＰＩ記述ルール作成者／システム運用者３は、ＡＰＩ記述ルール設定方式入力部１０３（後記）で設定された記述様式に従ってＡＰＩ記述ルールを記載する。
【００７１】
上記ＡＰＩ記述ルールは、ＡＰＩ仕様書生成装置１００が指定する記述様式に従って記載されたSyntax的なＡＰＩ記述ルール、および、Semantic的なＡＰＩ記述ルールである。具体的には、ＡＰＩ記述ルールは、ＡＰＩのリソース名、パラメータ名に使用してはいけない文字や文字列を規定したルール、およびＡＰＩで使用するメソッドの使用用途を規定したルールなどである。メソッドの使用用途は、ＲＥＳＴ ＡＰＩ１０のメソッドが限定的な特徴を活かしてルールを規定できる。
また、ＡＰＩ記述ルール作成者／システム運用者３は、チェックポリシーを記載したソースコード等を入力する。
【００７２】
ＳＴＥＰ８
ＡＰＩ記述ルール設定方式入力部１０３は、ＡＰＩ記述ルールの記述様式を入力する。このＡＰＩ記述ルールの記述様式は、例えばＡＰＩ記述ルール作成者／システム運用者４があらかじめ入力する。
【００７３】
ＳＴＥＰ９
図２の符号ｏに示すように、ＡＰＩ記述ルール解析部１０５は、ＡＰＩ記述ルール設定方式入力部１０３により事前に規定された記述様式に従い、ＡＰＩ記述ルールを解析してチェックポリシーを決定する。決定されたチェックポリシーは、チェックポリシー設定部１０６に送られる。
【００７４】
ＳＴＥＰ１０
図２の符号ｐに示すように、ＡＰＩ記述ルール作成者／システム運用者４は、チェックポリシー設定部１０６で、チェックポリシーに間違いのないことを確認する。チェックポリシーに間違いのないことが確認されると、チェックポリシー設定部１０６は、チェックポリシーを準拠性チェック処理部１０８に反映する（図２の符号ｑ参照）。
【００７５】
ＳＴＥＰ１１
一方、図２の符号ｒに示すように、ＯＡＳ作成部１１０は、作成したＯＡＳをＡＰＩ設計エディタ部１０７へ入力する。ＡＰＩ設計エディタ部１０７は、ＯＡＳとして作成された内容を表示する。
【００７６】
ＳＴＥＰ１２
図２の符号ｓに示すように、ＡＰＩ設計エディタ部１０７は、ＯＡＳ作成部１１０により作成されたＯＡＳを表示させ、既存ＡＰＩ開発者５によるＡＰＩ設計書の設計および記載を支援する。
【００７７】
ＳＴＥＰ１２
図２の符号ｔに示すように、準拠性チェック処理部１０８は、既存ＡＰＩ開発者５からＡＰＩ設計書（ＯＡＳ）の入力を受け付け、入力されたＡＰＩ設計書（ＯＡＳ）をチェックポリシーに基づいてチェックし、チェックポリシーに沿っていない非準拠箇所を既存ＡＰＩ開発者５に通知する（図２の符号ｕ参照）。既存ＡＰＩ開発者５は、ＡＰＩ設計エディタ部１０７を用いてＡＰＩ設計書（ＯＡＳ）を入力する。
【００７８】
特に、図２の符号ｖに示すように、ＡＰＩ設計エディタ部１０７を経由して、準拠性チェック処理部１０８にＯＡＳを送ることで、準拠性チェック処理部１０８は、特定のＡＰＩ記述ルールへの準拠性チェックも確認可能である。なお、特定のＡＰＩ記述ルールは、ＡＰＩ記述ルール設定方式入力部１０３で入力されているＡＰＩ記述ルールの記述様式では準拠性チェックできないものを含む。
準拠性チェック処理部１０８は、既存ＡＰＩ開発者５に特定のＡＰＩ記述ルールに準拠した設計内容を提案する（図２の符号ｕ参照）。
【００７９】
［ＯＡＳ作成部１１０動作］
図５を参照してＯＡＳ作成部１１０の動作を説明する。
ＯＡＳ作成部１１０（図２参照）は、ＡＰＩリクエスト−レスポンスキャプチャ部１０２（図２参照）でキャプチャされたＡＰＩリクエスト−レスポンス１２６のデータをパラメータ設定ロジックに従い、挿入値ファイル１２２へ反映させる。
図５に示す挿入値ファイル１２２において、
・host.yaml「host:」「basePath:」は、パラメータ設定ロジックに設定されている。このため、図５の符号ｚに示すように、・host.yamlは、ＡＰＩリクエスト１２４（図１３参照）の host: petstore-api.herokuapp.comそのままとなる。同様に、・basePath.yamlは、basePath: /Petとなる。
【００８０】
ＯＡＳ作成部１１０は、キャプチャしたＡＰＩリクエスト−レスポンス１２６のデータと、挿入値ファイル１２２の参照結果とを雛形ファイル１２１に反映して暫定パラメータを設定する。
【００８１】
一方、「・name_1.yaml」「・type_1.yaml」「・format_1.yaml」は、パラメータ設定ロジックに設定されていない。このため、図５の符号ａ１に示すように、・host.yamlは、ＡＰＩリクエスト−レスポンスの解析のみで機械的に設定できないパラメータ（一意に特定不可であるパラメータ）である。
この場合は、図５の符号ｂ１に示すように、パラメータ設定辞書１２３を参照して、「・name_1.yaml」「・type_1.yaml」「・format_1.yaml」に対して各パラメータを設定し、挿入値ファイル１２２に設計を反映する。
【００８２】
上述したように、図５に示すパラメータ設定辞書１２３は、Wordに対応するType、format、maximum、およびminimumを有する。図５の符号ｂ１に示すように、Word「Birthday」が検索されると、Type 「integer」、format「int32」、maximum「99999999」、およびminimum「00」が参照され、挿入値ファイル１２２に設定される。すなわち、
・name_1.yaml
birthday:
・type_1.yaml
type: integer
・format_1.yaml
format: int32
が挿入値ファイル１２２に設定される。
【００８３】
ＯＡＳ作成部１１０は、キャプチャしたＡＰＩリクエスト−レスポンス１２６のデータと、パラメータ設定辞書１２３を参照して、暫定パラメータをより精度の高いパラメータに設定する。すなわち、一意にＯＡＳへ反映が難しいパラメータは、パラメータ設定辞書１２３を参照して、より精度の高いパラメータを設定する。
【００８４】
図６は、図５のＯＡＳ作成部１１０の動作により作成されたＯＡＳ仕様書１２７を示す図である。
図６に示すＯＡＳ仕様書１２７は、雛形ファイル１２１（図３参照）に挿入値ファイル１２２（図５参照）を挿入済のファイルを示す。
図６中の太文字は、ＡＰＩリクエスト−レスポンス１２６のキャプチャデータとパラメータ設定辞書１２３を参照し、雛形ファイル１２１（図３参照）へ設計を反映した箇所である。
例えば、図６に示すＯＡＳ仕様書１２７は、雛形ファイル１２１（図３参照）をもとに、
swagger: '2.0'
info:
version: 1.0.0
title: hogehoge
description: |
を記述し、この記述に続いて、図５に示す挿入値ファイル１２２から下記パラメータを挿入する。
host: petstore-api.herokuapp.com
basePath: /pet
schemes:
- http
consumes:
- application/json
produces:
- application/json
paths:
/:
【００８５】
続いて、図５に示す挿入値ファイル１２２から下記パラメータを挿入する。
post:
parameters:
【００８６】
雛形ファイル１２１（図３参照）をもとに、
− name: A
を記述し、この記述に続いて、図５に示す挿入値ファイル１２２から下記パラメータを挿入する。
in: body
【００８７】
雛形ファイル１２１（図３参照）をもとに、
description: hogehogeschema:
を記述し、この記述に続いて、図５に示す挿入値ファイル１２２から下記パラメータを挿入する。
$ref: '#／definitions／A'
【００８８】
雛形ファイル１２１（図３参照）をもとに、
required: true
を記述し、この記述に続いて、図５に示す挿入値ファイル１２２から下記パラメータを挿入する。
responses:
200:
【００８９】
雛形ファイル１２１（図３参照）をもとに、
description: hogehoge
を記述する。
【００９０】
以上で、「post:」の記述とその挿入値ファイル１２２からのパラメータ挿入を終え、「name: A」についての定義を記述する。すなわち、
雛形ファイル１２１（図３参照）をもとに、
definitions:
A:
を記述し、この記述に続いて、図５に示す挿入値ファイル１２２から下記パラメータを挿入する。
type: object
【００９１】
続いて、雛形ファイル１２１（図３参照）をもとに、
properties:
を記述し、この記述に続いて、図５に示す挿入値ファイル１２２から下記パラメータを挿入する。
name:
type: string
birthday:
type: integer
format: int32
上記パラメータは、一意にＯＡＳへ反映が難しいパラメータであり、パラメータ設定辞書１２３を参照して設定される。
【００９２】
以上、ＨＴＴＰ形式のＲＥＳＴ ＡＰＩを用いたＯＡＳ作成部１１０の動作について説明した。
【００９３】
［変形例］
次に、変形例として、ＳＩＰ（Session Initiation Protocol）をＯＡＳ変換ロジックに変える場合について説明する。
【００９４】
<雛形ファイル１２１Ａ>
図７は、ＳＩＰをＨＴＴＰ形式のＲＥＳＴ ＡＰＩに変換する場合、ＯＡＳ雛形設定部１１１が設定する雛形ファイル１２１Ａの一例を示す図である。図３の雛形ファイル１２１と同一部分には、同一パラメータを付している。
雛形ファイル１２１Ａは、ＡＰＩリクエスト−レスポンス１２６（図１３参照）の各パラメータの値に応じてＯＡＳ仕様書を作成するための雛形である。
雛形ファイル１２１Ａには、ＡＰＩリクエスト−レスポンス１２６のパラメータに応じて変更する部分に、置換箇所を示す変換タグが記載される。
【００９５】
ＯＡＳ作成部１１０（図５参照）は、雛形ファイル１２１Ａ記載の変換タグに対応した挿入値ファイル１２２Ａ（図８参照）を設定する。
【００９６】
図７に示す雛形ファイル１２１Ａは、
前記図３に示す雛形ファイル１２１の下記パラメータ
properties:
！！Conversion name_1:
！！Conversion type_1:
！！Conversion format_1
！！Conversion name_2:
！！Conversion type_2:
！！Conversion format_2:
が、下記パラメータ
properties:
from
！！Conversion type_1:
！！Conversion format_1
to
！！Conversion type_2:
！！Conversion format_2:
に置き換えられている。
【００９７】
<挿入値ファイル１２２Ａ>
図８は、挿入値ファイル設定部１１２が設定する挿入値ファイル１２２Ａの一例を示す図である。
挿入値ファイル１２２Ａは、雛形ファイル１２１Ａ（図７参照）に反映するパラメータロジックを有するファイルである。なお、一意に特定できないパラメータ領域は、パラメータ設定辞書を参照するなどして決定する。
図８に示す挿入値ファイル１２２Ａは、
・host.yaml
host: [REGISTER sip: ]
・method.yaml
− [REGESTER: post]
− [INVITE: get]
・type_1.yaml
[To: ]
を有する。
【００９８】
図８の符号ｃ１に示すように、
・host.yaml
host: [REGISTER sip: ]は、網内プロキシに登録要求をするREGESTERメソッドによるリクエストのSIP URIをＨＴＴＰのhost部とする場合の例である。
【００９９】
図８の符号ｄ１に示すように、
・method.yaml
− [REGESTER: post]
− [INVITE: getは、SIP REGESTERをＨＴＴＰのPOSTメソッド、SIP INVITEをGETメソッドとする場合の例である。
【０１００】
図８の符号ｅ１に示すように、
・type_1.yaml
[To: ]は、SIP INVITEのTo:ヘッダの値を反映する場合の例である。
【０１０１】
以上、ＳＩＰをＨＴＴＰ形式のＲＥＳＴ ＡＰＩに変換する場合、ＳＩＰリクエスト−レスポンスの値を基に、ＨＴＴＰプロトコルへ変換するロジックを反映する。これにより、ＯＡＳ形式の仕様書を自動生成することが可能になる。
【０１０２】
［構文的記述ルールの規定例］
次に、構文的記述ルールの規定例について説明する。
図９は、ＡＰＩ仕様書生成装置１００が規定する注釈様式に従って、構文的記述ルールを記載した例を示す図である。
【０１０３】
図９の例では、ＡＰＩのリソース名、パラメータ名に、アプリが動作する上でバグの原因となるおそれのある文字「％」，「：」，「￥」，「￥￥」, 「＼（バックスラッシュ）」の使用を禁止するルールが記載されている。
具体的には、図９の符号ｆ１に示すように、“@NGcheck\Resource”は、ＡＰＩ仕様書生成装置１００が規定した記述様式であり、ＡＰＩ設計書内の各ＡＰＩのリソース名内部で特定の記述等がされた場合にエラーを出力するルール（ポリシー）である。また、図９の符号ｇ１に示すように、“@NGcheck\Parameters”は、各ＡＰＩのパラメータ名に特定の文字、文字列が存在する場合にエラー情報を出力するルール（ポリシー）である。また、図９の符号ｈ１に示すように、使用してはいけない文字、文字列が正規表現等で記述されている。
【０１０４】
このように、ＡＰＩのリソース名、パラメータ名に、アプリ動作する上でバグの原因となるおそれのある「%」, 「:」, 「\」, 「＼」の使用を禁止する場合は、ＡＰＩ仕様書生成装置１００が指定する記述様式を用いて正規表現等を活用して記述したファイルをＡＰＩ記述ルール入力部１０４（図２参照）にインポートする（図９の符号ｉ１参照）。
【０１０５】
準拠性チェック処理部１０８（図２参照）は、記述された内容に従って、準拠性チェックポリシーを規定する。
図９の符号ｊ１に示すように、ＡＰＩ設計エディタ部１０７（図２参照）は、記載されたＡＰＩ仕様を、事前に規定されたチェックポリシーに従って準拠性確認をし、その結果を既存ＡＰＩ開発者５に通知する。通知形式は、ＡＰＩ設計エディタ部１０７がリアルタイムに通知を行う。
【０１０６】
［メソッド使用ルールの規定例］
次に、メソッド使用ルールの規定例について説明する。
図１０は、ＡＰＩ記述ルールを表にして示す図である。図１０に示す表は、ＡＰＩ記述ルールとして各メソッドの使用用途を規定する。
図１０の表に示すように、ＣＲＵＤ（Create，Read，Update，Delete）毎に、メソッド名（ＰＯＳＴ，ＧＥＴ，ＰＵＴ，ＤＥＬＥＴＥ）と、対応する用途を規定する。
ＡＰＩ記述ルールとして各メソッドの使用用途を図１０の表に規定したと仮定する。例えば、リソースを新規に作成／更新／削除するようなＡＰＩにもかかわらず、「ＧＥＴ」を用いているかを確認する。図１０の表で規定したルールに反して用途に合っていないメソッドが使われている場合にエラーを出力する。
【０１０７】
図１１は、ＡＰＩ仕様書生成装置１００が規定する記述様式に従って、メソッド使用ルールを記載した例を示す図である。
【０１０８】
図１１の符号ｋ１に示すように、“@NGcheck\Api”は、一つのエンドポイント毎のＡＰＩに関する設計（概要やメソッド）において、特定の条件に当てはまる記述が存在する場合にエラーを出力するルール（ポリシー）である。図１１の符号ｌ１に示すように、ＡＰＩ仕様書生成装置１００が規定した記述様式でエラーを出力するポリシーを記載する。例えば、ＡＰＩの説明文（description部）に「更新」、「create」、「追加」、「add」、「削除」、「delete」という記載があり、かつ、ＧＥＴメソッドを使用している場合、エラーを出力する。より具体的には、ＡＰＩ設計書において、ある行にＧＥＴメソッドを使用することが記載されており、その後の行のＡＰＩの説明文に“Create”の記述がある場合を想定する。このＡＰＩ設計書は、リソースを新規に作成するＡＰＩにもかかわらずＧＥＴを用いている。したがって、このＡＰＩ設計書をＡＰＩ仕様書生成装置１００に入力した場合、用途に合っていないメソッドが使われている旨のエラー情報が出力される。
ＡＰＩ仕様書生成装置１００が規定する記述様式に沿った設計、または、一般的なプログラミング言語で、エラー検出のロジックを組むことで、ルール違反したメソッドの使用をチェックすることが可能になる。
【０１０９】
以上説明したように、本実施形態のＡＰＩ仕様書生成装置１００（図１参照）は、ＯＡＳ仕様書１２７を作成する際の雛形ファイル１２１をあらかじめ設定するＯＡＳ雛形設定部１１１と、ＯＡＳ仕様書１２７で用いるパラメータ設定ロジックを記述する挿入値ファイル１２２を設定する挿入値ファイル設定部１１２と、ＡＰＩリクエストとそのレスポンスをキャプチャするＡＰＩリクエスト−レスポンスキャプチャ部１０２と、キャプチャしたＡＰＩリクエスト−レスポンスデータと、挿入値ファイル１２２の参照結果とを雛形ファイル１２１に反映してパラメータを設定し、設定したパラメータをもとにＯＡＳ仕様書１２７を作成するＯＡＳ作成部１１０と、を備える。
【０１１０】
この構成により、ＡＰＩリクエスト−レスポンス１２６をもとに低コストでデータ型や値の範囲まで反映するＯＡＳ仕様書１２７を作成できる。また、各種プロトコルの値から、ＯＡＳにパラメータをどのように設定するかを記述するパラメータ設定ロジックも、システム運用者にてカスタマイズ可能である。さらに、独自パラメータやＨＴＴＰ以外のプロトコルもＯＡＳ仕様書の対象にすることができる。
【０１１１】
本実施形態では、ＡＰＩ仕様書生成装置１００は、一意にＯＡＳ仕様書１２７へ反映が難しいパラメータを登録するパラメータ設定辞書１２３を格納するパラメータ設定辞書格納部１１３を備え、ＯＡＳ作成部１１０は、キャプチャしたＡＰＩリクエスト−レスポンス１２６のデータと、挿入値ファイル１２２の参照結果とを雛形ファイル１２１に反映して暫定パラメータを設定するとともに、キャプチャしたＡＰＩリクエスト−レスポンス１２６のデータと、パラメータ設定辞書を参照して、暫定パラメータをより精度の高いパラメータに設定し、設定したパラメータをもとにＯＡＳ仕様書１２７を作成する。
【０１１２】
このようにすることで、ＡＰＩリクエスト−レスポンス１２６とＡＰＩパラメータ設定辞書１２３を参照して、一意に特定不可であるパラメータも高精度で設計可能となる。このため、ＯＡＳ仕様書１２７の作成および修正稼働を削減することができる。
【０１１３】
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上述文書中や図面中に示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【０１１４】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部または全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行するためのソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Solid State Drive）等の記録装置、または、ＩＣ（Integrated Circuit）カード、ＳＤ（Secure Digital）カード、光ディスク等の記録媒体に保持することができる。また、本明細書において、時系列的な処理を記述する処理ステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理（例えば、並列処理あるいはオブジェクトによる処理）をも含むものである。
【符号の説明】
【０１１５】
１０  ＲＥＳＴ ＡＰＩ
１１  既存ＡＰＬ
１５  Ｌ２スイッチ
２０  ＡＰＩ提供装置（既存機能）
１００  ＡＰＩ仕様書生成装置
１０１  ＡＰＩリクエスト−レスポンスＩＦ部
１０２  ＡＰＩリクエスト−レスポンスキャプチャ部（ＡＰＩリクエスト−レスポンスキャプチャ手段）
１０３  ＡＰＩ記述ルール設定方式入力部
１０４  ＡＰＩ記述ルール入力部
１０５  ＡＰＩ記述ルール解析部
１０６  チェックポリシー設定部
１０７  ＡＰＩ設計エディタ部
１０８  準拠性チェック処理部
１１０  ＯＡＳ作成部（ＯＡＳ作成手段）
１１１  ＯＡＳ雛形設定部（ＯＡＳ雛形設定手段）
１１２  挿入値ファイル設定部（挿入値ファイル設定手段）
１１３  パラメータ設定辞書格納部
１２１，１２１Ａ  雛形ファイル
１２２，１２２Ａ  挿入値ファイル
１２３  パラメータ設定辞書
１２４  ＡＰＩリクエスト
１２５  ＡＰＩレスポンス
１２６  ＡＰＩリクエスト−レスポンス
１２７  ＯＡＳ仕様書
【図１】
2020024567.tif 000003
【図２】
2020024567.tif 000004
【図３】
2020024567.tif 000005
【図４】
2020024567.tif 000006
【図５】
2020024567.tif 000007
【図６】
2020024567.tif 000008
【図７】
2020024567.tif 000009
【図８】
2020024567.tif 000010
【図９】
2020024567.tif 000011
【図１０】
2020024567.tif 000012
【図１１】
2020024567.tif 000013
【図１２】
2020024567.tif 000014
【図１３】
2020024567.tif 000015