IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ エスアーペー エスエーの特許一覧

<>
  • 特開-サーバ生成のための生成人工知能 図1
  • 特開-サーバ生成のための生成人工知能 図2
  • 特開-サーバ生成のための生成人工知能 図3
  • 特開-サーバ生成のための生成人工知能 図4
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024163841
(43)【公開日】2024-11-22
(54)【発明の名称】サーバ生成のための生成人工知能
(51)【国際特許分類】
   G06F 8/30 20180101AFI20241115BHJP
   G06N 3/0475 20230101ALI20241115BHJP
   G06F 8/60 20180101ALI20241115BHJP
   G06N 3/044 20230101ALN20241115BHJP
【FI】
G06F8/30
G06N3/0475
G06F8/60
G06N3/044
【審査請求】未請求
【請求項の数】20
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023207860
(22)【出願日】2023-12-08
(31)【優先権主張番号】18/196,836
(32)【優先日】2023-05-12
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVASCRIPT
2.JAVA
(71)【出願人】
【識別番号】300015447
【氏名又は名称】エスアーペー エスエー
【住所又は居所原語表記】Dietmar-Hopp-Allee 16, 69190 Walldorf, Germany
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【弁理士】
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】デイヴィッド・カンツ
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AA07
5B376BB11
5B376BC71
(57)【要約】
【課題】サーバ生成のための生成人工知能を提供する。
【解決手段】一例では、ソフトウェアサーバを自動的に生成するために、生成人工知能(GAI)が利用される。より具体的には、GAIモデルを使用して、ウェブサーバなどのソフトウェアサーバのための、宣言型ベースのデータモデルおよび付随するデータを作成することができる。さらに、作成された宣言型ベースのデータモデルを、自動的にテストし、テストに失敗すると、ソフトウェアサーバファイルを改良するために、GAIモデルに送出し直すことができる。
【選択図】図1
【特許請求の範囲】
【請求項1】
システムであって、
生成人工知能(GAI)モデルと、
サーバリポジトリと、
フレームワークサーバと
を備え、前記フレームワークサーバは、
フレームワーククライアントから1つまたは複数のサービスを記述するテキストベースのプロンプトを受信することと、
前記テキストベースのプロンプトおよび第1の事前に設計されたシステムメッセージを含むサーバ生成要求を作成することと、
前記サーバ生成要求を前記GAIモデルに供給して、前記フレームワークサーバ内で実行可能なサービスについてのモデル定義を定義する1つまたは複数のサーバファイルを生成することと、
前記1つまたは複数のサーバファイルを前記サーバリポジトリ内に格納することと
を含む動作を実行するように構成された、システム。
【請求項2】
前記1つまたは複数のサーバファイルが宣言型形式である、請求項1に記載のシステム。
【請求項3】
前記1つまたは複数のサーバファイルが、スキーマファイルおよびサービスファイルを含む、請求項1に記載のシステム。
【請求項4】
前記スキーマファイルおよび前記サービスファイルがオープンデータプロトコル(OData)サービスを定義する、請求項3に記載のシステム。
【請求項5】
前記動作が、
前記1つまたは複数のサーバファイルから生成された1つまたは複数のステートメント、および第2の事前に設計されたシステムメッセージを含むデータ生成要求を作成することと、
前記データ生成要求を前記GAIモデルに供給して、1つまたは複数のサーバデータファイルを生成することと、
前記1つまたは複数のサーバデータファイルをデータリポジトリ内に格納することと
をさらに含む、請求項1に記載のシステム。
【請求項6】
前記動作が、
前記1つまたは複数のサーバファイルを検証することと、
前記1つまたは複数のサーバファイルが前記検証に失敗したとの判定に応答して、前記サーバ生成要求の前記GAIモデルへの前記供給を再試行することと
をさらに含む、請求項5に記載のシステム。
【請求項7】
前記検証することが、前記1つまたは複数のサーバファイルをコンパイルすることを試みることを含む、請求項6に記載のシステム。
【請求項8】
前記検証することが、前記1つまたは複数のサーバデータファイルを使用して前記1つまたは複数のサーバファイルに対して1つまたは複数のテストを実行することを含む、請求項6に記載のシステム。
【請求項9】
方法であって、
フレームワーククライアントから1つまたは複数のサービスを記述するテキストベースのプロンプトを受信するステップと、
前記テキストベースのプロンプトおよび第1の事前に設計されたシステムメッセージを含むサーバ生成要求を作成するステップと、
前記サーバ生成要求をGAIモデルに供給して、フレームワークサーバ内で実行可能なサービスについてのモデル定義を定義する1つまたは複数のサーバファイルを生成するステップと、
前記1つまたは複数のサーバファイルをサーバリポジトリ内に格納するステップと
を含む方法。
【請求項10】
前記1つまたは複数のサーバファイルが宣言型形式である、請求項9に記載の方法。
【請求項11】
前記1つまたは複数のサーバファイルがスキーマファイルおよびサービスファイルを含む、請求項9に記載の方法。
【請求項12】
前記スキーマファイルおよび前記サービスファイルがオープンデータプロトコル(OData)サービスを定義する、請求項11に記載の方法。
【請求項13】
前記1つまたは複数のサーバファイルから生成された1つまたは複数のステートメントおよび第2の事前に設計されたシステムメッセージを含むデータ生成要求を作成するステップと、
前記データ生成要求を前記GAIモデルに供給して、1つまたは複数のサーバデータファイルを生成するステップと、
前記1つまたは複数のサーバデータファイルをデータリポジトリ内に格納するステップと
をさらに含む、請求項9に記載の方法。
【請求項14】
前記1つまたは複数のサーバファイルを検証するステップと、
前記1つまたは複数のサーバファイルが前記検証に失敗したとの判定に応答して、前記サーバ生成要求の前記GAIモデルへの前記供給を再試行するステップと
をさらに含む、請求項13に記載の方法。
【請求項15】
前記検証するステップが、前記1つまたは複数のサーバファイルをコンパイルすることを試みるステップを含む、請求項14に記載の方法。
【請求項16】
前記検証するステップが、前記1つまたは複数のサーバデータファイルを使用して前記1つまたは複数のサーバファイルに対して1つまたは複数のテストを実行するステップを含む、請求項14に記載の方法。
【請求項17】
命令を記憶する非一時的なマシン可読媒体であって、前記命令が、1つまたは複数のプロセッサによって実行されるとき、前記1つまたは複数のプロセッサに、
フレームワーククライアントから1つまたは複数のサービスを記述するテキストベースのプロンプトを受信することと、
前記テキストベースのプロンプトおよび第1の事前に設計されたシステムメッセージを含むサーバ生成要求を作成することと、
前記サーバ生成要求をGAIモデルに供給して、フレームワークサーバ内で実行可能なサービスについてのモデル定義を定義する1つまたは複数のサーバファイルを生成することと、
前記1つまたは複数のサーバファイルをサーバリポジトリ内に格納することと
を含む動作を実行させる、非一時的なマシン可読媒体。
【請求項18】
前記1つまたは複数のサーバファイルが宣言型形式である、請求項17に記載の非一時的なマシン可読媒体。
【請求項19】
前記1つまたは複数のサーバファイルがスキーマファイルおよびサービスファイルを含む、請求項17に記載の非一時的なマシン可読媒体。
【請求項20】
前記スキーマファイルおよび前記サービスファイルがオープンデータプロトコル(OData)サービスを定義する、請求項19に記載の非一時的なマシン可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
この文書は一般に、コンピュータシステムに関する。より詳細には、この文書は、サーバ生成のための生成人工知能の使用に関する。
【背景技術】
【0002】
コンピュータシステムでは、1つまたは複数のソフトウェアクライアントとインターネットなどのコンピュータネットワーク経由で対話するアプリケーションを管理するために、ソフトウェアサーバがしばしば使用される。ODataサーバは、データソースのためのRESTfulアプリケーションプログラムインターフェース(API)の作成および利用を可能にするオープンデータプロトコル(OData)を実装した、一種のウェブサーバである。ODataは、RESTful原則に基づくとともにデータをGET、POST、PUT、およびDELETEのような標準ハイパーテキスト転送プロトコル(HTTP)メソッドを使用してアクセスできるリソースとして公開するデータAPIを、作成および利用するためのプロトコルである。
【0003】
ODataサーバは、開発者が、データベース、ファイルシステム、またはウェブサービスなどのさまざまなソースからのデータを、クライアントアプリケーションによって利用することができるODataフィードとして公開することを可能にするものである。ODataサーバは、HTTP要求を対応するデータオペレーションにマッピングし、データを標準化形式、典型的にはJavaScript Object Notation(JSON)または拡張マークアップ言語(XML)で返す。ODataサーバは、エンタープライズデータ統合、ビジネスインテリジェンス、およびモバイルアプリケーション開発など、さまざまなコンテキストにおいて使用される。ODataサーバは、ウェブアプリケーションおよびモバイルアプリケーション、デスクトップソフトウェア、ならびに他のバックエンドシステムを含む広範なクライアントによって利用することができる、拡張性および柔軟性のあるAPIの作成を可能にするものである。
【0004】
本開示は、同様の参照符号が類似の要素を示す添付の図面の図中に、限定ではなく例として示されている。
【発明の概要】
【課題を解決するための手段】
【0005】
システムは、
生成人工知能(GAI)モデルと、
サーバリポジトリと、
フレームワークサーバと
を備え、前記フレームワークサーバは、
フレームワーククライアントから1つまたは複数のサービスを記述するテキストベースのプロンプトを受信することと、
前記テキストベースのプロンプトおよび第1の事前に設計されたシステムメッセージを含むサーバ生成要求を作成することと、
前記サーバ生成要求を前記GAIモデルに供給して、前記フレームワークサーバ内で実行可能なサービスについてのモデル定義を定義する1つまたは複数のサーバファイルを生成することと、
前記1つまたは複数のサーバファイルを前記サーバリポジトリ内に格納することと
を含む動作を実行するように構成される。
【図面の簡単な説明】
【0006】
図1】例示的な一実施形態による、ソフトウェアサーバを自動的に生成するためのシステムを示すブロック図である。
図2】例示的な一実施形態による、ソフトウェアサーバを自動的に生成するための方法を示すフロー図である。
図3】上述したデバイスのうちのいずれか1つまたは複数上にインストールすることができるソフトウェアのアーキテクチャを示すブロック図である。
図4】例示的な一実施形態による、コンピュータシステムの形態をとるマシンであって、本明細書において論じる方法のうちのいずれか1つまたは複数をマシンに実行させるための命令のセットがその中で実行されることが可能なマシンの概略図である。
【発明を実施するための形態】
【0007】
次に続く説明では、例示的なシステム、方法、技法、命令シーケンス、およびコンピューティングマシンプログラム製品について論じる。以下の説明では、説明を目的として、本主題のさまざまな例示的な実施形態の理解をもたらすために多数の具体的詳細が記載される。しかし、これらの具体的詳細なしでも本主題のさまざまな例示的な実施形態を実践できることが、当業者には明白となろう。
【0008】
本明細書において説明する例示的な実施形態のうちのいくつかは、オープンデータプロトコル(OData)を使用して実装されるウェブサーバなどのソフトウェアサーバを自動的に生成するための方法およびシステムを提供する。
【0009】
「OData」とは、本明細書では、Representational State Transfer(REST)ウェブサービスを使用してデータを照会および通信するためのオープンウェブプロトコルであるオープンデータプロトコルを具体的に指すことがあるが、他のタイプのウェブサービスにも当てはまり得る。ODataは、HTTPベースのデータサービスの作成および使用を可能にし、このHTTPベースのデータサービスは、ユニフォームリソース識別子(URI)を使用して識別され、抽象データモデルの形で定義されるリソースが、ウェブクライアントによって、単純なHTTPメッセージを使用して公開および編集されることを可能にするものである。ODataは、典型的には、伝送制御プロトコル(TCP)、HTTP、Atom Publishing Protocol、XML、およびJSONなど、一般に配備されるウェブ技術を使用して、システム間でデータを交換する。OData照会の結果(ペイロード)は、典型的には、Atom、JSON、またはXMLなど、容易に構文解析可能な形式で構造化され、この結果は、.NET、Silverlight、Java、AJAX、PHP、およびモバイル開発プラットフォームなどのプラットフォームによって提供される任意の数のクライアントライブラリによって構文解析することができる。ODataとは、本明細書では、ODataプロトコル、またはRESTベースのウェブサービス通信技法を使用して通信する同様のウェブプロトコル(例えばGoogle Data Protocol(GData))の、任意の標準化バージョンまたは非標準化バージョンを指すことがある。
【0010】
「サーバ」とは、本明細書では、ソフトウェアサーバを一般に指すが、いくつかの実施形態では、ソフトウェアがハードウェアの形で具現化されることが可能である。しかし、大多数のコンテキストでは、ソフトウェアサーバはある種のハードウェア上で動作する。
【0011】
「サービス」とは、本明細書では、異なるマシンまたはアプリケーションがインターネット経由で相互に通信することを可能にするように設計されたソフトウェアシステムを一般に指す。換言すれば、サービスは、エンティティ、アクション、および関数などの公開された機能の集まりである。サービスは、異なるソフトウェアアプリケーション間の通信の標準的な方法を、それらのプラットフォームまたはプログラミング言語にかかわらず提供することができる。
【0012】
ソフトウェアサーバ、とりわけODataサーバの作成は、技術的に困難なことがある。データモデルおよびデータを人手により作成しなければならず、作成プロセス中に発生するエラーも、検出および訂正が難しい。
【0013】
一例では、ソフトウェアサーバを自動的に生成するために、生成人工知能(GAI)が利用される。より具体的には、GAIモデルを使用して、ウェブサーバなどのソフトウェアサーバのための、宣言型ベースのデータモデルおよび付随するデータを作成することができる。さらに、作成された宣言型ベースのデータモデルを、自動的にテストし、テストに失敗すると、ソフトウェアサーバファイルを改良するために、GAIモデルに送出し直すことができる。
【0014】
クラウドコンピューティングは、共用コンピュータ処理リソースおよびデータをコンピュータおよび他のデバイスにオンデマンドで提供するインターネットベースのコンピューティングと説明することができる。ユーザは、それぞれのセッションを確立することができ、その間、処理リソースおよび帯域幅が利用される。セッションの間、例えば、ユーザは、構成可能なコンピューティングリソース(例えばコンピュータネットワーク、サーバ、記憶領域、アプリケーション、およびサービス)の共用プールへのオンデマンドアクセスを提供される。コンピューティングリソースは、ユーザの要求を満たすようにプロビジョニングおよび解放される(例えばスケーリングされる)ことが可能である。クラウドプラットフォームの一例として、Walldorf、GermanyのSAP SEからのSAPクラウドアプリケーションプラットフォーム(CAP)が挙げられる。クラウドプラットフォームは、データモデルインフラストラクチャを動作させることができ、このデータモデルインフラストラクチャでは、データモデルを作成し、動作させることができる。
【0015】
そのようなデータモデルインフラストラクチャの一例が、Walldorf、GermanyのSAP SEからのコアデータサービス(CDS)である。CDSは、サービス定義およびデータモデルが、平易なオブジェクト表記の形で宣言的に捕捉されることを可能にするものである。CDSモデルは、典型的にはCDS言語で記述され、コンパイルされると、典型的にはJavascript Object Notation(JSON)ファイル内に格納されて、コアスキーマ記法(core schema notation)(CSN)などの標準記法に準拠する。これらのモデルは、サーバ上でコンパイルおよび動作し、次いでサーバは、モデルによって定義されたアプリケーションを求める要求が到来するとそれをハンドリングすることができる。
【0016】
クラウドプラットフォームにおける一般的なアーキテクチャには、サービス(マイクロサービスとも呼ばれる)が含まれ、それは、サービス指向アーキテクチャ(SOA)において人気を博してきた。そのようなSOAでは、アプリケーションは、複数の独立したサービスから成る。これらのサービスは、クラウドプラットフォーム内で配備および管理され、クラウドインフラストラクチャの上で動作する。いくつかの例では、サービスベースのアプリケーションは、アプリケーションプログラミングフレームワークを使用して作成および/または拡張することができる。例示的な一実施形態では、作成されたソフトウェアサーバがサービスを実装する。
【0017】
例示的な一実施形態では、GAIモデルがgenerative pre-trained transformer(GPT)モデルまたは双方向エンコーダとして実装される。GPTモデルは、自然言語などの系列データの処理に秀でた一種の深層ニューラルネットワークであるトランスフォーマアーキテクチャを使用する一種の機械学習モデルである。
【0018】
双方向エンコーダは、入力系列が順方向と逆方向の2方向に処理される一種のニューラルネットワークアーキテクチャである。順方向では、系列の初めから開始し、入力を一度に1トークンずつ処理し、一方、逆方向では、系列の終わりから開始し、入力を逆順に処理する。
【0019】
双方向エンコーダは、入力系列を両方向に処理することによって、単語間のより多くのコンテキスト情報および依存関係を捕捉して、より良好な性能をもたらすことができる。
【0020】
双方向エンコーダは、双方向長短期記憶(BiLSTM)モデルまたはBERT(Bidirectional Encoder Representations from Transformers)モデルとして実装することができる。
【0021】
各方向は、それ自体の隠れ状態を有し、最終出力は、これら2つの隠れ状態の組合せである。
【0022】
長短期記憶(LSTM)は、一種の再帰型ニューラルネットワーク(RNN)であり、系列データ内の長期依存関係の学習を困難にすることのある、従来のRNNにおける勾配消失問題を克服するように設計されたものである。
【0023】
LSTMは、セル状態を含み、セル状態は、時間にわたって情報を格納する記憶としての働きをする。セル状態は、入力ゲート、忘却ゲート、および出力ゲートの3つのゲートによって制御される。入力ゲートは、セル状態に新たな情報がどれだけ追加されるかを決定し、一方、忘却ゲートは、古い情報がどれだけ破棄されるかを決める。出力ゲートは、セル状態のうちのどれだけが出力を計算するために使用されるかを決定する。各ゲートは、シグモイド活性化関数によって制御され、シグモイド活性化関数は、0から1の間の値を出力し、この値が、ゲートを通過する情報の量を決定する。
【0024】
BiLSTMでは、順方向と逆方向に別々のLSTMがある。各時間ステップにおいて、順方向LSTMセルと逆方向LSTMセルが、現在の入力トークン、および以前の時間ステップからの隠れ状態を受け取る。順方向LSTMは、入力トークンを左から右に処理し、一方、逆方向LSTMは、入力トークンを右から左に処理する。
【0025】
各時間ステップにおける各LSTMセルの出力は、入力トークンと、以前の隠れ状態との組合せであり、それにより、モデルが、入力トークン間の短期依存関係と長期依存関係の両方を捕捉することが可能になっている。
【0026】
BERTは、トランスフォーマとして知られるモデルの双方向トレーニングを、言語モデリングに適用する。これは、テキスト系列を左から右に、または左から右と右から左の組合せで調べていた従来技術の解決策とは対照的である。双方向にトレーニングされた言語モデルは、単一方向言語モデルよりも言語のコンテキストおよび流れを深く認識する。
【0027】
より具体的には、このトランスフォーマエンコーダは、情報の系列全体を一度で読み取り、したがって、双方向であると見なされる(が、それは実際には無方向であるとも言えよう)。この特徴により、モデルが、1つの情報のコンテキストをその周囲全てに基づいて学習することが可能になる。
【0028】
他の例示的な実施形態では、GAN実施形態を使用することができる。GANは、新たな例を生成するようにトレーニングされた生成器モデルと、例を本物と生成物のどちらかに分類しようとする識別器モデルの、2つのサブモデルを有する、教師あり機械学習モデルである。2つのモデルは、(ゲーム理論によるゼロサムゲームを使用して)敵対的に一緒にトレーニングされ、それは識別器モデルがおよそ半分の時間騙されるまで続き、識別器モデルがおよそ半分の時間騙されるとはすなわち、生成器モデルがもっともらしい例を生成している、ということである。
【0029】
生成器モデルは、固定長のランダムベクトルを入力としてとり、当該のドメインにおけるサンプルを生成する。このベクトルはガウス分布からランダムに取り出され、生成プロセスの種を与えるためにこのベクトルが使用される。トレーニング後、この多次元ベクトル空間内の点は、データ分布の圧縮表現を形成して、問題ドメイン内の点に対応するようになる。このベクトル空間は、潜在空間、または潜在変数から成るベクトル空間と呼ばれる。潜在変数、または隠れ変数は、あるドメインにとって重要であるが直接観察できない変数である。
【0030】
識別器モデルは、このドメインからの例を入力としてとり(本物または生成物)、本物か偽物(生成物)かの2値クラスラベルを予測する。
【0031】
生成モデリングは、先のセクションで本発明者らが論じたように、教師なし学習問題であるが、GANアーキテクチャの巧妙な特性は、生成モデルのトレーニングが教師あり学習問題として枠付けされるというものである。
【0032】
生成器と識別器の2つのモデルは、一緒にトレーニングされる。生成器は、サンプルのバッチを生成し、これらとドメインからの本物の例とが識別器に提供され、本物か偽物かに分類される。
【0033】
次いで、識別器は、本物のサンプルと偽物のサンプルを次ラウンドで識別するのが上達するように更新され、重要なことには、生成器は、生成されたサンプルが識別器をどれだけうまく騙したか、または騙せなかったかに基づいて更新される。
【0034】
別の例示的な実施形態では、GAIモデルが変分オートエンコーダ(VAE)モデルである。VAEは、入力データを、潜在コードと呼ばれるより低次元の表現に圧縮するエンコーダネットワークと、潜在コードから新たなデータを生成するデコーダネットワークとを備える。どちらの場合にも、GAIモデルは生成分類器を含み、生成分類器は、例えばナイーブベイズ分類器として実装することができる。
【0035】
CAPベースのサーバファイルは、宣言型形式である。宣言型形式は、プログラムの意図/最終結果にどのように到達すべきかが宣言されるものではなく、プログラムの意図/最終結果が宣言されるものである。宣言型コードは、典型的には、高レベルの関数または抽象化を、人間が読める明確な意図を用いて呼び出すステートメントから成る。反対に、命令型形式は、どんな高レベルのゴールも参照することなくステートメントの影響をプログラムの状態に明確に与える、ステートメントから成る。
【0036】
換言すれば、宣言型形式のファイルは、コンピュータプログラムの構造および要素を、計算の論理を使用して、その制御フローについて記述することなく、定義する。宣言型プログラミングでは、制約プログラミング(変数間の関係が、ターゲットの解の特性を指定する制約の形態で表現される)、ドメイン固有言語(特定のアプリケーションドメインのために定義された言語)、関数型プログラミング(表現が関数適用を介して評価される)、およびハイブリッド言語(宣言型プログラミングと命令型プログラミングを混合する)を含む、使用することができるいくつかのサブパラダイムがある。
【0037】
したがって、いくつかの例示的な実施形態では、GAIモデルは宣言型ファイルを生成し、それにより、GAIモデルが命令型ファイルを生成するように求められた場合よりも良好な/正確な結果がもたらされる。
【0038】
図1は、例示的な一実施形態による、ソフトウェアサーバを自動的に生成するためのシステム100を示すブロック図である。ここで、CAPサーバ102は、CAPクライアント104など、1つまたは複数のCAPクライアントが、ウェブサービスのためのODataサーバなどのソフトウェアサーバを作成および管理することを可能にするサーバを提供する。CAPサーバ102は、アプリケーションを作成および管理するためのソフトウェアフレームワークを実装したサーバを提供するので、一般にフレームワークサーバと呼ぶことができる。同様に、CAPクライアント104は、CAPサーバ102とクライアント-サーバ関係でインターフェースするので、一般にフレームワーククライアントと呼ぶことができる。CAPクライアント104は、ユーザインターフェースアノテーションを含むモデル情報を生成することができる。次いで、このユーザインターフェースアノテーションを使用して、グラフィカルユーザインターフェースを実行中に生成することができ、ユーザはそのグラフィカルユーザインターフェースにおいて、CAPサーバ102への要求を発行することができる。この場合、ユーザは、そのためのソフトウェアサービスが生成されることをユーザが欲するサービスについて一般に記述した自然言語テキストプロンプトを入力し、またはその他の方法で選択する。例えば、ユーザは、「ヘルプデスクチケット発行システム:このアプリケーションは、チケットの作成、割当て、および解決を含む、顧客の問合せおよびサポート要求を管理する。エンティティには、チケット、顧客、サポートエージェント、およびナレッジベース記事が含まれる。関係には、チケット-顧客、チケット-サポートエージェント、およびチケット-ナレッジベース記事が含まれる。」といったものを入力することができる。
【0039】
プロンプトは、CAPサーバ102内のシステムメッセージマネージャ106によって受信される。システムメッセージマネージャ106は、GAIモデル108へのサーバ生成要求およびサーバデータ生成要求を管理するように働く。より具体的には、システムメッセージマネージャ106は、プロンプトにシステムメッセージを追加する。システムメッセージは基本的に、GAIモデル108が生成すべきものに関するさらなる詳細を提供する、GAIモデル108への命令として働く。このシステムメッセージは、システムメッセージマネージャ106によって発行されるサーバ生成要求の多くに、あるいはその全てにも適用できるという点で、本質的に一般的なものとすることができる。しかし、いくつかの例示的な実施形態では、システムメッセージは、例えば異なる組織、ロケーション、サーバタイプなどによって異なるシステムメッセージを可能にする、より個人化されたものとすることができる。
【0040】
次いで、システムメッセージおよびプロンプトは、サーバ生成要求としてGAIモデル108に送信される。次いで、GAIモデル108は、このサーバ生成要求を入力として使用して、サーバを生成する。次いで、このサーバが、システムメッセージマネージャ106に返される。GAIモデル108は、例えば、大規模言語モデル(LLM)とすることができる。
【0041】
例示的な一実施形態では、サーバの生成には、プロンプトおよびシステムメッセージに基づいて、ODataサービスを、そのスキーマおよびサービスを含めて、生成することが関与する。
【0042】
サーバが生成された後で、システムメッセージマネージャ106は、サーバデータの生成に移ることができる。システムメッセージマネージャ106は、データフォルダ、ならびにまだデータを収容しておらず(カラム名を有するヘッダ行などの)ヘッダだけを収容した(カンマ区切り値(CSV)ファイルなどの)ファイルを作成する。この作成は、生成されたサーバファイルのうちの1つまたは複数に基づく。次いで、生成されたサーバファイルのうちの1つまたは複数が、1つまたは複数のステートメントを作成するために使用される。例示的な一実施形態では、ステートメントは、構造化照会言語(SQL)テーブル作成ステートメントである。これらのステートメントは、テーブル間の関連付けを含めて、データベーステーブルの正確な形を含む。これらのステートメント、ならびに作成されたデータフォルダ内の空のファイルを、別途のシステムメッセージに追加して、データ生成要求を作成することができる。この別途のシステムメッセージもやはり、基本的に、GAIモデル108が生成すべきものに関するさらなる詳細を提供する、GAIモデル108への命令として働く。このシステムメッセージは、システムメッセージマネージャ106によって発行されるサーバ生成要求の多くに、あるいはその全てにも適用できるという点で、本質的に一般的なものとすることができる。しかし、いくつかの例示的な実施形態では、システムメッセージは、例えば異なる組織、ロケーション、サーバタイプなどによって異なるシステムメッセージを可能にする、より個人化されたものとすることができる。
【0043】
次いで、データ生成要求はGAIモデル108に送信され、次いで、GAIモデル108がサーバデータを生成し返す。
【0044】
次いで、システムメッセージマネージャ106は、サーババリデータを利用して、生成されたサーバを検証する。検証は、生成されたサーバが制定された標準に確実に準拠するようにするために、生成されたサーバに対して1つまたは複数のテストを実行することを含むことができる。1つのそのようなテストは、生成されたサーバをコンパイルする試みとすることができる。他のテストでは、生成されたサーバデータを使用してサーバをテストすることによって、サーバの精度、効率、または何らかのメトリックをテストすることができる。生成されたサーバが、検証テストのうちの1つまたは複数に失敗した場合、システムメッセージマネージャ106は、それが前回送出したのと全く同じサーバ生成要求を送出し直すことによって、またはシステムメッセージを変更にさらに影響を及ぼすように何らかの形で修正することによって、サーバ生成要求を再試行することができる。この修正は、例えば、最初の失敗した検証テスト中に返された検証エラーが何であれそれをサーバ生成要求内に追加することを含むことができる。次いで、システムメッセージマネージャ106は、再生成されたサーバを再び受信し、再生成されたサーバは再度、サーババリデータ110によってテストすることができる。サーババリデータ110がサーバの検証に成功した後で、サーバはサーバリポジトリ112内に書き込まれることが可能であり、サーバデータはデータリポジトリ114内に書き込まれることが可能である。
【0045】
次いで、サーバ実行コンポーネント116が、何らかの後の時点で、サーバリポジトリ112内のサーバファイルを実行することによって、定義されたサーバを動作させることができる。
【0046】
図2は、例示的な一実施形態による、ソフトウェアサーバを自動的に生成するための方法200を示すフロー図である。ここで、動作202において、フレームワーククライアントから1つまたは複数のサービスを記述するテキストベースのプロンプトが受信される。動作204において、テキストベースのプロンプトおよび第1の事前に設計されたシステムメッセージを使用して、サーバ生成要求が作成される。例示的な一実施形態では、サーバ生成要求を作成するために、プロンプトが第1の事前に設計されたシステムメッセージに付加される。
【0047】
動作206において、サーバ生成要求がGAIモデルに供給されて、フレームワークサーバ内で実行可能なサービスについてのモデル定義を定義する1つまたは複数のサーバファイルが生成される。例示的な一実施形態では、1つまたは複数のサーバファイルは宣言型形式であり、スキーマファイルおよびサービスファイルを含むことができる。スキーマファイルおよびサービスファイルは、例えば、ODataサービスを定義することができる。
【0048】
動作208において、1つまたは複数のサーバファイルが検証される。これは、1つまたは複数のサーバファイルをコンパイルすることを試みることを含むことができる。動作210において、1つまたは複数のサーバファイルの検証に成功したかどうかが判定される。成功しなかった場合、方法は動作206に戻り、動作206において、サーバ生成要求がGAIモデルに再送されて、1つまたは複数のサーバファイルが再生成される。
【0049】
1つまたは複数のサーバファイルの検証に成功した後で、動作212において、テキストベースのプロンプトおよび第2の事前に設計されたシステムメッセージを使用して、データ生成要求が作成される。例示的な一実施形態では、この作成は、テキストベースのプロンプトを第2の事前に設計されたシステムメッセージに付加することによって実施される。次いで、動作214において、データ生成要求がGAIモデルに供給されて、1つまたは複数のサーバデータファイルが生成される。動作216において、1つまたは複数のサーバデータファイルを使用して1つまたは複数のサーバファイルがテストされる。動作218において、1つまたは複数のサーバファイルがテストに合格したかどうかが判定される。合格しなかった場合、方法200は動作212に戻る。合格した場合、動作220において、生成された1つまたは複数のサーバファイルがサーバリポジトリ内に格納され、生成された1つまたは複数のサーバデータファイルがデータリポジトリ内に格納される。
【0050】
次に続くのは、例示的な一実施形態による、ユーザによって提供されたプロンプトの一例および対応する生成されたシステムメッセージと、最後に、サンプルのサーバおよびサーバデータである。
【0051】
ここで、ユーザは、所望のアプリケーションについての次のプロンプト「タイル倉庫内の在庫を管理するアプリ」を入力することができる。システムメッセージマネージャがこのプロンプトを受信し、プロンプトに以下のシステムメッセージを追加して、サーバ生成要求を作成することができる。
【表1A】
【表1B】
【0052】
これに応答して、GAIモデルは以下のスキーマファイルを生成することができる。
### db/schema.cds
```cds
namespace tile.warehouse;

using { UUID, Composition } from '@sap/cds/common';

entity Warehouse {
key ID: UUID;
name: String @assert.present;
location: String @assert.present;
tiles: Composition of many TileStorage on tiles.warehouse = $self;
}

entity TileType {
key ID: UUID;
name: String @assert.present;
size: String @assert.present;
color: String @assert.present;
description: String;
inventory: Composition of many TileStorage on inventory.tileType = $self;
}

entity TileStorage {
key ID: UUID;
warehouse: Association to Warehouse;
tileType: Association to TileType;
quantity: Integer;
}
```
【0053】
GAIモデルは、以下のサービスファイルも生成することができる。
### srv/service.cds
```cds
using { tile.warehouse } from '../db/schema.cds';

service TileWarehouseService {
entity Warehouses as projection on warehouse.Warehouse;
entity TileTypes as projection on warehouse.TileType;
entity TileStorage as projection on warehouse.TileStorage;
}
```
【0054】
まとめると、スキーマファイルとサービスファイルがソフトウェアサーバを構成し、次いで、このソフトウェアサーバを検証することができる。前に述べたように、この検証は、コンパイルしようとする試みを含むことができる。ここで、コンパイルの第1の試みに失敗し、それによって、以下のエラーが返される。
[ERROR] db/schema.cds:3:9-13: Artifact "UUID" has not been found (in using: "UUID")
[ERROR] db/schema.cds:3:15-26: Artifact "Composition" has not been found (in using: "Composition")
Command failed: cds compile '*'
[ERROR] db/schema.cds:3:9-13: Artifact "UUID" has not been found (in using: "UUID")
[ERROR] db/schema.cds:3:15-26: Artifact "Composition" has not been found (in using: "Composition")
【0055】
したがって、システムメッセージマネージャは再度、サーバ生成要求をGAIモデルに送出し直してみる。サーバファイルのコンパイルに成功すると、システムメッセージマネージャは、サンプルサーバデータが生成されるように手配することに移ることができる。先に述べたように、1つまたは複数のステートメントが、データを欠いた1つまたは複数のファイルとともに作成される。次いで、これらのステートメントおよびファイルが、プロンプトに対する別途のシステムメッセージに追加されて、以下のものなどのデータ生成要求が作成される。
【表2A】
【表2B】
【0056】
この例では、次いで、GAIモデルが以下のサーバデータを返す。
###warehouse-Warehouse.csv
```csv
ID,name,location
f71df848-a1d5-41b5-b0ae-5cd5b44bb5d1,Warehouse A,New York
8d24de97-764e-40bd-9c9b-c23a73124325,Warehouse B,Los Angeles
74e3d60c-981d-4470-9e32-9f1f2da4d4fe,Warehouse C,Houston
a932d88f-521e-4a68-80db-9ac93d0b4991,Warehouse D,Miami
149761b7-cd93-413c-9f56-775175c9eaf8,Warehouse E,Chicago
```

