JP2021039718A - 自動化されたアプリケーション・プログラミング・インターフェース(api)仕様作成 - Google Patents
自動化されたアプリケーション・プログラミング・インターフェース(api)仕様作成 Download PDFInfo
- Publication number
- JP2021039718A JP2021039718A JP2020043107A JP2020043107A JP2021039718A JP 2021039718 A JP2021039718 A JP 2021039718A JP 2020043107 A JP2020043107 A JP 2020043107A JP 2020043107 A JP2020043107 A JP 2020043107A JP 2021039718 A JP2021039718 A JP 2021039718A
- Authority
- JP
- Japan
- Prior art keywords
- api
- processor
- building
- html page
- html
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
- G06F16/986—Document structures and storage, e.g. HTML extensions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Stored Programmes (AREA)
- Information Transfer Between Computers (AREA)
Abstract
【課題】アプリケーション・プログラミング・インターフェース(API)仕様作成を自動化する方法を提供する。【解決手段】方法は、APIの第1のプロバイダーに関連付けられた第1のサーバーにアクセスする段階と、第1のプロバイダーにより提供されるAPIを自動的に選択する段階と、選択されたAPIに関連する特徴のリストを構築する段階と、選択されたAPIに関連付けられた第1のハイパーテキスト転送プロトコル(HTML)ページをパースする段階と、第1のHTMLページとのユーザー対話を自動的にシミュレートする段階と、特徴のリストを構築すること、第1のHTMLページをパースすること及び第1のHTMLページとのユーザー対話を自動的にシミュレートすることに基づいて、APIオブジェクト情報を抽出する段階と、抽出されたAPIオブジェクト情報に基づいて、機械可読なAPI仕様を構築する段階と、を含む。【選択図】図2
Description
本開示において論じられる実施形態は、自動化されたアプリケーション・プログラミング・インターフェース(API)仕様の構築に関する。
ソフトウェア・アプリケーションは、一つまたは複数のAPIを使用して構築されうる。APIは、ソフトウェア・コンポーネントがどのように相互作用するかを規定する、ソフトウェア・アプリケーションを構築するためのルーチン、プロトコル、ツールの集合を含んでいてもよい。APIは、ソフトウェア・アプリケーションの関数またはデータを公開してもよく、それが、他のアプリケーションが関数やデータの実装を気にせずにAPIの資源を使用できるようにする。場合によっては、APIプロバイダーは、プログラマーが利用可能なAPIを発見し、それと対話するための半構造化されたプラットフォームを提供することがある。いくつかの実施形態では、APIプラットフォームは、少なくとも一つのハイパーテキスト・マークアップ言語(HTML)ページを含むウェブ・インターフェースを介して複数のAPIがアクセスされうる「試用(try-out)」ページを提供することがある。しかしながら、場合によっては、APIプラットフォームが機械読み取り可能なAPI仕様を提供しないこともあれば、あるいは対話型のアクションを必要としうる対話型API仕様を提供することもある。
本開示において請求される主題は、上述の環境においてのみ動作する実施形態に限定されない。むしろ、この背景は、本開示に記載されるいくつかの実施形態が実施されうる一つの例示的な技術分野を示すために提供される。
本開示において請求される主題は、上述の環境においてのみ動作する実施形態に限定されない。むしろ、この背景は、本開示に記載されるいくつかの実施形態が実施されうる一つの例示的な技術分野を示すために提供される。
本開示の一つまたは複数の実施形態は、プロセッサによって、少なくとも一つのアプリケーション・プログラミング・インターフェース(API)の第1のプロバイダーに関連付けられた第1のサーバーにアクセスするステップと;前記プロセッサによって、前記第1のプロバイダーによって提供される前記少なくとも一つのAPIを自動的に選択するステップと;前記選択された少なくとも一つのAPIに関連付けられた特徴のリストを構築するステップと;前記プロセッサによって、前記選択された少なくとも一つのAPIに関連付けられた第1のハイパーテキスト転送プロトコル(HTML)ページを構文解析〔パース〕するステップと;前記プロセッサによって、前記第1のHTMLページとの少なくとも一つのユーザー対話を自動的にシミュレートするステップと;前記プロセッサによって、a)前記特徴のリストを構築すること、b)前記第1のHTMLページを構文解析すること、およびc)前記第1のHTMLページとの少なくとも一つのユーザー対話を自動的にシミュレートすることに基づいてAPIオブジェクト情報を抽出するステップと;前記プロセッサによって、前記抽出されたAPIオブジェクト情報に基づいて機械読み取り可能なAPI仕様を構築するステップとを含む、方法を含みうる。
実施形態の目的および利点は、少なくとも特許請求の範囲において特に指摘された要素、特徴、および組み合わせによって実現され、達成される。
前述の一般的な説明および以下の詳細な説明は、いずれも単なに例であり、説明するためのものであり、特許請求の範囲に記載された発明を制約するものではないことを理解しておくべきである。
例示的な実施形態は、添付の図面を使用することにより、さらなる具体性および詳細さをもって記述および説明される:
本開示は、半構造情報抽出を用いてAPI仕様を自動的に構築するためのコンピューティング・システムの使用に関する。本開示において使用されるところでは、API仕様(API specification)という用語は、API資源を呼び出すおよび/または実装するためのコンピュータ読取可能な命令を指してもよく、ルーチン、データ構造、オブジェクト・クラス、変数および/またはリモート・コールを含みうる。本開示において使用されるところでは、API資源(API resource)という用語は、使用されている、呼び出されている、実装されているなどの実際のAPIを指してもよい。場合によっては、API文書は、プログラミング・コードに関する説明を伴う例示的なプログラミング・コードの断片または例の他の部分を含んでいてもよい。本開示において使用されるところでは、API文書(API document)という用語は、ドキュメンテーション(documentation)、ウェブページ、または他の素材であって、APIを普通の原語を使って記述するもの、たとえばウェブサイトまたは他のハイパーテキスト・マークアップ言語(HTML)文書、ユーザーズガイドまたはリファレンス、オーナーズ・マニュアル、readme.txtファイルもしくはポータブルドキュメントフォーマット(PDF)ファイル、またはAPI資源を記述する他の同様または類似の文書を指してもよい。このように、API文書はAPI資源を記述してもよく、API仕様は、API資源を実装する、コールする、または他の仕方で呼び出す、または利用するコンピュータ可読コードを含んでいてもよい。
いくつかの実施形態では、APIは、自身のサーバーおよび/またはデータを、異なる属性をもつ異なる型のデータを有する異なるプロトコルを通じて公開してもよい。多くのAPIは、形式的な定義をもたず、多くのAPIは、HTMLファイルとして記述される人間が読める記述をもつ。さらに、APIの機能とそのドキュメンテーションは定期的に更新されることができる。
米国特許出願第15/374,798号(「API学習」)に記載されているような現行の技術が、API文書から情報を抽出するために使用されうるが、場合によっては、現行の技術は、APIプラットフォームによって提供されるHTMLページと対話的に動作しないことがある。たとえば、APIプロバイダーによって提供され、少なくとも一つのAPIと関連付けられたHTMLページは、プロバイダーのAPIプラットフォームにログオンする、情報を得るためにリンクをクリックする、HTMLページに提示されたリストからのオプションを選択する、フォームに記入する、利用可能なAPIのリストを識別するためにスクロールするなどといった対話的なアクションを含むことがある。このように、本開示に記載される実施形態は、プライベートなおよび公開のAPI情報両方にアクセスするために、複数の潜在的なHTMLページのうちの少なくとも一つから情報を自動的かつ対話的に抽出するために、既存のプロバイダーのAPIプラットフォームを使用するための方法およびシステムを詳述する。いくつかの実施形態では、HTMLページから自動的かつ対話的に情報を抽出することは、コンピュータ・システムが、ウェブページ内のユーザーの手動のアクション(たとえば、リンクをクリックすること)をプログラム的にシミュレートすることを含んでいてもよい。
少なくとも一つのAPIに関連付けられたHTMLページとの自動的な対話を可能にすることにより、本方法は、たとえば、OpenAPI仕様(OpenAPI Specification、OAS)ファイルを生成することができる。OpenAPI仕様は、APIへの標準的な、言語非依存のインターフェースを定義でき、これにより、ソースコード、ドキュメンテーションへの、またはネットワーク・トラフィック検査を通じたアクセスなしに、人間とコンピュータの両方が、サービスの機能を発見し、理解できる。OpenAPI定義は、APIを表示するために文書生成ツールによって、さまざまなプログラミング言語でサーバーおよびクライアントを生成するためにコード生成ツールによって、試験ツールによって、および他のケースで使用できる。いくつかの実施形態では、OASファイルは、YAML Ain't Markup Language(YAML)またはJavaScript(登録商標) Object Notion(JSON)のような機械可読フォーマットで生成されてもよい。
いくつかの実施形態では、OASファイルを構築する際に、コンピューティング装置は、API文書から関数(functions)および属性のテーブルを抽出するために、APIに関連付けられたHTMLページと自動的に対話してもよい。HTMLページとの対話に基づいてAPI特徴リストが作成されてもよく、API特徴リストを参照して、APIオブジェクトのリストを構築するためにHTMLページから情報および/またはコンテンツが抽出されてもよい。いくつかの実施形態では、APIオブジェクトのリストは、OpenAPI仕様に関連付けられたオブジェクト(たとえば、OASオブジェクト)であってもよい。API特徴リストの構成は、図2に関してより詳細に記述されうる。コンテンツおよび/または情報の抽出、およびAPIオブジェクト・リストの構築は、図3に関してより詳細に記述されうる。
本開示の実施形態は、添付の図面を参照して説明される。
図1は、本開示の一つまたは複数の実施形態による、自動化されたAPI仕様構築に関する例示的な環境100を示す。環境100は、半構造情報抽出を使用してAPI仕様を自動的に構築するように構成されたコンピューティング・システム102を含んでいてもよい。いくつかの実施形態では、コンピューティング・システム102は、対話モジュール104、オブジェクト検出モジュール106、および/または抽出モジュール108を含んでいてもよい。
さらに、環境100は、APIプロバイダーAに関連付けられたサーバー112をさらに含んでいてもよい。サーバー112は、複数のアクセス可能なAPI 114a〜114nのうちの少なくとも一つのAPIに関連付けられた複数のHTMLページ116a〜116nをホストしてもよい。追加的または代替的に、環境100は、APIプロバイダーBに関連付けられたサーバー118をさらに含んでいてもよい。サーバー118は、複数のアクセス可能なAPI 120a〜120nのうちの少なくとも一つのAPIに関連付けられた複数のHTMLページ122a〜122nをホストしてもよい。いくつかの実施形態では、サーバー112およびサーバー118は、同じコンピューティング・システム、異なるコンピューティング・システム、またはそれらの任意の組み合わせであってもよく、任意の数のHTMLページをホストし、および/またはAPI文書および/またはAPI仕様の任意の組み合わせを記憶してもよい。
いくつかの実施形態では、コンピューティング・システム102は、API 114a〜114nおよび/または120a〜120nのうちの少なくとも一つにそれぞれ関連付けられたHTMLページ116a〜116nおよび/または122a〜122nのいずれかを解析するように構成されてもよい。該HTMLページのどれもAPI文書の一部と考えられてもよく、あるいはかかるAPI文書であってもよく、該API文書は、該API文書に記述されている所与のAPI資源がどのように機能するか、所与のAPI資源がどのような機能を提供するか、所与のAPI資源の目的(たとえば、目標、入力、出力など)、ソフトウェア・アプリケーションが所与のAPI資源とどのように対話しうるか、所与のAPI資源とどのように対話するかについての種々のプログラミング言語での例、APIパラメータ(たとえば、入力)および応答(たとえば、出力)の記述を含む。いくつかの実施形態では、API文書および/またはHTMLページは、対話型オブジェクト(たとえば、リンク、フォーム、ボタン、アクションなど)、普通のテキスト文、情報のテーブル、コード、メタデータなどを含んでいてもよい。
簡潔のため、残りの記述は、例示的なAPI 114aに関連するHTMLページ116a〜116nを参照する。ここで、例示的なAPI 114aは、APIプロバイダーAによって提供され、サーバー112上でホストされる。本開示に記載される方法およびシステムは、任意の数のAPIプロバイダーによって提供される任意の数のAPIに関連する任意のAPI文書および/またはHTMLページに適用されうることを理解しておくべきである。
いくつかの実施形態において、APIプロバイダー(API provider)は、APIにおいて提示される能力および/またはユーザー・データを提供するいかなるエンティティであってもよい。例示的なAPIプロバイダーは、Amazon Web Services、Google API Explorer、MasterCard API、PayPal APIなどを含みうる。いくつかの実施形態では、利用可能なAPIに関連付けられたHTMLページを提供する各APIプロバイダーは、HTMLページをホストするホストのドメイン名またはIPアドレスに関連付けられてもよい。
いくつかの実施形態では、本開示に記載される自動HTMLページ対話と組み合わせて、コンピューティング・システム102は、例示的なHTMLページ116〜116nから情報を抽出するプロセスを実行してもよい。そのような抽出プロセスの出力は、一つまたは複数の関数、該一つまたは複数の関数のそれぞれの説明、および/または属性を含む一つまたは複数のテーブルを含んでいてもよい。
例示的なHTMLページ116a〜116nから抽出されたテーブルは、例示的なHTMLページ116a〜116nのいずれかの所与のAPI資源に関連付けられた一つまたは複数の属性を含んでいてもよい。いくつかの実施形態では、抽出されたテーブルは、所与の型と関連付けられてもよい。たとえば、テーブルは、所与のAPI資源の入力パラメータ、所与のAPI資源についての入力データ、所与のAPI資源についての出力データ、所与のAPI資源についての出力結果(たとえば、該出力のフォーマット)、所与のAPI資源のエラーコード、または所与のAPI資源に関連する他の任意の属性を含んでいてもよい。いくつかの実施形態では、抽出されたテーブルの一つまたは複数は、一つまたは複数の型の入力に関する情報を提供してもよい。たとえば、抽出されたテーブルは、入力パラメータに関する情報、たとえば該入力パラメータが必須であるかどうか、文字制限などを提供してもよい。
いくつかの実施形態では、コンピューティング・システム102は、ネットワーク110を通じて通信することによって、HTMLページ116a〜116nおよび/または122a〜122nを解析してもよい。追加的または代替的に、コンピューティング・システム102は、ネットワーク110を通じて通信しながら、HTMLページを別のコンピューティング・システムに提供してもよい。
ネットワーク110は、有線または無線ネットワークとして実装されてもよく、および/または数多くの異なる構成またはその組み合わせを有してもよい。さらに、ネットワーク110は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)(たとえば、インターネット)、またはそれを通じて複数のデバイスおよび/またはエンティティが通信しうる他の相互接続されたデータ経路を含んでいてもよい。いくつかの実施形態では、ネットワーク110は、ピアツーピア・ネットワークを含んでいてもよい。また、ネットワーク110は、多様な異なる通信プロトコルでデータを送信するために、電気通信ネットワークに結合されてもよく、または、電気通信ネットワークの一部を含んでいてもよい。いくつかの実施形態では、ネットワーク110は、ショートメッセージサービス(SMS)、マルチメディアメッセージサービス(MMS)、ハイパーテキスト転送プロトコル(HTTP)、直接データ接続、無線アプリケーションプロトコル(WAP)、電子メール、または他のアプローチなどを介して、通信および/またはデータを送受信するためのBluetooth(登録商標)通信ネットワークまたはセルラー通信ネットワークを含んでいてもよい。ネットワーク110はまた、第3世代(3G)、第4世代(4G)、ロングタームエボリューション(LTE)、ロングタームエボリューションアドバンスト(LTE-A)、ボイスオーバーLTE(Voice-over-LTE、VoLTE)、または他の任意の移動データ・ネットワークまたは移動データ・ネットワークの組み合わせを含みうる、移動データ・ネットワークを含んでいてもよい。
本開示の範囲から逸脱することなく、環境100に修正、追加、または省略がなされてもよい。たとえば、いくつかの実施形態では、環境100は、システムであってもよい。別の例として、環境100は、任意の数のコンピューティング・システムからの任意の数のAPI文書、API仕様、HTMLページ等を含んでいてもよい。
図2〜図4に示される方法のそれぞれについて、方法は、任意の好適なシステム、装置、またはデバイスによって実行されうる。たとえば、図1のコンピューティング・システム102、または他のシステムもしくはデバイスは、方法に関連する動作の一つまたは複数を実行してもよい。離散的なブロックで示されているが、方法のブロックの一つまたは複数に関連するステップおよび動作は、所望される実装に依存して、追加的なブロックに分割されてもよく、より少数のブロックに組み合わされてもよく、または除去されてもよい。
さらに、図2〜図4に示される各方法について、本開示の範囲から逸脱することなく、当該方法に修正、追加、または省略がなされてもよい。たとえば、図2〜図4に示される方法の動作は、異なる順序で実装されてもよい。追加的または代替的に、2つ以上の動作が同時に実行されてもよい。さらに、概説された動作およびアクションは例として提供されているのであり、動作およびアクションのいくつかは、開示された実施形態の本質を損なうことなく、任意的であってもよく、より少数の動作およびアクションに組み合わされてもよく、または追加的な動作およびアクションに展開されてもよい。
図2は、本開示の一つまたは複数の実施形態による、API特徴リストの構築の例示的方法200のフローチャートを示す。いくつかの実施形態では、API特徴リストは、APIプロバイダーによって提供されるAPIに関連するAPIドキュメンテーションから構築されてもよい。API特徴(API features)は、各APIプロバイダーに関係した個別的な情報を含んでいてもよく、APIの各パラメータに対してどのAPIオブジェクトが有意でありうるかを詳述してもよい。たとえば、API特徴リストは、APIを定義する、APIを記述する、または他の仕方でAPIを呼び出すかAPIと対話しうるコードを誰かが構築するのを支援しうるデータを含む、APIの諸要素を含んでいてもよい。
ブロック202では、コンピューティング・システム102は、各APIプロバイダーに関連付けられたHTMLページ(たとえば、APIプロバイダーAによって提供される例示的なAPI 144a〜144nに関連付けられた例示的なHTMLページ116a〜116n)から得られるAPI特徴リストを構築してもよい。こうして、コンピューティング・システム102は、HTMLページから抽出されうるAPIを記述するデータを含むAPI特徴のリストを構築するために、例示的なHTMLページ116a〜116nのそれぞれと対話してもよい。
ブロック204では、コンピューティング・システム102は、構築されたAPI特徴リストから前記データを抽出してもよい。前記データは、APIおよび/またはAPI内のコンテンツに関する情報を含んでいてもよい。たとえば、該情報はAPIのコーディング構築に関する情報を含んでもよく、コンテキストは、APIによって、またはAPI内で提供される情報であってAPIの構築に関係しないものを含んでいてもよい。たとえば、コンピューティング・システム102は、API名、エンドポイント、HTTP動詞、APIパラメータ、カスケーディングスタイルシート(CCS)名、CCS識別情報(ID)、HTMLタグ名、HTMLタグID、テキスト情報、タグ・オブジェクト情報、ユーザー・クレデンシャルなどの情報を抽出してもよい。情報および/またはコンテンツの抽出は、図4を参照してより詳細に説明される。
ブロック206では、コンピューティング・システム102は、API特徴リストを構成する前記データを自動抽出するメソッドを作成するために機械学習モデルをトレーニングしてもよい。いくつかの実施形態では、機械学習モデルは、抽出されたコンテンツ(自動的に抽出されたものでも、または手動の対話を通じて抽出されたものでもよい)を受領してもよい。コンテンツは、たとえば、抽出されたコンテンツをエンコードしうる双方向長短期メモリ(Bi-direction long short-term memory、Bi-LSTM)モデルに供給されてもよい。モデルは、多様なHTMLタグと、各APIオブジェクトに対応するDOMの構文解析ツリーとを理解するよう動作しうる。たとえば、機械学習モデルは、「<HR>Verb Endpoint</HR>」〔動詞エンドポイント〕におけるHRタグがOASファイルにおける「Paths->Endpoint->Verb〔パス→エンドポイント→動詞〕に対応することを学習しうる。
ブロック208では、機械学習モデルは、同じAPIプロバイダーによって提供される種々のAPIにこの方法を適用してもよく、これは、選択されたAPIプロバイダーに関連するHTMLページ全部に機械学習モデルを適用することを含む。いくつかの実施形態では、機械学習モデルは、異なるAPIプロバイダーによって提供されるさまざまなAPIに適用されてもよい。
いくつかの実施形態では、機械学習モデルは、API特徴エンコーダ(たとえば、BiLSTM)モデル、高密度層(dense layer)、およびAPI特徴デコーダを含んでいてもよい。すると、API特徴デコーダは、APIオブジェクト・エンコーダ(たとえば、BiLSTM)モデル、別の高密度層、およびオブジェクト・デコーダにフィードしてもよく、結果として、トレーニングされたモデルを生じる。
ブロック208では、コンピューティング・システム102は、選択されたAPIプロバイダーのためのOASファイルを出力してもよい。いくつかの実施形態では、コンピューティング・システム102は、ブロック204および/またはブロック206で抽出されたデータからOASファイルを自動的に作成してもよい。OASファイルは、JSONまたはYAMLで構築されてもよく、そのAPIに関する一般情報、利用可能なパス、利用可能な動作、そのAPIによって実行される各動作についての入出力を含んでいてもよい。つまり、OASファイルは、APIを呼び出したり、または他の仕方でAPIと対話したりしうるコードを構築するための情報を含んでいてもよい。
図3は、本開示の一つまたは複数の実施形態による、API特徴のリストを構築する例示的な方法300のフローチャートを示す。いくつかの実施形態では、方法300は、図2のブロック202の例および/またはさらなる詳細を提供しうる。
ブロック302では、コンピューティング・システム102の対話モジュール104は、APIプロバイダー(たとえば、APIプロバイダーA)のAPIプラットフォームにアクセスしてもよい。たとえば、APIプロバイダーの例はGoogle(登録商標)であってもよく、APIプラットフォームはGoogleのAPIs Explorerであってもよい。簡明のため、図3の議論は、GoogleのAPIs Explorerプラットフォームを参照して行なうが、本開示に記載される方法およびシステムは、任意のAPIプロバイダーおよび/またはプラットフォームに適用されうることは理解されるべきである。いくつかの実施形態では、APIプラットフォームは、APIプロバイダーによって提供されるAPIの対話型リストを提供してもよい。
ブロック304では、対話モジュール104は、APIプロバイダーによって該プロバイダーのAPIプラットフォーム上で提供されるAPIのうちの一つを自動的かつプログラム的に選択してもよい。ブロック306では、対話モジュール104はAPI特徴リストを構築してもよく、これはここでも、同じAPIプロバイダーによって提供されるさまざまなAPIについて使用されうる。ある例示的実施形態では、AI特徴(feature)は、APIの各セグメントに対応するHTMLタグであってもよい(たとえば、API記述は、「<H1><H2 id='title'>」に対応するHTMLタグを使用してもよい)。API特徴リストを構築することによって、機械学習アルゴリズムは、種々のAPIプロバイダーからのAPIの種々の特徴について学習しうる。
いくつかの実施形態では、APIに関連するAPI特徴リスト(API feature list)は、APIオブジェクト、HTMLオブジェクト情報、APIプロバイダー情報、ドキュメントオブジェクトモデル(Document Object Model、DOM)オブジェクト、HTMLタグ、CCSスタイル・オブジェクト、ユーザー・クレデンシャル、可能なユーザー・アクションなどといった、そのAPIに関するデータを含んでいてもよい。いくつかの実施形態では、APIオブジェクトは、APIプロバイダーから抽出されるターゲットAPIオブジェクトのリストを含んでいてもよい。APIオブジェクト(API object)は、openapi、info、サーバー、パス(paths)、コンポーネント、セキュリティ、タグ、externalDocs〔外部文書〕、タイトル、記述、termsOfService〔サービス条件〕、連絡先、ライセンス、バージョン、名前、url、電子メール、記述、変数、enum、デフォルト、スキーマ、応答、パラメータ、例、requestBodies〔要求ボディ〕、ヘッダ、securitySchemes〔セキュリティ・スキーム〕、リンク、コールバックなどのフィールドを含んでいてもよい。
いくつかの実施形態では、DOMオブジェクトは、API、挙動および属性を表現し操作するために使用されるオブジェクトを表わしてもよく、該APIの関係および協働は、APIオブジェクトにアクセスするために使用されるDOMパスの一意的なアドレスを含んでいてもよい。追加的または代替的に、DOMオブジェクトは、APIオブジェクトのクラス名、HTMLタグ名、HTMLタグIDなどを含んでいてもよい。
いくつかの実施形態では、ユーザー・クレデンシャル(user credential)は、APIプロバイダーに関連する制限されたHTMLページにアクセスするための要求される情報に関係したデータを含んでいてもよく、ユーザー名、パスワード、要求されるプロトコル等を含む。
いくつかの実施形態では、ユーザー・アクションは、ログイン、スクロール、リンクまたはボタンのクリック、ドラッグ・アンド・ドロップなど、ユーザーが選択されたオブジェクトに対してとることができるアクションに関する詳細情報を含んでいてもよい。
API特徴リストの構築の例を、GoogleのAPIs Explorerを参照して述べる。いくつかの実施形態では、コンピューティング・システム102(たとえば、対話モジュール104および/またはオブジェクト検出モジュール106)は、HTTPメソッド(たとえば、「動詞(verb)」)およびエンドポイントを決定してもよく、エンドポイントは、HTTPリクエストを行なうときに使用するべきベースURLおよび認証クレデンシャルを定義してもよい。エンドポイント(endpoint)は、ベースIPアドレスおよびポート、ターゲット・システムのホスト名、および/またはパスを指しうる。例示的なHTTPメソッドまたは動詞は、POST、GET、PUT、DETELEなどを含みうる。例示的なエンドポイントは、GoogleのAPIs Explorerでの利用可能なAPIのリストにアクセスする場合の「abusiveexperiencereport.sites.get」であってもよい。
ブロック308では、対話モジュール104は、第1の選択されたAPIに関連する第1の例示的なHTMLページを自動的かつプログラム的に構文解析してもよい。前記第1の例示的なHTMLページ内に存在する、API特徴(たとえば、図2のブロック204からの特徴のリストから取得されうるような)および対話的要素を検出するためである。いくつかの実施形態では、対話的要素は、クリック可能なリンク、入力可能なフォーム、スクロール・アクション、ボタン、チェックボックスなどを含んでいてもよい。いくつかの実施形態では、API特徴(API feature)は、APIドキュメンテーションから決定されてもよく、各APIプロバイダーについての個別的な情報を含んでいてもよく、CSS名、CSS ID、HTMLタグ名、HTMLタグID、テキスト情報、HTMLタグ・オブジェクト情報、プライベートな情報にアクセスするためのユーザー・クレデンシャル等のような、APIのパラメータに関連するオブジェクトを含む。
いくつかの実施形態では、構文解析は、クローリング(crawling)(たとえば、リンクと対話し、リンクをたどること)およびデータ・スクレイピング(data scraping)を含んでいてもよい。
いくつかの実施形態では、対話モジュール104は、URLを処理し、HTMLタグおよびDOMオブジェクトを含むソースコードの内容を返すことによって、前記第1の例のHTMLページを構文解析してもよい。いくつかの実施形態では、対話モジュール104は、異なるウェブページと対話するために異なる対話規則を適用するよう、セレニウム(Selenium)ブラウザーを利用してもよい。セレニウム・ブラウザーは、選択されたAPIプラットフォームが必要に応じてアクセスし、読み取り、種々のアクションを適用できるようにするからである。
対話モジュール104は、前に構築されたAPI特徴リストを参照しながら、前記第1の例示的なHTMLページを自動的に構文解析して、前記第1のHTMLページからAPI特徴を抽出してもよい。後刻、対話モジュール104は、異なるHTMLページからAPI特徴を抽出するために
、異なるが関連するHTMLページを自動的に構文解析してもよい。
、異なるが関連するHTMLページを自動的に構文解析してもよい。
そこからAPI特徴が抽出されうるHTMLコードの例は、以下の通りでありうる:
<td class>="NYYWNC-h-c">
<span class="gwt-InlineLabel">
abusiveexperiencereport.site.get</span>==$0</td>
<td class>="NYYWNC-h-c">
<span class="gwt-InlineLabel">
abusiveexperiencereport.site.get</span>==$0</td>
いくつかの実施形態では、HTTPメソッドおよびエンドポイント用のDOMパスおよびDOMオブジェクトは、コンピューティング・システム102によって前記HTMLコードから取得され、下記の例示的な表1に示されるようなテーブルに入れられてもよい。
このように、特徴のリストは、例示的な表1に示されるように構築されてもよい。例示的な表1は、単一の例示的なAPIプロバイダーからの単一の選択されたAPIからの情報を含んでいる。
しかしながら、Google(登録商標)などの単一のAPIプロバイダーであるプロバイダーAは、一組の規則のみに従って諸APIを利用可能にすることがあり、よって、GoogleのAbusive Experience Report API〔不正行為報告API〕の上記の例のために構築された特徴のリストは、GoogleのApps Explorer上でGoogle(登録商標)によって提供される別のAPI、たとえばGoogle App Engine APIに適用されてもよい。
ブロック310では、対話モジュール104は、対話的な要素への選択されたAPIに関連付けられたHTMLページおよび/または図2からの特徴のリストに関連付けられたAPIオブジェクトと自動的に対話してもよい。たとえば、アクションを要求する対話的要素が存在する場合、対話モジュール104は、決定された対話を適用してもよい。対話は、ログイン、リンクまたはボタンのクリック、オプション・ボタンまたはチェックボックスによるオブジェクトの選択、フォームの記入、ページのスクロールなどを含みうる。
一例では、HTMLページは、次のステップを処理するためにクリックされることが意図されているリンクまたはボタンを含んでいてもよい。よって、対話モジュール104は、リンクを自動的かつプログラム的にクリックする、選択されたAPIに関するさらなる情報にアクセスするためにオプション・ボタンを選択する、提出ボタンをクリックする、などしてもよい。
一例では、HTMLページは、ページを一回見る際に呈示されるよりも多くの情報を含むことがあり、たとえば、呈示されたHTMLの別の部分にスクロールすることによって、より多くの情報が得られることがある。よって、対話モジュール104は、APIプラットフォーム上で提供される、より多くの情報にアクセスするために、各例示的なHTMLページの種々の部分に自動的かつプログラム的にスクロールしてもよい。
一例では、HTMLページは、ログイン・ページ(たとえば、コンピューティング・システムは、ユーザーがウェブページからログオフされたとき、およびウェブページがユーザーに再びログインを要求するときを検出してもよい)、ログイン一様資源位置指定子(URL)、ユーザー名、パスワード等を検出するためのDOMオブジェクト情報を含むことができる。よって、対話モジュール104は、ユーザー・クレデンシャルへのアクセスを有するか、または決定されたユーザー・クレデンシャルを有することができ、該ユーザー・クレデンシャルをログイン・フォームに提供し、異なるHTMLページにログオンするために提出ボタンと対話することができる。たとえば、APIプロバイダーによって提供されるAPIは、複数のHTMLページに関連付けられてもよい。しかしながら、それらのページの少なくとも一つは、ユーザーがHTMLページの一つにアクセスするために、サインイン・クレデンシャルを要求する場合がある。よって、対話モジュール104は、別の関連するHTMLページにアクセスするために、ログイン・プロンプトにおいて自動的にログインしてもよい。
いくつかの実施形態では、APIオブジェクトは、DOMオブジェクトとの対話を通じて検出されてもよい。DOMは、クロスプラットフォームかつ言語に依存しないインターフェースであり、拡張可能マークアップ言語(XML)またはHTML文書がツリー構造であり、各ノードが文書の一部を表わすオブジェクトであると考える。ツリーの各分枝はノードで終わり、各ノードはオブジェクトを含む。
いくつかの実施形態では、抽出モジュール108は、このように、検出されたAPIオブジェクトから情報を抽出してもよい。抽出された情報は、選択されたオブジェクトのCSSスタイル・クラス名、HTMLルートから選択されたオブジェクトへのパス(すなわち、XPath)、選択されたオブジェクトからのHTMLタグ名、選択されたオブジェクトのタグIDなどを含んでいてもよい。
HTMLページ上のDOMオブジェクトとの対話を通じて、APIオブジェクトのリストが作成されてもよい。より具体的には、ブロック312において、HTMLページ上で検出されたDOMオブジェクトと対話することによって、オブジェクト検出モジュール106は、多くのAPIオブジェクトを検出してもよく、その後、APIオブジェクトのリストを作成してもよい。いくつかの実施形態では、APIオブジェクトのリストは、APIに関連付けられたDOMオブジェクトであってもよい。HTMLタグの例を以下に示す。
<TABLE Style=CSS_Y" ID="Table_X"> <ROWS> <TR> <TD>Shady Grove</TD> <TD>Aeolian</TD> </TR> <TR> <TD>Over the River, Charlie</TD> <TD>Dorian</TD> </TR> </ROWS> </TABLE>
APIプロバイダーによって提供されるAPIごとに、APIオブジェクトのリストが作成されてもよい。ブロック314において、コンピューティング・システム102は、選択されたAPIに関連するHTMLページのそれぞれが構文解析され、情報および/またはコンテンツが抽出されたかどうかを判定してもよい。各HTMLページが構文解析され終わっている場合、コンピューティング・システム102はブロック304に戻り、異なるAPIで前記プロセスを繰り返す。よって、ブロック316では、コンピューティング・システム102は、APIプラットフォーム上でアクセス可能な各APIに関連付けられたすべてのHTMLページが構文解析され、情報および/またはコンテンツが抽出されるまで、前記プロセスを繰り返してもよい。
しかしながら、コンピューティング・システム102が、選択されたAPIに関連するすべてのHTMLページが構文解析され終わってはいないと判定する場合、コンピューティング・システム102はブロック308に戻り、関連する各HTMLページが処理され終わるまで前記プロセスを繰り返す。ひとたび第1のAPIプロバイダーのAPIプラットフォーム上でアクセス可能なすべてのAPIが処理されたら、コンピューティング・システム102は、サーバー118にアクセスするなどして、第2のAPIプロバイダーに進む。ここで、サーバー118はAPIプロバイダーBに関連するAPIプラットフォームをホストする。
選択されたAPIプロバイダーによって提供される各APIに関連する、可能なAPIオブジェクトのリストを構築した後、コンピューティング・システム102は、各APIに関連するソースページから情報および/またはコンテンツを抽出してもよい。こうして、コンピューティング・システム102は、前に識別されたHTMLタグのそれぞれを処理し、図3のブロック314で構築されたAPIオブジェクトのリストを構成する検出されたAPIオブジェクトに従って情報および/またはコンテンツを抽出してもよい。いくつかの実施形態では、抽出された情報および/またはコンテンツは、OAS要求オブジェクト、種々のプログラミング言語でのサンプル・コード、GitHubソース、コンテンツ、テーブル、対話的ページ、対話的ページの応答などを含んでいてもよい。APIオブジェクトからの情報および/またはコンテンツの抽出は、図4を参照して、より詳細に記述される。
図4は、図3を参照して記述した各APIに関連するHTMLページから情報および/またはコンテンツを抽出する例示的な方法400のフローチャートを示す。ブロック402において、抽出モジュール108は、図3のブロック314において構築されたAPIオブジェクトのリストからレコードを選択してもよい。ブロック404において、抽出モジュール108は、APIオブジェクトのリストから、選択されたレコード内でどの型のAPIオブジェクトが示されるかを決定してもよく、たとえば、APIオブジェクトの型は、メタデータ、情報のテーブル、コード、「try out」、GitHubソースなどを含んでいてもよい。
いくつかの実施形態では、メタデータは、オブジェクトのリストからの選択されたレコードに関連付けられたAPIに関連付けられたメタデータ情報に対応してもよい。メタデータは、APIホスト名、APIプロバイダー名、API名またはタイトル、APIバージョン、APIコンタクト情報、API更新日、APIプロバイダー・ソーシャル・ネットワーク、API記述、サービス条件、APIライセンス、APIサポート情報、API文書ページ、API URL、APIスキーム、API電子メールなどを含んでいてもよい。
いくつかの実施形態では、テーブルは、たとえば、APIエンドポイント、エンドポイントのAPIパラメータ、エンドポイントのAPI応答、APIセキュリティ情報などを含むHTMLテーブルであってもよい。HTMLテーブル情報の例を下記に示す。
いくつかの実施形態では、コードは、Python、Java、JavaScript、JSONなどといったさまざまなプログラミング言語で書かれたソフトウェア・コードであってもよい。表3で提供される同じ情報に対応するJSONコードの例は、以下のようなものでありうる。
{
"reviewedSite": string,
"lastChangeTime": string,
"abusiveStatus": enum(AbusiveStatus),
"underReview": boolean,
"enforcementTime": string,
"reportURL": string,
"filterStatus": enum(FilterStatus)
}
{
"reviewedSite": string,
"lastChangeTime": string,
"abusiveStatus": enum(AbusiveStatus),
"underReview": boolean,
"enforcementTime": string,
"reportURL": string,
"filterStatus": enum(FilterStatus)
}
いくつかの実施形態では、「try out」が、選択されたAPIの入力パラメータおよび出力パラメータを説明するオブジェクトであってもよい。「try out」からの例示的な抽出された情報は、次のようなものであってもよい。
{
parameters:{
{
name: "name",
description: "the required site name. This is the site property whose abusive experiences have been reviewed and it must be URL encoded.〔要求されるサイト名。これは、不正行為がレビューされたサイト属性であり、URLエンコードされる必要がある。〕
type: "string"
},
{
fields: "abusiveStatus, enforcementTime, filterStatus, lastChangeTime, underReview, reporrtURL, reviewedSite
description: "Selector specifying which fields to include in a partial response."〔部分的な応答にどのフィールドを含めるかを指定するセレクタ〕
}
}
}
{
parameters:{
{
name: "name",
description: "the required site name. This is the site property whose abusive experiences have been reviewed and it must be URL encoded.〔要求されるサイト名。これは、不正行為がレビューされたサイト属性であり、URLエンコードされる必要がある。〕
type: "string"
},
{
fields: "abusiveStatus, enforcementTime, filterStatus, lastChangeTime, underReview, reporrtURL, reviewedSite
description: "Selector specifying which fields to include in a partial response."〔部分的な応答にどのフィールドを含めるかを指定するセレクタ〕
}
}
}
選択されたレコードにどの型のAPIオブジェクトが含まれるかを決定した後、抽出モジュール108は、このように、オブジェクトから情報および/またはコンテンツを抽出してもよい。データ抽出は、任意の既知のデータ抽出方法によって可能にされうる。各オブジェクトから抽出されたデータから、コンピューティング・システム102は、次いで、機械読み取り可能であり、さらなるAPI仕様目的のために使用されうるOASファイルを構築してもよい。いくつかの実施形態では、コンピューティング・システム102は、HTMLファイルの構文解析中に抽出された情報および/またはコンテンツからOASファイルを自動的に生成してもよい。OASファイルは、JSONまたはYAMLで構築されてもよく、API、使用可能なパス、使用可能な動作、各動作についての入出力に関する一般的な情報を含んでいてもよい。ある例示的な実施形態では、OASファイルを生成することは、各APIオブジェクトをOASフォーマットにマッピングすることを含んでいてもよい。たとえば、HTMLから抽出されたHTTP動詞関数は、次のようにJSON OASファイルに追加されてもよい:
ROOT->"paths"->"extracted endpoint"->"extracted HTTP verb"
〔ルート→「パス」→「抽出されたエンドポイント」→「抽出されたHTTP動詞」〕
ROOT->"paths"->"extracted endpoint"->"extracted HTTP verb"
〔ルート→「パス」→「抽出されたエンドポイント」→「抽出されたHTTP動詞」〕
さらに、いくつかの実施形態では、コンピューティング・システム102は、他のAPIプラットフォームに一組の規則を適用するため、および他のAPIプロバイダーがOASファイルを構築するために、HTMLタグ構築およびコンテンツ抽出を学習するよう機械学習を使用してもよい。たとえば、いくつかの実施形態では、コンピューティング・システム102は、各オブジェクトに自然言語処理アルゴリズムを適用してもよく、HTMLページ構文解析およびデータ抽出を改善するために機械学習に基づく分類を用いてもよい。次いで、自然言語処理技術を使用して、API情報およびコンテンツを抽出するために、さまざまなAPIプロバイダーおよび提供されるHTMLページと対話してもよい。いくつかの実施形態では、機械学習アルゴリズムは、DOMオブジェクト、ならびに各APIオブジェクトについてのユーザー・アクションを学習し、予測してもよい。たとえば、機械学習アルゴリズムは、一つのAPIオブジェクト(たとえば、エンドポイント)を抽出するために、アクション(たとえば、ログイン、Xをクリック)の連鎖を学習してもよい。
半構造化された情報抽出を使用するAPI仕様の構築は、コンピュータ自体の動作へのいくつもの恩恵、およびコンピュータ・プログラミングの関連分野への改善を提供しうる。コンピュータ自体に関しては、API仕様の構築は、コンピューティング・システムが、オブジェクト情報を抽出するために、APIプロバイダーに関連するさまざまなHTMLページと自動的に対話できるようにすることによって、コンピュータに改善された機能性を提供しうる。加えて、本開示に記載される方法およびシステムは、機械学習タスクのためのタイムリーで、より効率的な計算時間を提供する。利用可能な資源を活用するためにタスクが割り当てられてもよく、これも、向上した効率および通信時間につながりうる。
さらに、本開示は、コンピューティング・システムが、以前はコンピュータによって実行可能ではなかったタスクを実行することを許容しうる。たとえば、本開示は、API資源を記述する普通の言語の文書からの関数への属性の相関(the correlation of attributes to functions)を容易にでき、よって、API資源についてのコンピュータ読み取り可能な命令が生成されうる。よって、本開示の実施形態は、コンピュータ・システム自体のパフォーマンスを改善しうる。
コンピュータ・プログラミングの改善に関しては、本開示は、コンピュータ読み取り可能なコードの向上された能力および生成を提供しうる。たとえば、本開示は、HTMLページ上の手動での対話を必要とすることなく、コンピュータ読み取り可能なコードの生成を容易にしうる。よって、本開示の実施形態は、コンピュータ・プログラミングを改善しうる。
図5は、本開示に記載される少なくとも一つの実施形態による、例示的なコンピューティング・システム500を示す。システム500は、ネットワークを通じて通信するように構成された任意の好適なシステム、装置、またはデバイスを含んでいてもよい。コンピューティング・システム500は、プロセッサ510、メモリ520、データ記憶装置530、および通信ユニット540を含んでいてもよく、これらはすべて通信上結合されてもよい。データ記憶装置530は、API文書、API仕様などのさまざまな型のデータを含んでいてもよい。
一般に、プロセッサ510は、さまざまなコンピュータ・ハードウェアまたはソフトウェア・モジュールを含む、任意の好適な特殊目的または汎用のコンピュータ、コンピューティング・エンティティ、または処理装置を含んでいてもよく、任意の適用可能なコンピュータ可読記憶媒体に記憶された命令を実行するように構成されてもよい。たとえば、プロセッサ510は、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路、フィールド・プログラマブルゲートアレイ(FPGA)、またはプログラム命令を解釈および/または実行するおよび/またはデータを処理するように構成された任意の他のデジタルまたはアナログ回路を含んでいてもよい。
図5では単一のプロセッサとして示されているが、プロセッサ510は、本開示において説明した任意の数の動作を個別にまたは集合的に実行するように構成された、任意の数のネットワークまたは物理的位置に分散された任意の数のプロセッサを含んでいてもよいことが理解される。いくつかの実施形態では、プロセッサ510は、メモリ520、データ記憶装置530、またはメモリ520とデータ記憶装置530に記憶されたプログラム命令を解釈および/または実行し、および/またはデータを処理してもよい。いくつかの実施形態では、プロセッサ510は、データ記憶装置530からプログラム命令をフェッチし、プログラム命令をメモリ520にロードしてもよい。
プログラム命令がメモリ520にロードされた後、プロセッサ510は、それぞれ図2、図3、図4の方法200、300、または400を実行するための命令のようなプログラム命令を実行してもよい。たとえば、プロセッサ510は、プロバイダーのAPIプラットフォームから情報を自動的かつ対話的に抽出し、同じAPIプロバイダーによって提供されるいくつかの異なるAPIに一組の規則を適用することに関する命令を得てもよい。
メモリ520およびデータ記憶装置530は、コンピュータ可読記憶媒体、または、コンピュータ実行可能な命令またはデータ構造を担持するまたは記憶するための一つまたは複数のコンピュータ可読記憶媒体を含んでいてもよい。そのようなコンピュータ可読記憶媒体は、プロセッサ510のような汎用または専用コンピュータによってアクセスされうる任意の利用可能な媒体でありうる。いくつかの実施形態では、コンピューティング・システム500は、メモリ520およびデータ記憶装置530のいずれかも、含んでいてもよいし、含まなくてもよい。
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、ランダムアクセスメモリ(RAM)、読出し専用メモリ(ROM)、電気的に消去可能なプログラマブル読出し専用メモリ(EEPROM)、コンパクトディスク読み出し専用メモリ(CD-ROM)、または他の光ディスク記憶、磁気ディスク記憶、または他の磁気記憶デバイス、フラッシュメモリデバイス(たとえば、ソリッドステートメモリデバイス)、またはコンピュータ実行可能命令またはデータ構造の形で所望のプログラムコードを担持または記憶するために使用されてもよく、かつ汎用または専用コンピュータによってアクセスされうる任意の他の記憶媒体を含む、非一時的なコンピュータ可読記憶媒体を含んでいてもよい。それらの組み合わせも、コンピュータ可読記憶媒体の範囲内に含まれうる。コンピュータ実行可能命令は、たとえば、プロセッサ510に特定の動作または動作群を実行させるように構成された命令およびデータを含んでいてもよい。
通信ユニット540は、ネットワークを通じて情報を送受信するように構成された任意のコンポーネント、装置、システム、またはそれらの組み合わせを含んでいてもよい。いくつかの実施形態では、通信ユニット540は、他の場所、同じ場所にある他の装置と、またはさらには同じシステム内の他のコンポーネントと通信してもよい。たとえば、通信ユニット540は、モデム、ネットワークカード(無線または有線)、光通信デバイス、赤外線通信デバイス、無線通信デバイス(アンテナなど)、および/またはチップセット(Bluetoothデバイス、802.6デバイス(たとえばメトロポリタン・エリア・ネットワーク(MAN)など)、WiFiデバイス、WiMaxデバイス、セルラー通信設備またはその他)および/またはその他を含んでいてもよい。通信ユニット540は、本開示に記載されるネットワークおよび/または任意の他の装置またはシステムとデータが交換されることを許容しうる。たとえば、通信ユニット540は、システム500が、コンピュータ・システムおよび/または他のネットワークのような他のシステムと通信することを許容しうる。
本開示の範囲から逸脱することなく、システム500に修正、追加、または省略を行なってもよい。たとえば、データ記憶装置530は、複数の場所に配置され、ネットワークを通じてプロセッサ510によってアクセスされる複数の異なる記憶媒体であってもよい。
上述のように、本開示に記載される実施形態は、下記でより詳細に論じられるように、さまざまなコンピュータ・ハードウェアまたはソフトウェア・モジュールを含む、特殊目的または汎用コンピュータ(たとえば、図5のプロセッサ510)の使用を含んでいてもよい。さらに、上述のように、本開示に記載の実施形態は、コンピュータ実行可能命令またはデータ構造を担持するまたは記憶するために、コンピュータ可読媒体(たとえば、図5のメモリ520またはデータ記憶装置530)を使用して実装されてもよい。
本開示において使用されるところでは、用語「モジュール」または「コンポーネント」は、該モジュールまたはコンポーネントのアクションを実行するよう構成された具体的なハードウェア実装および/またはコンピューティング・システムの汎用ハードウェア(たとえば、コンピュータ可読媒体、処理装置、または他のハードウェア)に記憶されうるおよび/または実行されうるソフトウェア・オブジェクトまたはソフトウェア・ルーチンを指してもよい。いくつかの実施形態では、本開示に記載される異なるコンポーネント、モジュール、エンジン、およびサービスは、コンピューティング・システム上で実行されるオブジェクトまたはプロセスとして(たとえば、別個のスレッドとして)実装されてもよい。本開示に記載されるシステムおよび方法のいくつかは、一般に、(汎用ハードウェアに記憶および/または実行される)ソフトウェアで実装されるものとして記載されるが、具体的なハードウェア実装またはソフトウェアと具体的なハードウェア実装の組み合わせも可能であり、考えられている。本稿において、「コンピューティング・エンティティ」は、本開示において前に定義された任意のコンピューティング・システム、またはコンピューティング・システム上で動作する任意のモジュールまたは小モジュールの組み合わせであってもよい。
一般的な慣行により、図面に示されるさまざまな特徴は、同縮尺で描かれていないことがある。本開示において提示される図は、何らかの特定の装置(たとえば、デバイス、システムなど)または方法の実際の図であることを意図するものではなく、単に、本開示のさまざまな実施形態を説明するために用いられる理想化された表現である。よって、さまざまな特徴の寸法は、明確のために任意に拡大または縮小されていることがある。さらに、図面のいくつかは、明瞭のために簡略化されていることがある。このように、図面は、所与の装置(たとえば、デバイス)のコンポーネントのすべて、または特定の方法のすべての動作を描くものではないことがある。
本開示において、特に添付の特許請求の範囲(たとえば、添付の特許請求の範囲の本文)において使用される用語は、一般に「開放的」な用語として意図されている(たとえば、「含む」という用語は「含むが、これに限定されない」と解釈されるべきであり、「有する」という用語は「少なくとも…を有する」と解釈されるべきであり、「含む」という用語は「含むが、これに限定されない」と解釈されるべきである)。
さらに、特定の数の導入される請求項記載が意図されている場合、そのような意図は請求項に明示的に記載され、そのような記載がない場合、そのような意図は存在しない。たとえば、理解を助けるために、以下の添付の特許請求の範囲は、請求項記載を導入するために「少なくとも一つの」および「一つまたは複数の」という導入句の使用を含むことがある。
さらに、導入される請求項記載の特定の数が明示的に記載されている場合であっても、当業者は、そのような記載は、少なくともその記載された数、を意味するものと解釈されるべきであることを認識するであろう(たとえば、他の修飾語を伴わない「2つの記載」というだけの記載は、少なくとも2つの記載、または2つ以上の記載を意味する)。さらに、「A、B、C等の少なくとも一つ」または「A、B、C等の一つまたは複数」と類似の慣用表現が用いられている場合には、一般に、そのような構文は、Aのみ、Bのみ、Cのみ、AとBが一緒、AとCが一緒、BとCが一緒、またはA、B、Cが一緒等を含むことが意図されている。
さらに、明細書、特許請求の範囲、または図面のいずれに記載されているかを問わず、2つ以上の代替的な用語を提示する任意の離接的な語句は、用語の一方、用語のいずれか、または両方の用語を含む可能性を考えているものと理解されるべきである。たとえば、「AまたはB」という句は、「A」または「B」または「AおよびB」の可能性を含むと理解されるべきである。
しかしながら、そのような句の使用は、不定冠詞「a」または「an」による請求項記載の導入が、そのような導入された請求項記載を含むいずれかの特定の請求項を、そのような記載を一つだけ含む実施形態に限定することを含意していると解釈されるべきではない。これはたとえ同じ請求項が導入句「一つまたは複数の」または「少なくとも一つの」および「a」または「an」のような不定冠詞を含んでいるときでも同じである(たとえば、「a」および/または「an」は「少なくとも一つの」または「一つまたは複数の」と解釈されるべきである)。同じことは、請求項記載を導入するために使用される定冠詞の使用にも当てはまる。
さらに、用語「第1」、「第2」、「第3」等の使用は、本明細書では必ずしも要素の特定の順序または数を含意するために使用されるものではない。一般に、「第1」、「第2」、「第3」等の用語は、異なる要素を区別するために一般的な識別子として使用される。用語「第1」、「第2」、「第3」等が特定の順序を含意することを示すものがなければ、これらの用語は特定の順序を含意するものと理解されるべきではない。さらに、用語「第1」、「第2」、「第3」等が要素の特定の数を含意することを示すものがなければ、これらの用語は、要素の特定の数を含意するものと理解されるべきではない。たとえば、第1のウィジェットが第1のサイドを有すると記載されることがあり、第2のウィジェットが第2のサイドを有していると記載されることがありうる。第2のウィジェットに関する用語「第2のサイド」の使用は、第2のウィジェットのそのようなサイドを、第1のウィジェットの「第1のサイド」から区別するためであってもよく、第2のウィジェットが2つのサイドをもつことを含意しない。
本開示に記載されたすべての例および条件付き言辞は、本発明および発明者が当該技術分野の発展に寄与した概念を理解する際に読者を助けるための教育的目的のために意図されており、そのように具体的に記載された例および条件への限定なしに解釈されるべきである。本開示の実施形態を詳細に説明したが、本開示の精神および範囲から逸脱することなく、さまざまな変更、置換、および代替を行なうことができることは理解されるべきである。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
プロセッサによって、少なくとも一つのアプリケーション・プログラミング・インターフェース(API)の第1のプロバイダーに関連付けられた第1のサーバーにアクセスする段階と;
前記プロセッサによって、前記第1のプロバイダーにより提供される前記少なくとも一つのAPIを自動的に選択する段階と;
選択された前記少なくとも一つのAPIに関連する特徴のリストを構築する段階と;
前記プロセッサによって、選択された前記少なくとも一つのAPIに関連付けられた第1のハイパーテキスト転送プロトコル(HTML)ページをパースする段階と;
前記プロセッサによって、前記第1のHTMLページとの少なくとも一つのユーザー対話を自動的にシミュレートする段階と;
前記プロセッサによって、a)前記特徴のリストを構築すること、b)前記第1のHTMLページをパースすること、およびc)前記第1のHTMLページとの少なくとも一つのユーザー対話を自動的にシミュレートすることに基づいて、APIオブジェクト情報を抽出する段階と;
前記プロセッサによって、抽出されたAPIオブジェクト情報に基づいて、機械可読なAPI仕様を構築する段階とを含む、
方法。
(付記2)
付記1記載の方法であって、さらに:
前記プロセッサによって、選択された前記少なくとも一つのAPIに関連付けられた第2のHTMLページをパースする段階と;
前記プロセッサによって、前記第2のHTMLページとの少なくとも一つのユーザー対話を自動的にシミュレートする段階と;
前記第2のHTMLページをパースすることおよび前記第2のHTMLページとの少なくとも一つのユーザー対話を自動的にシミュレートすることに基づいて、APIオブジェクト情報を抽出する段階とを含み、
前記機械可読なAPI仕様を構築することは、前記パースすること、前記自動的にシミュレートすること、および前記APIオブジェクト情報の抽出に基づいて、前記機械可読なAPI仕様を構築することをさらに含む、
方法。
(付記3)
前記特徴のリストを構築することがさらに:
HTMLオブジェクト情報、ドキュメントオブジェクトモデル(DOM)オブジェクト、カスケーディングスタイルシート(CCS)オブジェクト、HTMLタグ、またはそれらの組み合わせの群から選択された特徴のリストを構築することを含む、
付記1記載の方法。
(付記4)
APIオブジェクト情報を抽出することがさらに:
構築された特徴のリストとAPIオブジェクト情報値にさらに基づいて、APIオブジェクト情報を自動的に抽出することを含む、
付記1記載の方法。
(付記5)
自動的に選択することがさらに:
前記プロセッサによって、前記APIに関連付けられた第2のHTMLページ上の対話型オブジェクトの存在を判別する段階であって、前記対話型オブジェクトが一様資源位置指定子(URL)である、段階と;
選択した前記少なくとも一つのAPIに関する情報にアクセスするために、ユーザーの、前記URLとの対話を自動的にシミュレートする段階とを含む、
付記1記載の方法。
(付記6)
前記第1のHTMLページ上のユーザー対話を自動的にシミュレートすることがさらに:
スクロール、ログイン、リンクのクリック、ボタンのクリック、ドラッグ・アンド・ドロップ、選択、またはそれらの組み合わせのうちの少なくとも一つをプログラム的にシミュレートすることを含む、
付記1記載の方法。
(付記7)
前記機械可読なAPI仕様を構築することがさらに:
半構造化された抽出されたデータに基づいてOpenAPI(OAS)仕様を構築することを含む、
付記1記載の方法。
(付記8)
前記OAS仕様を構築することがさらに:
JavaScriptオブジェクト記法(JSON)またはYAMLエイントマークアップランゲージ(YAML)でのOAS仕様を構築することを含む、
付記7記載の方法。
(付記9)
前記第1のサーバーにアクセスすることがさらに:
半構造化されたAPIプラットフォームにアクセスすることを含む、
付記1記載の方法。
(付記10)
前記抽出されたAPIオブジェクト情報に基づいて、前記機械可読なAPI仕様を自動的に構築するために機械学習モデルをトレーニングする段階をさらに含む、
付記1記載の方法。
(付記11)
メモリと;
動作を実行するよう構成された、前記メモリに動作上結合されたプロセッサとを有するシステムであって、前記動作は、
プロセッサによって、少なくとも一つのアプリケーション・プログラミング・インターフェース(API)の第1のプロバイダーに関連付けられた第1のサーバーにアクセスする段階と;
前記プロセッサによって、前記第1のプロバイダーにより提供される前記少なくとも一つのAPIを自動的に選択する段階と;
選択された前記少なくとも一つのAPIに関連する特徴のリストを構築する段階と;
前記プロセッサによって、選択された前記少なくとも一つのAPIに関連付けられた第1のハイパーテキスト転送プロトコル(HTML)ページをパースする段階と;
前記プロセッサによって、前記第1のHTMLページとの少なくとも一つのユーザー対話を自動的にシミュレートする段階と;
前記プロセッサによって、a)前記特徴のリストを構築すること、b)前記第1のHTMLページをパースすること、およびc)前記第1のHTMLページとの少なくとも一つのユーザー対話を自動的にシミュレートすることに基づいて、APIオブジェクト情報を抽出する段階と;
前記プロセッサによって、抽出されたAPIオブジェクト情報に基づいて、機械可読なAPI仕様を構築する段階とを含む、
システム。
(付記12)
付記11記載のシステムであって、さらに:
前記プロセッサによって、選択された前記少なくとも一つのAPIに関連付けられた第2のHTMLページをパースする段階と;
前記プロセッサによって、前記第2のHTMLページとの少なくとも一つのユーザー対話を自動的にシミュレートする段階と;
前記第2のHTMLページをパースすることおよび前記第2のHTMLページとの少なくとも一つのユーザー対話を自動的にシミュレートすることに基づいて、APIオブジェクト情報を抽出する段階とを含み、
前記機械可読なAPI仕様を構築することは、前記第1のHTMLページおよび前記第2のHTMLページをパースすることに基づく前記APIオブジェクト情報に基づいて、前記機械可読なAPI仕様を構築することをさらに含む、
システム。
(付記13)
前記特徴のリストを構築することがさらに:
HTMLオブジェクト情報、ドキュメントオブジェクトモデル(DOM)オブジェクト、カスケーディングスタイルシート(CCS)オブジェクト、HTMLタグ、またはそれらの組み合わせの群から選択された特徴のリストを構築することを含む、
付記11記載のシステム。
(付記14)
APIオブジェクト情報を抽出することがさらに:
構築された特徴のリストとAPIオブジェクト情報値にさらに基づいて、APIオブジェクト情報を自動的に抽出することを含む、
付記11記載のシステム。
(付記15)
自動的に選択することがさらに:
前記プロセッサによって、前記APIに関連付けられた第2のHTMLページ上の対話型オブジェクトの存在を判別する段階であって、前記対話型オブジェクトが一様資源位置指定子(URL)である、段階と;
選択した前記少なくとも一つのAPIに関する情報にアクセスするために、ユーザーの、前記URLとの対話を自動的にシミュレートする段階とを含む、
付記11記載のシステム。
(付記16)
前記第1のHTMLページ上のユーザー対話を自動的にシミュレートすることがさらに:
スクロール、ログイン、リンクのクリック、ボタンのクリック、ドラッグ・アンド・ドロップ、選択、またはそれらの組み合わせのうちの少なくとも一つをプログラム的にシミュレートすることを含む、
付記11記載のシステム。
(付記17)
前記機械可読なAPI仕様を構築することがさらに:
半構造化された抽出されたデータに基づいてOpenAPI(OAS)仕様を構築することを含む、
付記11記載のシステム。
(付記18)
前記OAS仕様を構築することがさらに:
JavaScriptオブジェクト記法(JSON)またはYAMLエイントマークアップランゲージ(YAML)で前記OAS仕様を構築することを含む、
付記17記載のシステム。
(付記19)
前記第1のサーバーにアクセスすることがさらに:
半構造化されたAPIプラットフォームにアクセスすることを含む、
付記11記載のシステム。
(付記20)
一つまたは複数のプロセッサによって実行されたときにシステムに動作を実行させる命令を含んでいる一つまたは複数の非一時的なコンピュータ可読媒体であって、前記動作は:
プロセッサによって、少なくとも一つのアプリケーション・プログラミング・インターフェース(API)の第1のプロバイダーに関連付けられた第1のサーバーにアクセスする段階と;
前記プロセッサによって、前記第1のプロバイダーにより提供される前記少なくとも一つのAPIを自動的に選択する段階と;
選択された前記少なくとも一つのAPIに関連する特徴のリストを構築する段階と;
前記プロセッサによって、選択された前記少なくとも一つのAPIに関連付けられた第1のハイパーテキスト転送プロトコル(HTML)ページをパースする段階と;
前記プロセッサによって、前記第1のHTMLページとの少なくとも一つのユーザー対話を自動的にシミュレートする段階と;
前記プロセッサによって、a)前記特徴のリストを構築すること、b)前記第1のHTMLページをパースすること、およびc)前記第1のHTMLページとの少なくとも一つのユーザー対話を自動的にシミュレートすることに基づいて、APIオブジェクト情報を抽出する段階と;
前記プロセッサによって、抽出されたAPIオブジェクト情報に基づいて、機械可読なAPI仕様を構築する段階とを含む、
媒体。
(付記1)
プロセッサによって、少なくとも一つのアプリケーション・プログラミング・インターフェース(API)の第1のプロバイダーに関連付けられた第1のサーバーにアクセスする段階と;
前記プロセッサによって、前記第1のプロバイダーにより提供される前記少なくとも一つのAPIを自動的に選択する段階と;
選択された前記少なくとも一つのAPIに関連する特徴のリストを構築する段階と;
前記プロセッサによって、選択された前記少なくとも一つのAPIに関連付けられた第1のハイパーテキスト転送プロトコル(HTML)ページをパースする段階と;
前記プロセッサによって、前記第1のHTMLページとの少なくとも一つのユーザー対話を自動的にシミュレートする段階と;
前記プロセッサによって、a)前記特徴のリストを構築すること、b)前記第1のHTMLページをパースすること、およびc)前記第1のHTMLページとの少なくとも一つのユーザー対話を自動的にシミュレートすることに基づいて、APIオブジェクト情報を抽出する段階と;
前記プロセッサによって、抽出されたAPIオブジェクト情報に基づいて、機械可読なAPI仕様を構築する段階とを含む、
方法。
(付記2)
付記1記載の方法であって、さらに:
前記プロセッサによって、選択された前記少なくとも一つのAPIに関連付けられた第2のHTMLページをパースする段階と;
前記プロセッサによって、前記第2のHTMLページとの少なくとも一つのユーザー対話を自動的にシミュレートする段階と;
前記第2のHTMLページをパースすることおよび前記第2のHTMLページとの少なくとも一つのユーザー対話を自動的にシミュレートすることに基づいて、APIオブジェクト情報を抽出する段階とを含み、
前記機械可読なAPI仕様を構築することは、前記パースすること、前記自動的にシミュレートすること、および前記APIオブジェクト情報の抽出に基づいて、前記機械可読なAPI仕様を構築することをさらに含む、
方法。
(付記3)
前記特徴のリストを構築することがさらに:
HTMLオブジェクト情報、ドキュメントオブジェクトモデル(DOM)オブジェクト、カスケーディングスタイルシート(CCS)オブジェクト、HTMLタグ、またはそれらの組み合わせの群から選択された特徴のリストを構築することを含む、
付記1記載の方法。
(付記4)
APIオブジェクト情報を抽出することがさらに:
構築された特徴のリストとAPIオブジェクト情報値にさらに基づいて、APIオブジェクト情報を自動的に抽出することを含む、
付記1記載の方法。
(付記5)
自動的に選択することがさらに:
前記プロセッサによって、前記APIに関連付けられた第2のHTMLページ上の対話型オブジェクトの存在を判別する段階であって、前記対話型オブジェクトが一様資源位置指定子(URL)である、段階と;
選択した前記少なくとも一つのAPIに関する情報にアクセスするために、ユーザーの、前記URLとの対話を自動的にシミュレートする段階とを含む、
付記1記載の方法。
(付記6)
前記第1のHTMLページ上のユーザー対話を自動的にシミュレートすることがさらに:
スクロール、ログイン、リンクのクリック、ボタンのクリック、ドラッグ・アンド・ドロップ、選択、またはそれらの組み合わせのうちの少なくとも一つをプログラム的にシミュレートすることを含む、
付記1記載の方法。
(付記7)
前記機械可読なAPI仕様を構築することがさらに:
半構造化された抽出されたデータに基づいてOpenAPI(OAS)仕様を構築することを含む、
付記1記載の方法。
(付記8)
前記OAS仕様を構築することがさらに:
JavaScriptオブジェクト記法(JSON)またはYAMLエイントマークアップランゲージ(YAML)でのOAS仕様を構築することを含む、
付記7記載の方法。
(付記9)
前記第1のサーバーにアクセスすることがさらに:
半構造化されたAPIプラットフォームにアクセスすることを含む、
付記1記載の方法。
(付記10)
前記抽出されたAPIオブジェクト情報に基づいて、前記機械可読なAPI仕様を自動的に構築するために機械学習モデルをトレーニングする段階をさらに含む、
付記1記載の方法。
(付記11)
メモリと;
動作を実行するよう構成された、前記メモリに動作上結合されたプロセッサとを有するシステムであって、前記動作は、
プロセッサによって、少なくとも一つのアプリケーション・プログラミング・インターフェース(API)の第1のプロバイダーに関連付けられた第1のサーバーにアクセスする段階と;
前記プロセッサによって、前記第1のプロバイダーにより提供される前記少なくとも一つのAPIを自動的に選択する段階と;
選択された前記少なくとも一つのAPIに関連する特徴のリストを構築する段階と;
前記プロセッサによって、選択された前記少なくとも一つのAPIに関連付けられた第1のハイパーテキスト転送プロトコル(HTML)ページをパースする段階と;
前記プロセッサによって、前記第1のHTMLページとの少なくとも一つのユーザー対話を自動的にシミュレートする段階と;
前記プロセッサによって、a)前記特徴のリストを構築すること、b)前記第1のHTMLページをパースすること、およびc)前記第1のHTMLページとの少なくとも一つのユーザー対話を自動的にシミュレートすることに基づいて、APIオブジェクト情報を抽出する段階と;
前記プロセッサによって、抽出されたAPIオブジェクト情報に基づいて、機械可読なAPI仕様を構築する段階とを含む、
システム。
(付記12)
付記11記載のシステムであって、さらに:
前記プロセッサによって、選択された前記少なくとも一つのAPIに関連付けられた第2のHTMLページをパースする段階と;
前記プロセッサによって、前記第2のHTMLページとの少なくとも一つのユーザー対話を自動的にシミュレートする段階と;
前記第2のHTMLページをパースすることおよび前記第2のHTMLページとの少なくとも一つのユーザー対話を自動的にシミュレートすることに基づいて、APIオブジェクト情報を抽出する段階とを含み、
前記機械可読なAPI仕様を構築することは、前記第1のHTMLページおよび前記第2のHTMLページをパースすることに基づく前記APIオブジェクト情報に基づいて、前記機械可読なAPI仕様を構築することをさらに含む、
システム。
(付記13)
前記特徴のリストを構築することがさらに:
HTMLオブジェクト情報、ドキュメントオブジェクトモデル(DOM)オブジェクト、カスケーディングスタイルシート(CCS)オブジェクト、HTMLタグ、またはそれらの組み合わせの群から選択された特徴のリストを構築することを含む、
付記11記載のシステム。
(付記14)
APIオブジェクト情報を抽出することがさらに:
構築された特徴のリストとAPIオブジェクト情報値にさらに基づいて、APIオブジェクト情報を自動的に抽出することを含む、
付記11記載のシステム。
(付記15)
自動的に選択することがさらに:
前記プロセッサによって、前記APIに関連付けられた第2のHTMLページ上の対話型オブジェクトの存在を判別する段階であって、前記対話型オブジェクトが一様資源位置指定子(URL)である、段階と;
選択した前記少なくとも一つのAPIに関する情報にアクセスするために、ユーザーの、前記URLとの対話を自動的にシミュレートする段階とを含む、
付記11記載のシステム。
(付記16)
前記第1のHTMLページ上のユーザー対話を自動的にシミュレートすることがさらに:
スクロール、ログイン、リンクのクリック、ボタンのクリック、ドラッグ・アンド・ドロップ、選択、またはそれらの組み合わせのうちの少なくとも一つをプログラム的にシミュレートすることを含む、
付記11記載のシステム。
(付記17)
前記機械可読なAPI仕様を構築することがさらに:
半構造化された抽出されたデータに基づいてOpenAPI(OAS)仕様を構築することを含む、
付記11記載のシステム。
(付記18)
前記OAS仕様を構築することがさらに:
JavaScriptオブジェクト記法(JSON)またはYAMLエイントマークアップランゲージ(YAML)で前記OAS仕様を構築することを含む、
付記17記載のシステム。
(付記19)
前記第1のサーバーにアクセスすることがさらに:
半構造化されたAPIプラットフォームにアクセスすることを含む、
付記11記載のシステム。
(付記20)
一つまたは複数のプロセッサによって実行されたときにシステムに動作を実行させる命令を含んでいる一つまたは複数の非一時的なコンピュータ可読媒体であって、前記動作は:
プロセッサによって、少なくとも一つのアプリケーション・プログラミング・インターフェース(API)の第1のプロバイダーに関連付けられた第1のサーバーにアクセスする段階と;
前記プロセッサによって、前記第1のプロバイダーにより提供される前記少なくとも一つのAPIを自動的に選択する段階と;
選択された前記少なくとも一つのAPIに関連する特徴のリストを構築する段階と;
前記プロセッサによって、選択された前記少なくとも一つのAPIに関連付けられた第1のハイパーテキスト転送プロトコル(HTML)ページをパースする段階と;
前記プロセッサによって、前記第1のHTMLページとの少なくとも一つのユーザー対話を自動的にシミュレートする段階と;
前記プロセッサによって、a)前記特徴のリストを構築すること、b)前記第1のHTMLページをパースすること、およびc)前記第1のHTMLページとの少なくとも一つのユーザー対話を自動的にシミュレートすることに基づいて、APIオブジェクト情報を抽出する段階と;
前記プロセッサによって、抽出されたAPIオブジェクト情報に基づいて、機械可読なAPI仕様を構築する段階とを含む、
媒体。
104 対話モジュール
106 オブジェクト検出モジュール
108 抽出モジュール
110 ネットワーク
112 APIプロバイダーA
118 APIプロバイダーB
202 特徴のリストを構築
204 特徴のリストに関連付けられたオブジェクトから情報および/またはコンテンツを抽出
206 情報および/またはコンテンツを自動抽出するために機械学習モデルをトレーニング
208 OASファイルを出力
302 APIプロバイダーのAPIプラットフォームにアクセス
304 APIプラットフォームからAPIを選択
306 第1のAPIについて特徴のリストを構築
308 第1のAPIに関連するHTMLページをパース
310 HTMLページと対話してAPIオブジェクトを検出
312 APIオブジェクトのリストを生成
314 選択されたAPIのすべてのHTMLページがパースされたか?
316 別のHTMLページを選択
402 APIオブジェクトのリストからレコードを選択
404 APIオブジェクトの型を判別
406 APIオブジェクトから情報および/またはコンテンツを抽出
500 システム
510 プロセッサ
520 メモリ
530 データ記憶
540 通信ユニット
106 オブジェクト検出モジュール
108 抽出モジュール
110 ネットワーク
112 APIプロバイダーA
118 APIプロバイダーB
202 特徴のリストを構築
204 特徴のリストに関連付けられたオブジェクトから情報および/またはコンテンツを抽出
206 情報および/またはコンテンツを自動抽出するために機械学習モデルをトレーニング
208 OASファイルを出力
302 APIプロバイダーのAPIプラットフォームにアクセス
304 APIプラットフォームからAPIを選択
306 第1のAPIについて特徴のリストを構築
308 第1のAPIに関連するHTMLページをパース
310 HTMLページと対話してAPIオブジェクトを検出
312 APIオブジェクトのリストを生成
314 選択されたAPIのすべてのHTMLページがパースされたか?
316 別のHTMLページを選択
402 APIオブジェクトのリストからレコードを選択
404 APIオブジェクトの型を判別
406 APIオブジェクトから情報および/またはコンテンツを抽出
500 システム
510 プロセッサ
520 メモリ
530 データ記憶
540 通信ユニット
Claims (20)
- プロセッサによって、少なくとも一つのアプリケーション・プログラミング・インターフェース(API)の第1のプロバイダーに関連付けられた第1のサーバーにアクセスする段階と;
前記プロセッサによって、前記第1のプロバイダーにより提供される前記少なくとも一つのAPIを自動的に選択する段階と;
選択された前記少なくとも一つのAPIに関連する特徴のリストを構築する段階と;
前記プロセッサによって、選択された前記少なくとも一つのAPIに関連付けられた第1のハイパーテキスト転送プロトコル(HTML)ページをパースする段階と;
前記プロセッサによって、前記第1のHTMLページとの少なくとも一つのユーザー対話を自動的にシミュレートする段階と;
前記プロセッサによって、a)前記特徴のリストを構築すること、b)前記第1のHTMLページをパースすること、およびc)前記第1のHTMLページとの少なくとも一つのユーザー対話を自動的にシミュレートすることに基づいて、APIオブジェクト情報を抽出する段階と;
前記プロセッサによって、抽出されたAPIオブジェクト情報に基づいて、機械可読なAPI仕様を構築する段階とを含む、
方法。 - 請求項1記載の方法であって、さらに:
前記プロセッサによって、選択された前記少なくとも一つのAPIに関連付けられた第2のHTMLページをパースする段階と;
前記プロセッサによって、前記第2のHTMLページとの少なくとも一つのユーザー対話を自動的にシミュレートする段階と;
前記第2のHTMLページをパースすることおよび前記第2のHTMLページとの少なくとも一つのユーザー対話を自動的にシミュレートすることに基づいて、APIオブジェクト情報を抽出する段階とを含み、
前記機械可読なAPI仕様を構築することは、前記パースすること、前記自動的にシミュレートすること、および前記APIオブジェクト情報の抽出に基づいて、前記機械可読なAPI仕様を構築することをさらに含む、
方法。 - 前記特徴のリストを構築することがさらに:
HTMLオブジェクト情報、ドキュメントオブジェクトモデル(DOM)オブジェクト、カスケーディングスタイルシート(CCS)オブジェクト、HTMLタグ、またはそれらの組み合わせの群から選択された特徴のリストを構築することを含む、
請求項1記載の方法。 - APIオブジェクト情報を抽出することがさらに:
構築された特徴のリストとAPIオブジェクト情報値にさらに基づいて、APIオブジェクト情報を自動的に抽出することを含む、
請求項1記載の方法。 - 自動的に選択することがさらに:
前記プロセッサによって、前記APIに関連付けられた第2のHTMLページ上の対話型オブジェクトの存在を判別する段階であって、前記対話型オブジェクトが一様資源位置指定子(URL)である、段階と;
選択した前記少なくとも一つのAPIに関する情報にアクセスするために、ユーザーの、前記URLとの対話を自動的にシミュレートする段階とを含む、
請求項1記載の方法。 - 前記第1のHTMLページ上のユーザー対話を自動的にシミュレートすることがさらに:
スクロール、ログイン、リンクのクリック、ボタンのクリック、ドラッグ・アンド・ドロップ、選択、またはそれらの組み合わせのうちの少なくとも一つをプログラム的にシミュレートすることを含む、
請求項1記載の方法。 - 前記機械可読なAPI仕様を構築することがさらに:
半構造化された抽出されたデータに基づいてOpenAPI(OAS)仕様を構築することを含む、
請求項1記載の方法。 - 前記OAS仕様を構築することがさらに:
JavaScriptオブジェクト記法(JSON)またはYAMLエイントマークアップランゲージ(YAML)でのOAS仕様を構築することを含む、
請求項7記載の方法。 - 前記第1のサーバーにアクセスすることがさらに:
半構造化されたAPIプラットフォームにアクセスすることを含む、
請求項1記載の方法。 - 前記抽出されたAPIオブジェクト情報に基づいて、前記機械可読なAPI仕様を自動的に構築するために機械学習モデルをトレーニングする段階をさらに含む、
請求項1記載の方法。 - メモリと;
動作を実行するよう構成された、前記メモリに動作上結合されたプロセッサとを有するシステムであって、前記動作は、
プロセッサによって、少なくとも一つのアプリケーション・プログラミング・インターフェース(API)の第1のプロバイダーに関連付けられた第1のサーバーにアクセスする段階と;
前記プロセッサによって、前記第1のプロバイダーにより提供される前記少なくとも一つのAPIを自動的に選択する段階と;
選択された前記少なくとも一つのAPIに関連する特徴のリストを構築する段階と;
前記プロセッサによって、選択された前記少なくとも一つのAPIに関連付けられた第1のハイパーテキスト転送プロトコル(HTML)ページをパースする段階と;
前記プロセッサによって、前記第1のHTMLページとの少なくとも一つのユーザー対話を自動的にシミュレートする段階と;
前記プロセッサによって、a)前記特徴のリストを構築すること、b)前記第1のHTMLページをパースすること、およびc)前記第1のHTMLページとの少なくとも一つのユーザー対話を自動的にシミュレートすることに基づいて、APIオブジェクト情報を抽出する段階と;
前記プロセッサによって、抽出されたAPIオブジェクト情報に基づいて、機械可読なAPI仕様を構築する段階とを含む、
システム。 - 請求項11記載のシステムであって、さらに:
前記プロセッサによって、選択された前記少なくとも一つのAPIに関連付けられた第2のHTMLページをパースする段階と;
前記プロセッサによって、前記第2のHTMLページとの少なくとも一つのユーザー対話を自動的にシミュレートする段階と;
前記第2のHTMLページをパースすることおよび前記第2のHTMLページとの少なくとも一つのユーザー対話を自動的にシミュレートすることに基づいて、APIオブジェクト情報を抽出する段階とを含み、
前記機械可読なAPI仕様を構築することは、前記第1のHTMLページおよび前記第2のHTMLページをパースすることに基づく前記APIオブジェクト情報に基づいて、前記機械可読なAPI仕様を構築することをさらに含む、
システム。 - 前記特徴のリストを構築することがさらに:
HTMLオブジェクト情報、ドキュメントオブジェクトモデル(DOM)オブジェクト、カスケーディングスタイルシート(CCS)オブジェクト、HTMLタグ、またはそれらの組み合わせの群から選択された特徴のリストを構築することを含む、
請求項11記載のシステム。 - APIオブジェクト情報を抽出することがさらに:
構築された特徴のリストとAPIオブジェクト情報値にさらに基づいて、APIオブジェクト情報を自動的に抽出することを含む、
請求項11記載のシステム。 - 自動的に選択することがさらに:
前記プロセッサによって、前記APIに関連付けられた第2のHTMLページ上の対話型オブジェクトの存在を判別する段階であって、前記対話型オブジェクトが一様資源位置指定子(URL)である、段階と;
選択した前記少なくとも一つのAPIに関する情報にアクセスするために、ユーザーの、前記URLとの対話を自動的にシミュレートする段階とを含む、
請求項11記載のシステム。 - 前記第1のHTMLページ上のユーザー対話を自動的にシミュレートすることがさらに:
スクロール、ログイン、リンクのクリック、ボタンのクリック、ドラッグ・アンド・ドロップ、選択、またはそれらの組み合わせのうちの少なくとも一つをプログラム的にシミュレートすることを含む、
請求項11記載のシステム。 - 前記機械可読なAPI仕様を構築することがさらに:
半構造化された抽出されたデータに基づいてOpenAPI(OAS)仕様を構築することを含む、
請求項11記載のシステム。 - 前記OAS仕様を構築することがさらに:
JavaScriptオブジェクト記法(JSON)またはYAMLエイントマークアップランゲージ(YAML)で前記OAS仕様を構築することを含む、
請求項17記載のシステム。 - 前記第1のサーバーにアクセスすることがさらに:
半構造化されたAPIプラットフォームにアクセスすることを含む、
請求項11記載のシステム。 - 一つまたは複数のプロセッサによって実行されたときにシステムに動作を実行させる命令を含んでいる一つまたは複数の非一時的なコンピュータ可読媒体であって、前記動作は:
プロセッサによって、少なくとも一つのアプリケーション・プログラミング・インターフェース(API)の第1のプロバイダーに関連付けられた第1のサーバーにアクセスする段階と;
前記プロセッサによって、前記第1のプロバイダーにより提供される前記少なくとも一つのAPIを自動的に選択する段階と;
選択された前記少なくとも一つのAPIに関連する特徴のリストを構築する段階と;
前記プロセッサによって、選択された前記少なくとも一つのAPIに関連付けられた第1のハイパーテキスト転送プロトコル(HTML)ページをパースする段階と;
前記プロセッサによって、前記第1のHTMLページとの少なくとも一つのユーザー対話を自動的にシミュレートする段階と;
前記プロセッサによって、a)前記特徴のリストを構築すること、b)前記第1のHTMLページをパースすること、およびc)前記第1のHTMLページとの少なくとも一つのユーザー対話を自動的にシミュレートすることに基づいて、APIオブジェクト情報を抽出する段階と;
前記プロセッサによって、抽出されたAPIオブジェクト情報に基づいて、機械可読なAPI仕様を構築する段階とを含む、
媒体。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/559377 | 2019-09-03 | ||
US16/559,377 US20210064453A1 (en) | 2019-09-03 | 2019-09-03 | Automated application programming interface (api) specification construction |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021039718A true JP2021039718A (ja) | 2021-03-11 |
Family
ID=74679796
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020043107A Withdrawn JP2021039718A (ja) | 2019-09-03 | 2020-03-12 | 自動化されたアプリケーション・プログラミング・インターフェース(api)仕様作成 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20210064453A1 (ja) |
JP (1) | JP2021039718A (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11290527B2 (en) * | 2020-06-30 | 2022-03-29 | Fortinet, Inc. | Automatic tagging of cloud resources for implementing security policies |
US11392433B1 (en) * | 2021-01-26 | 2022-07-19 | Red Hat, Inc. | Generation of asynchronous application programming interface specifications for messaging topics |
US11360993B1 (en) * | 2021-02-12 | 2022-06-14 | Fmr Llc | Automatic generation of specifications for data access layer application programming interfaces |
US11567738B2 (en) * | 2021-04-15 | 2023-01-31 | Red Hat, Inc. | Code generator for creating a unified data model for multiple language specifications |
CN113535264A (zh) * | 2021-07-07 | 2021-10-22 | 北京明略软件系统有限公司 | Api的处理方法及装置、电子设备 |
CN113435669B (zh) * | 2021-07-30 | 2022-10-28 | 多点生活(成都)科技有限公司 | 接入工作流的优化方法、装置、电子设备和可读存储介质 |
CN118451413A (zh) * | 2021-10-26 | 2024-08-06 | 派芒塔斯公司 | 基于人工智能的集成框架 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8087007B2 (en) * | 2006-05-08 | 2011-12-27 | Assima Ltd. | System and method for software prototype-development and validation and for automatic software simulation re-grabbing |
US8572505B2 (en) * | 2011-01-31 | 2013-10-29 | Oracle International Corporation | Automatically testing a web application that has independent display trees |
US10394552B2 (en) * | 2016-05-17 | 2019-08-27 | Dropbox, Inc. | Interface description language for application programming interfaces |
US10572370B2 (en) * | 2017-09-26 | 2020-02-25 | Fujitsu Limited | Test-assisted application programming interface (API) learning |
US10620945B2 (en) * | 2017-12-21 | 2020-04-14 | Fujitsu Limited | API specification generation |
US10853227B2 (en) * | 2018-07-23 | 2020-12-01 | Verizon Patent And Licensing Inc. | Systems and methods for modular test platform for applications |
US10656973B2 (en) * | 2018-08-23 | 2020-05-19 | Fujitsu Limited | Automated API evaluation based on API parameter resolution |
US11157383B2 (en) * | 2018-09-28 | 2021-10-26 | Ebay Inc. | Automated determination of web page rendering performance |
US10579372B1 (en) * | 2018-12-08 | 2020-03-03 | Fujitsu Limited | Metadata-based API attribute extraction |
US11093708B2 (en) * | 2018-12-13 | 2021-08-17 | Software Ag | Adaptive human to machine interaction using machine learning |
US11030085B2 (en) * | 2019-01-18 | 2021-06-08 | Salesforce.Com, Inc. | User defined mocking service behavior |
-
2019
- 2019-09-03 US US16/559,377 patent/US20210064453A1/en not_active Abandoned
-
2020
- 2020-03-12 JP JP2020043107A patent/JP2021039718A/ja not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
US20210064453A1 (en) | 2021-03-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2021039718A (ja) | 自動化されたアプリケーション・プログラミング・インターフェース(api)仕様作成 | |
US10831858B2 (en) | Mobile enablement of existing web sites | |
US10620945B2 (en) | API specification generation | |
JP6494609B2 (ja) | カスタマイズされたソフトウェア開発キット(sdk)生成のための方法および装置 | |
CN102597993B (zh) | 利用统一资源标识符管理应用状态信息 | |
Verborgh et al. | Survey of semantic description of REST APIs | |
US11200033B2 (en) | Application programming interface (API) based object oriented software development and textual analysis | |
CN108268635B (zh) | 用于获取数据的方法和装置 | |
US9195441B2 (en) | Systems and methods for incremental compilation at runtime using relaxed guards | |
CN111797407A (zh) | 一种基于深度学习模型优化的xss漏洞检测方法 | |
CN108959401B (zh) | 一种信息传播的监测分析方法、系统、服务器及存储介质 | |
JP6763433B2 (ja) | 情報収集システム、情報収集方法、及び、プログラム | |
Jones et al. | UncertWeb processing service: making models easier to access on the web | |
CN117134986A (zh) | 基于ChatGPT的外网蜜点生成方法、系统及装置 | |
US20160210125A1 (en) | Predicting And Using Utility Of Script Execution In Functional Web Crawling And Other Crawling | |
CN116346660A (zh) | 基于依赖替换服务的数据处理方法、装置、设备及介质 | |
Mesbah | Analysis and Testing of Ajax-based Single-page Web Applications. | |
CN115481334A (zh) | 基于协议的路由跳转方法和装置、电子设备及存储介质 | |
Springborg et al. | Towards a secure API client generator for IoT devices | |
Verma | A comparison of web framework efficiency: performance and network analysis of modern web frameworks | |
Sermet et al. | A Generalized Web Component for Domain-Independent Smart Assistants | |
Pop et al. | A Service Oriented Architecture Approach for an E-Business Platform | |
Karanjit | Mean vs. lamp stack | |
Avdic | React native vs xamarin-mobile for industry | |
Koder | Increasing Full Stack Development Productivity via Technology Selection |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20221117 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20231016 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20231031 |