###warehouse-Tiles.csv
```csv
ID,name,color,design,quantity,warehouse_ID
00e09604-7bc8-4075-89c5-54663e6295e5,Tile 1,Red,Regular,100,f71df848-a1d5-41b5-b0ae-5cd5b44bb5d1
6529e84d-e571-4e7e-b127-91d3cbd71205,Tile 2,Blue,Regular,80,8d24de97-764e-40bd-9c9b-c23a73124325
973c6f27-c6fa-4a9b-81f2-1ff2228acc24,Tile 3,White,Textured,150,74e3d60c-981d-4470-9e32-9f1f2da4d4fe
02f98609-c5ca-4345-ad5d-e62d939f7c81,Tile 4,Black,Patterned,70,a932d88f-521e-4a68-80db-9ac93d0b4991
43bef353-1ebe-4282-9465-f0d5cd5a862d,Tile 5,Green,Textured,200,149761b7-cd93-413c-9f56-775175c9eaf8
```
【0057】
次いで、生成されたサーバを検証するために、生成されたサーバデータを使用して、生成されたサーバをテストすることができる。何かに失敗した場合、サーバもしくはサーバデータ(または両方)を再生成することができる。この再生成は自動的に実施することができるが、ユーザが特定の必要性に対処するために再生成をトリガすることも可能であることに留意されたい。例えば、ユーザは、生成されたサーバデータを調べ、倉庫に関するデータ内に、所有者およびロケーションについて記述するのに十分なプロパティがないことに気付くことがある。したがって、ユーザは以下のプロンプトを追加することがある。
"所有者およびロケーションについて記述するための現実的なプロパティを倉庫にあと10個追加します"
【0058】
それに応答して、GAIモデルは、サーバデータを次のように再生成することができる。
###warehouse-Tiles.csv
```csv
ID;name;color;design;quantity;warehouse_ID
00e09604-7bc8-4075-89c5-54663e6295e5;Tile 1;Red;Regular;100;f71df848-a1d5-41b5-b0ae-5cd5b44bb5d1
6529e84d-e571-4e7e-b127-91d3cbd71205;Tile 2;Blue;Regular;80;8d24de97-764e-40bd-9c9b-c23a73124325
973c6f27-c6fa-4a9b-81f2-1ff2228acc24;Tile 3;White;Textured;150;74e3d60c-981d-4470-9e32-9f1f2da4d4fe
02f98609-c5ca-4345-ad5d-e62d939f7c81;Tile 4;Black;Patterned;70;a932d88f-521e-4a68-80db-9ac93d0b4991
43bef353-1ebe-4282-9465-f0d5cd5a862d;Tile 5;Green;Textured;200;149761b7-cd93-413c-9f56-775175c9eaf8

```
###warehouse-Warehouse.csv
```csv
ID;name;location;ownerName;ownerEmail;ownerPhone;addressLine1;addressLine2;city;state;country;postalCode;latitude;longitude
f71df848-a1d5-41b5-b0ae-5cd5b44bb5d1;Warehouse A;New York;John Doe;john.doe@example.com;+1-555-123456;123 Main St;Apt 4B;New York;New York;USA;10001;40.7128;-74.0060
8d24de97-764e-40bd-9c9b-c23a73124325;Warehouse B;Los Angeles;Jane Smith;jane.smith@example.com;+1-555-234567;456 Sunset Blvd;;;Los Angeles;California;USA;90028;34.0522;-118.2437
74e3d60c-981d-4470-9e32-9f1f2da4d4fe;Warehouse C;Houston;Jim Brown;jim.brown@example.com;+1-555-345678;789Houston St;;;Houston;Texas;USA;77007;29.7604;-95.3698
a932d88f-521e-4a68-80db-9ac93d0b4991;Warehouse D;Miami;Julia Green;julia.green@example.com;+1-555-456789;1012 Ocean Dr;;;Miami;Florida;USA;33139;25.7617;-80.1918
149761b7-cd93-413c-9f56-775175c9eaf8;Warehouse E;Chicago;Carl White;carl.white@example.com;+1-555-567890;1313 Lakeshore Dr;;;Chicago;Illinois;USA;60601;41.8781;-87.6298
【0059】
上記の開示に鑑みて、さまざまな例について以下に記載する。別々にまたは組合せて解釈される例の1つまたは複数の特徴は、本出願の開示内で考慮すべきであることに留意されたい。
【0060】
例1.
生成人工知能(GAI)モデルと、
サーバリポジトリと、
フレームワークサーバと
を備え、フレームワークサーバは、
フレームワーククライアントから1つまたは複数のサービスを記述するテキストベースのプロンプトを受信することと、
1つまたは複数のサーバファイルから生成された1つまたは複数のステートメントおよび第1の事前に設計されたシステムメッセージを含むサーバ生成要求を作成することと、
サーバ生成要求をGAIモデルに供給して、フレームワークサーバ内で実行可能なサービスについてのモデル定義を定義する1つまたは複数のサーバファイルを生成することと、
1つまたは複数のサーバファイルをサーバリポジトリ内に格納することと
を含む動作を実行するように構成された、システム。
【0061】
例2.1つまたは複数のサーバファイルが宣言型形式である、例1のシステム。
【0062】
例3.1つまたは複数のサーバファイルがスキーマファイルおよびサービスファイルを含む、例1または2のシステム。
【0063】
例4.スキーマファイルおよびサービスファイルがオープンデータプロトコル(OData)サービスを定義する、例3のシステム。
【0064】
例5.動作が、
テキストベースのプロンプト、および第2の事前に設計されたシステムメッセージを含むデータ生成要求を作成することと、
データ生成要求をGAIモデルに供給して、1つまたは複数のサーバデータファイルを生成することと、
1つまたは複数のサーバデータファイルをデータリポジトリ内に格納することと
をさらに含む、例1~4のいずれかのシステム。
【0065】
例6.動作が、
1つまたは複数のサーバファイルを検証することと、
1つまたは複数のサーバファイルが検証に失敗したとの判定に応答して、サーバ生成要求のGAIモデルへの供給を再試行することと
をさらに含む、例5のシステム。
【0066】
例7.検証することが、1つまたは複数のサーバファイルをコンパイルすることを試みることを含む、例6のシステム。
【0067】
例8.検証することが、1つまたは複数のサーバデータファイルを使用して1つまたは複数のサーバファイルに対して1つまたは複数のテストを実行することを含む、例6のシステム。
【0068】
例9.
フレームワーククライアントから1つまたは複数のサービスを記述するテキストベースのプロンプトを受信することと、
1つまたは複数のサーバファイルから生成された1つまたは複数のステートメントおよび第1の事前に設計されたシステムメッセージを含むサーバ生成要求を作成することと、
サーバ生成要求をGAIモデルに供給して、フレームワークサーバ内で実行可能なサービスについてのモデル定義を定義する1つまたは複数のサーバファイルを生成することと、
1つまたは複数のサーバファイルをサーバリポジトリ内に格納することと
を含む方法。
【0069】
例10.1つまたは複数のサーバファイルが宣言型形式である、例9の方法。
【0070】
例11.1つまたは複数のサーバファイルがスキーマファイルおよびサービスファイルを含む、例9または10の方法。
【0071】
例12.スキーマファイルおよびサービスファイルがオープンデータプロトコル(OData)サービスを定義する、例11の方法。
【0072】
例13.
テキストベースのプロンプトおよび第2の事前に設計されたシステムメッセージを含む、データ生成要求を作成することと、
データ生成要求をGAIモデルに供給して、1つまたは複数のサーバデータファイルを生成することと、
1つまたは複数のサーバデータファイルをデータリポジトリ内に格納することと
をさらに含む、例9~12のいずれかの方法。
【0073】
例14.
1つまたは複数のサーバファイルを検証することと、
1つまたは複数のサーバファイルが検証に失敗したとの判定に応答して、サーバ生成要求のGAIモデルへの供給を再試行することと
をさらに含む、例13の方法。
【0074】
例15.検証することが、1つまたは複数のサーバファイルをコンパイルすることを試みることを含む、例14の方法。
【0075】
例16.検証することが、1つまたは複数のサーバデータファイルを使用して1つまたは複数のサーバファイルに対して1つまたは複数のテストを実行することを含む、例14の方法。
【0076】
例17.命令を記憶する非一時的なマシン可読媒体であって、命令が、1つまたは複数のプロセッサによって実行されるとき、1つまたは複数のプロセッサに、
フレームワーククライアントから1つまたは複数のサービスを記述するテキストベースのプロンプトを受信することと、
テキストベースのプロンプトおよび第1の事前に設計されたシステムメッセージを含むサーバ生成要求を作成することと、
サーバ生成要求をGAIモデルに供給して、フレームワークサーバ内で実行可能なサービスについてのモデル定義を定義する1つまたは複数のサーバファイルを生成することと、
1つまたは複数のサーバファイルをサーバリポジトリ内に格納することと
を含む動作を実行させる、非一時的なマシン可読媒体。
【0077】
例18.1つまたは複数のサーバファイルが宣言型形式である、例17の非一時的なマシン可読媒体。
【0078】
例19.1つまたは複数のサーバファイルがスキーマファイルおよびサービスファイルを含む、例17~18のいずれかの非一時的なマシン可読媒体。
【0079】
例20.スキーマファイルおよびサービスファイルがオープンデータプロトコル(OData)サービスを定義する、例19の非一時的なマシン可読媒体。
【0080】
図3は、上述したデバイスのうちのいずれか1つまたは複数上にインストールすることができるソフトウェアアーキテクチャ302を示すブロック図300である。図3はソフトウェアアーキテクチャの非限定的な例にすぎず、本明細書において説明する機能を実施可能にするためには、他の多くのアーキテクチャを実装できることが理解されよう。さまざまな実施形態では、ソフトウェアアーキテクチャ302は、プロセッサ410、メモリ430、および入力/出力(I/O)コンポーネント450を含む図4のマシン400などのハードウェアによって実装される。この例示的なアーキテクチャでは、ソフトウェアアーキテクチャ302は、各レイヤが特定の機能を提供することができるレイヤのスタックとして概念化することができる。例えば、ソフトウェアアーキテクチャ302は、オペレーティングシステム304、ライブラリ306、フレームワーク308、およびアプリケーション310などのレイヤを含む。動作上、アプリケーション310は、いくつかの実施形態と矛盾することなく、このソフトウェアスタックを通じてAPIコール312を呼び出し、APIコール312に応答してメッセージ314を受け取る。
【0081】
さまざまな実装形態では、オペレーティングシステム304は、ハードウェアリソースを管理し、共通サービスを提供する。オペレーティングシステム304は、例えば、カーネル320、サービス322、およびドライバ324を含む。カーネル320は、いくつかの実施形態と矛盾することなく、ハードウェアと他のソフトウェアレイヤとの間の抽象化レイヤとしての働きをする。例えば、カーネル320は、さまざまな機能の中でもとりわけ、メモリ管理、プロセッサ管理(例えばスケジューリング)、コンポーネント管理、ネットワーキング、およびセキュリティ設定を行う。サービス322は、他のソフトウェアレイヤのための他の共通サービスを提供することができる。ドライバ324は、いくつかの実施形態に従って、下にあるハードウェアの制御、またはそのハードウェアとのインターフェースを担う。例として、ドライバ324は、ディスプレイドライバ、カメラドライバ、BLUETOOTH(登録商標)またはBLUETOOTH(登録商標) Low-Energyドライバ、フラッシュメモリドライバ、シリアル通信ドライバ(例えばユニバーサルシリアルバス(USB)ドライバ)、Wi-Fi(登録商標)ドライバ、オーディオドライバ、電力管理ドライバなどを含むことができる。
【0082】
いくつかの実施形態では、ライブラリ306は、アプリケーション310によって利用される低レベルの共通インフラストラクチャを提供する。ライブラリ306は、メモリアロケーション関数、文字列操作関数、数学関数などの関数を提供することができるシステムライブラリ330(例えばC標準ライブラリ)を含むことができる。それに加えて、ライブラリ306は、メディアライブラリ(例えばMoving Picture Experts Group-4(MPEG4)、アドバンストビデオコーディング(H.264もしくはAVC)、Moving Picture Experts Group Layer-3(MP3)、アドバンストオーディオコーディング(AAC)、適応マルチレート(AMR)オーディオコーデック、Joint Photographic Experts Group(JPEGもしくはJPG)、またはポータブルネットワークグラフィックス(PNG)など、さまざまなメディア形式の提示および操作をサポートするためのライブラリ)、グラフィックスライブラリ(例えばディスプレイ上に、あるグラフィックコンテキストにおいて2次元(2D)および3次元(3D)でレンダリングするために使用されるOpenGLフレームワーク)、データベースライブラリ(例えばさまざまなリレーショナルデータベース関数を提供するためのSQLite)、ウェブライブラリ(例えばウェブブラウジング機能を提供するためのWebKit)などの、APIライブラリ332を含むことができる。ライブラリ306は、他の多くのAPIをアプリケーション310に提供するための多種多様なその他のライブラリ334も含むことができる。
【0083】
フレームワーク308は、いくつかの実施形態に従って、アプリケーション310によって利用することができる高レベルの共通インフラストラクチャを提供する。例えば、フレームワーク308は、さまざまなGUI関数、高レベルのリソース管理、高レベルのロケーションサービスなどを提供する。フレームワーク308は、アプリケーション310によって利用することができる広範な他のAPIを提供することができ、そのうちのいくつかは、特定のオペレーティングシステム304またはプラットフォームに固有のものとすることができる。
【0084】
例示的な一実施形態では、アプリケーション310は、ホームアプリケーション350、連絡アプリケーション352、ブラウザアプリケーション354、ブックリーダアプリケーション356、ロケーションアプリケーション358、メディアアプリケーション360、メッセージングアプリケーション362、ゲームアプリケーション364、およびサードパーティアプリケーション366など、幅広い種類の他のアプリケーションを含む。いくつかの実施形態によれば、アプリケーション310は、プログラム内に定義された関数を実行するプログラムである。オブジェクト指向プログラミング言語(例えばObjective-C、Java、またはC++)や手続き型プログラミング言語(例えばC言語またはアセンブリ言語)など、さまざまなプログラミング言語を用いて、多様な様式で構造化されたアプリケーション310のうちの1つまたは複数を作成することができる。一具体例では、サードパーティアプリケーション366(例えば特定のプラットフォームのベンダ以外のエンティティによってANDROID(登録商標)またはIOS(商標)ソフトウェア開発キット(SDK)を使用して開発されたアプリケーション)は、IOS(商標)、ANDROID(登録商標)、WINDOWS(登録商標) Phone、または別のモバイルオペレーティングシステムなどのモバイルオペレーティングシステム上で動作するモバイルソフトウェアとすることができる。この例では、サードパーティアプリケーション366は、本明細書において説明する機能を実施可能にするために、オペレーティングシステム304によって提供されるAPIコール312を呼び出すことができる。
【0085】
図4は、例示的な一実施形態による、コンピュータシステムの形態をとるマシン400であって、本明細書において論じる方法のうちのいずれか1つまたは複数をマシン400に実行させるための命令のセットがその中で実行されることが可能なマシン400の概略図を示す。具体的には、図4は、コンピュータシステムの例示的な形態をとるマシン400であって、本明細書において論じる方法のうちのいずれか1つまたは複数をマシン400に実行させるための命令416(例えばソフトウェア、プログラム、アプリケーション、アプレット、アプリ、または他の実行可能なコード)がその中で実行されることが可能なマシン400の概略図を示す。例えば、命令416はマシン400に、図2の方法200を行わせることができる。それに加えてまたはその代わりに、命令416は図1図2などを実装することもできる。命令416は、一般のプログラムされていないマシン400を、説明および図示した機能を説明した様式で実行するようにプログラムされた特定のマシン400に変換する。代替実施形態では、マシン400は、スタンドアロンデバイスとして動作し、またはマシン400は、他のマシンに結合させる(例えばネットワーク接続する)ことができる。ネットワーク接続された配備では、マシン400は、サーバ-クライアントネットワーク環境におけるサーバマシンまたはクライアントマシンとして動作することもでき、あるいはピアツーピア(または分散)ネットワーク環境におけるピアマシンとして動作することもできる。マシン400は、限定はしないが、サーバコンピュータ、クライアントコンピュータ、パーソナルコンピュータ(PC)、タブレットコンピュータ、ラップトップコンピュータ、ネットブック、セットトップボックス(STB)、パーソナルデジタルアシスタント(PDA)、エンターテインメントメディアシステム、セルラー電話、スマートフォン、モバイルデバイス、ウェアラブルデバイス(例えばスマートウォッチ)、スマートホームデバイス(例えばスマートアプライアンス)、他のスマートデバイス、ウェブアプライアンス、ネットワークルータ、ネットワークスイッチ、ネットワークブリッジ、またはマシン400によってとられるべきアクションを指定する命令416を順次もしくはその他の方法で実行することが可能な任意のマシンを備えることができる。さらに、単一のマシン400のみが図示されているが、「マシン」という用語は、本明細書において論じる方法のうちのいずれか1つまたは複数を実施するための命令416を個別にまたは共同で実行するマシン400の集合も含むものと解釈されるものとする。
【0086】
マシン400は、プロセッサ410、メモリ430、およびI/Oコンポーネント450を含むことができ、それらは、バス402を介するなどして相互に通信するように構成することができる。例示的な一実施形態では、プロセッサ410(例えば中央処理装置(CPU)、縮小命令セットコンピューティング(RISC)プロセッサ、複合命令セットコンピューティング(CISC)プロセッサ、グラフィックス処理装置(GPU)、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、無線周波数集積回路(RFIC)、別のプロセッサ、またはそれらの任意の適切な組合せ)は、例えば、命令416を実行することができるプロセッサ412およびプロセッサ414を含むことができる。「プロセッサ」という用語は、命令416を同時に実行することができる2つ以上の独立したプロセッサ(「コア」と呼ばれることがある)を備えることができるマルチコアプロセッサを含むことが意図されている。図4は、複数のプロセッサ410を示しているが、マシン400は、単一のコアを備えた単一のプロセッサ412、複数のコアを備えた単一のプロセッサ412(例えばマルチコアプロセッサ412)、単一のコアを備えた複数のプロセッサ412、414、複数のコアを備えた複数のプロセッサ412、414、またはそれらの任意の組合せを含むことができる。
【0087】
メモリ430は、バス402を介するなどしてプロセッサ410にそれぞれがアクセス可能な、メインメモリ432、スタティックメモリ434、および記憶ユニット436を含むことができる。メインメモリ432、スタティックメモリ434、および記憶ユニット436は、本明細書において説明する方法または機能のうちのいずれか1つまたは複数を具現化した命令416を記憶する。命令416は、マシン400によるその実行中に、メインメモリ432内に、スタティックメモリ434内に、記憶ユニット436内に、プロセッサ410のうちの少なくとも1つのプロセッサ内(例えばプロセッサのキャッシュメモリ内)に、またはそれらの任意の適切な組合せ内に、全体または一部が常駐することもある。
【0088】
I/Oコンポーネント450は、入力を受信する、出力を提供する、出力を生成する、情報を送信する、情報を交換する、測定値を捕捉する、などのための、多種多様なコンポーネントを含むことができる。特定のマシン内に含まれる特定のI/Oコンポーネント450は、マシンのタイプに応じて変わる。例えば、モバイル電話などのポータブルマシンは、タッチ入力デバイスまたは他のそのような入力機構を含む可能性があるが、ヘッドレスサーバマシンは、そのようなタッチ入力デバイスを含まない可能性がある。I/Oコンポーネント450は図4に示されていない他の多くのコンポーネントを含むことがあることを、理解されよう。I/Oコンポーネント450は、単に以下の議論を簡略化するために、機能に従ってグループ化されており、そのグループ化は決して限定するものではない。さまざまな例示的な実施形態では、I/Oコンポーネント450は、出力コンポーネント452および入力コンポーネント454を含むことができる。出力コンポーネント452は、視覚コンポーネント(例えばプラズマディスプレイパネル(PDP)、発光ダイオード(LED)ディスプレイ、液晶ディスプレイ(LCD)、プロジェクタ、または陰極線管(CRT)などのディスプレイ)、音響コンポーネント(例えばスピーカ)、ハプティックコンポーネント(例えば振動モータ、抵抗機構)、他の信号生成器などを含むことができる。入力コンポーネント454は、英数字入力コンポーネント(例えばキーボード、英数字入力を受け取るように構成されたタッチスクリーン、光学式キーボード(photo-optical keyboard)、または他の英数字入力コンポーネント)、ポイントベースの入力コンポーネント(例えばマウス、タッチパッド、トラックボール、ジョイスティック、動きセンサ、または別のポインティング機器)、触覚入力コンポーネント(例えば物理的なボタン、タッチもしくはタッチジェスチャのロケーションおよび/もしくは力を示すタッチスクリーン、または他の触覚入力コンポーネント)、オーディオ入力コンポーネント(例えばマイクロホン)などを含むことができる。
【0089】
さらなる例示的な実施形態では、I/Oコンポーネント450は、さまざまな多数のコンポーネントの中でもとりわけ、バイオメトリックコンポーネント456、動きコンポーネント458、環境コンポーネント460、または位置コンポーネント462を含むことができる。例えば、バイオメトリックコンポーネント456は、表現(例えば手による表現、顔による表現、声による表現、身体によるジェスチャ、または目の動き(eye tracking))を検出する、生体信号(例えば血圧、心拍数、体温、発汗、または脳波)を測定する、人物の識別(例えば音声識別、網膜識別、顔識別、指紋識別、または脳波図ベースの識別)をする、などのためのコンポーネントを含むことができる。動きコンポーネント458は、加速度センサコンポーネント(例えば加速度計)、重力センサコンポーネント、回転センサコンポーネント(例えばジャイロスコープ)などを含むことができる。環境コンポーネント460は、例えば、照度センサコンポーネント(例えば測光計)、温度センサコンポーネント(例えば周囲温度を検出する1つもしくは複数の温度計)、湿度センサコンポーネント、圧力センサコンポーネント(例えば気圧計)、音響センサコンポーネント(例えば背景雑音を検出する1つもしくは複数のマイクロホン)、近接センサコンポーネント(例えば付近の物体を検出する赤外線センサ)、ガスセンサ(例えば安全のために有害ガスの濃度を検出するための、もしくは大気中の汚染物質を測定するためのガス検出センサ)、または周囲の物理的環境に対応する標識、測定値、もしくは信号を提供することができる他のコンポーネントを含むことができる。位置コンポーネント462は、ロケーションセンサコンポーネント(例えば全地球測位システム(GPS)レシーバコンポーネント)、高度センサコンポーネント(例えば高度計、または高度の導出源となることができる空気圧を検出する気圧計)、方位センサコンポーネント(例えば磁力計)などを含むことができる。
【0090】
通信を、多種多様な技術を使用して実装することができる。I/Oコンポーネント450は、マシン400をネットワーク480またはデバイス470にそれぞれ結合482および結合472を介して結合するように動作可能な、通信コンポーネント464を含むことができる。例えば、通信コンポーネント464は、ネットワークインターフェースコンポーネント、またはネットワーク480とインターフェースするのに適した別のデバイスを含むことができる。さらなる例では、通信コンポーネント464は、有線通信コンポーネント、ワイヤレス通信コンポーネント、セルラー通信コンポーネント、近距離無線通信(NFC)コンポーネント、Bluetooth(登録商標)コンポーネント(例えばBluetooth(登録商標) Low Energy)、Wi-Fi(登録商標)コンポーネント、および他のモダリティを介して通信を行うための他の通信コンポーネントを含むことができる。デバイス470は、別のマシンまたは(例えばUSBを介して結合された)多種多様な周辺デバイスのうちのいずれかとすることができる。
【0091】
さらに、通信コンポーネント464は、識別子を検出することもでき、あるいは識別子を検出するように動作可能なコンポーネントを含むこともできる。例えば、通信コンポーネント464は、無線周波数識別(RFID)タグリーダコンポーネント、NFCスマートタグ検出コンポーネント、光学式リーダコンポーネント(例えば統一商品コード(UPC)バーコードなどの1次元バーコード、QRコード(登録商標)、Aztecコード、データマトリックス、Dataglyph、MaxiCode、PDF417、Ultra Code、UCC RSS-2Dバーコードなどの多次元バーコード、および他の光学コードを検出するための光学センサ)、または音響検出コンポーネント(例えばタグ付きオーディオ信号を識別するためのマイクロホン)を含むことができる。それに加えて、インターネットプロトコル(IP)ジオロケーションを介したロケーション、Wi-Fi(登録商標)信号による三角測量を介したロケーション、特定のロケーションを示すことができるNFCビーコン信号の検出を介したロケーションなど、多様な情報を、通信コンポーネント464を介して得ることができる。
【0092】
さまざまなメモリ(例えば430、432、434、および/もしくはプロセッサ410のメモリ)ならびに/または記憶ユニット436は、本明細書において説明する方法または機能のうちのいずれか1つまたは複数を具現化する、またはそのいずれか1つまたは複数によって利用される、命令416およびデータ構造の1つまたは複数のセット(例えばソフトウェア)を記憶することができる。これらの命令(例えば命令416)は、プロセッサ410によって実行されるとき、開示の実施形態を実施するためのさまざまな動作を生じさせる。
【0093】
本明細書では、「マシン記憶媒体」、「デバイス記憶媒体」、および「コンピュータ記憶媒体」という用語は、同じものを意味し、それらは交換可能に使用されることがある。これらの用語は、実行可能な命令および/またはデータを記憶する単一のまたは複数の記憶デバイスおよび/または記憶媒体(例えば集中データベースもしくは分散データベース、ならびに/または関連するキャッシュおよびサーバ)を指す。したがって、これらの用語は、限定はしないが、プロセッサの内部または外部にあるメモリを含めて、ソリッドステートメモリならびに光学媒体および磁気媒体を含むものと解釈されるものとする。マシン記憶媒体、コンピュータ記憶媒体、および/またはデバイス記憶媒体の具体例には、例として半導体メモリデバイス、例えば消去可能プログラマブル読出し専用メモリ(EPROM)、電気的消去可能プログラマブル読出し専用メモリ(EEPROM)、フィールドプログラマブルゲートアレイ(FPGA)、およびフラッシュメモリデバイスを含む不揮発性メモリ、内蔵ハードディスクやリムーバルディスクなどの磁気ディスク、光磁気ディスク、ならびにCD-ROMディスクおよびDVD-ROMディスクが含まれる。「マシン記憶媒体」、「コンピュータ記憶媒体」、および「デバイス記憶媒体」という用語は、搬送波、変調データ信号、および他のそのような媒体を明確に除外し、それらのうちの少なくともいくつかは、下で論じる「信号媒体」という用語によってカバーされる。
【0094】
さまざまな例示的な実施形態では、ネットワーク480の1つまたは複数の部分が、アドホックネットワーク、イントラネット、エクストラネット、仮想プライベートネットワーク(VPN)、ローカルエリアネットワーク(LAN)、ワイヤレスLAN(WLAN)、広域ネットワーク(WAN)、ワイヤレスWAN(WWAN)、メトロポリタンエリアネットワーク(MAN)、インターネット、インターネットの一部分、公衆交換電話網(PSTN)の一部分、基本電話サービス(POTS)ネットワーク、セルラー電話ネットワーク、ワイヤレスネットワーク、Wi-Fi(登録商標)ネットワーク、別のタイプのネットワーク、または2つ以上のそのようなネットワークの組合せであってよい。例えば、ネットワーク480またはネットワーク480の一部分は、ワイヤレスネットワークまたはセルラーネットワークを含むことができ、結合482は、符号分割多元接続(CDMA)接続、グローバルシステムフォーモバイルコミュニケーションズ(GSM)接続、または別のタイプのセルラー結合もしくはワイヤレス結合とすることができる。この例では、結合482は、シングルキャリア無線伝送技術(1xRTT)、Evolution-Data Optimized(EVDO)技術、汎用パケット無線サービス(GPRS)技術、GSM進化型高速データレート(EDGE)技術、3Gネットワーク、第4世代ワイヤレス(4G)ネットワークを含む第3世代パートナーシッププロジェクト(3GPP(登録商標))、ユニバーサルモバイルテレコミュニケーションシステム(UMTS)、高速パケットアクセス(HSPA)、Worldwide Interoperability for Microwave Access(WiMAX)、ロングタームエボリューション(LTE)標準、さまざまな標準化団体によって定義されるその他のもの、他の長距離プロトコル、または他のデータ転送技術など、多様なタイプのデータ転送技術のうちのいずれかを実装することができる。
【0095】
命令416は、ネットワークインターフェースデバイス(例えば通信コンポーネント464内に含まれるネットワークインターフェースコンポーネント)を介した伝送媒体を使用するとともにいくつかのよく知られている転送プロトコルのうちのいずれか1つ(例えばHTTP)を利用して、ネットワーク480経由で送信または受信することができる。同様に、命令416は、結合472(例えばピアツーピア結合)を介してデバイス470に至る伝送媒体を使用して送信または受信することもできる。「伝送媒体」および「信号媒体」という用語は、同じものを意味し、それらは本開示において交換可能に使用されることがある。「伝送媒体」および「信号媒体」という用語は、命令416をマシン400によって実行できるように記憶、符号化、または搬送することの可能な任意の無形の媒体を含むものと、またデジタル通信信号もしくはアナログ通信信号、またはそのようなソフトウェアの通信を円滑にするための他の無形の媒体を含むものと、解釈されるものとする。したがって、「伝送媒体」および「信号媒体」という用語は、任意の形態の変調データ信号、搬送波などを含むものと解釈されるものとする。「変調データ信号」という用語は、その特徴のうちの1つまたは複数が、信号内の情報を符号化するように設定または変更された信号を意味する。
【0096】
「マシン可読媒体」、「コンピュータ可読媒体」、および「デバイス可読媒体」という用語は、同じものを意味し、それらは本開示において交換可能に使用されることがある。これらの用語は、マシン記憶媒体と伝送媒体の両方を含むように定義される。したがって、これらの用語は、記憶デバイス/記憶媒体と搬送波/変調データ信号の両方を含む。
【符号の説明】
【0097】
100 システム
102 CAPサーバ
104 CAPクライアント
106 システムメッセージマネージャ
108 GAIモデル
110 サーババリデータ
112 サーバリポジトリ
114 データリポジトリ
116 サーバ実行コンポーネント
200 方法
300 ブロック図
302 ソフトウェアアーキテクチャ
304 オペレーティングシステム
306 ライブラリ
308 フレームワーク
310 アプリケーション
312 APIコール
314 メッセージ
320 カーネル
322 サービス
324 ドライバ
330 システムライブラリ
332 APIライブラリ
334 その他のライブラリ
350 ホームアプリケーション
352 連絡アプリケーション
354 ブラウザアプリケーション
356 ブックリーダアプリケーション
358 ロケーションアプリケーション
360 メディアアプリケーション
362 メッセージングアプリケーション
364 ゲームアプリケーション
366 サードパーティアプリケーション
400 マシン
402 バス
410 プロセッサ
412 プロセッサ、マルチコアプロセッサ
414 プロセッサ
416 命令
430 メモリ
432 メインメモリ
434 スタティックメモリ
436 記憶ユニット
450 入力/出力(I/O)コンポーネント
452 出力コンポーネント
454 入力コンポーネント
456 バイオメトリックコンポーネント
458 動きコンポーネント
460 環境コンポーネント
462 位置コンポーネント
464 通信コンポーネント
470 デバイス
472 結合
480 ネットワーク
482 結合
図1
図2
図3
図4
【外国語明細書】