(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-02-25
(45)【発行日】2025-03-05
(54)【発明の名称】プログラム・コードを利用する診断情報の決定
(51)【国際特許分類】
G06F 8/70 20180101AFI20250226BHJP
【FI】
G06F8/70
(21)【出願番号】P 2023518436
(86)(22)【出願日】2021-07-20
(86)【国際出願番号】 CN2021107366
(87)【国際公開番号】W WO2022062612
(87)【国際公開日】2022-03-31
【審査請求日】2023-12-12
(32)【優先日】2020-09-24
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】シュクツェパニク、グルズゴーツ、ピオトル
(72)【発明者】
【氏名】カランダイク、ピオトル
(72)【発明者】
【氏名】ジャヌスツェク、パヴェル、タデウス
(72)【発明者】
【氏名】ザラス、ミハル、マチェイ
【審査官】今川 悟
(56)【参考文献】
【文献】特開2002-074520(JP,A)
【文献】特開2007-122429(JP,A)
【文献】特開2019-185203(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/70
(57)【特許請求の範囲】
【請求項1】
コ
ンピュータ・システムが実行する方法であって、前記コンピュータ・システムに対して、
ソフトウェア製品に関連する問い合わせを受信することであって、前記問い合わせがエラーの指示を含む、前記受信することと、
前記問い合わせに対する応答がアクセス可能な知識ベース内で使用可能であるかどうかを判定することと、
前記問い合わせに対する応答がアクセス可能な知識ベース内で使用可能でないということの決定に応答して
、前記受信された問い合わせの前記指示されたエラーに対応する前記ソフトウェア製品のプログラム・コード内の内容を識別することと、
前記プログラム・コード内の前記識別された内容に基づいて前記問い合わせに対する応答を決定することであって、前記問い合わせに対する前記決定された応答が、前記指示されたエラーに対応する診断情報を含む、前記決定することと
を含む
動作を実行させる方法。
【請求項2】
前記決定された応答を、前記問い合わせを送信したユーザに送信することをさらに含み、前記決定された応答に含まれている前記診断情報が、前記指示されたエラーに対応するトラブルシューティング命令を含む、請求項1に記載の方法。
【請求項3】
前記問い合わせに含まれている前記指示されたエラーに関連する前記ソフトウェア製品の前記プログラム・コード内のコメントを識別することと、
前記プログラム・コード内の前記識別されたコメントを分析することに基づいて前記指示されたエラーに対応する診断情報を生成することと、をさらに含む、請求項1
または2に記載の方法。
【請求項4】
前記プログラム・コード内の前記識別された内容に基づいて前記問い合わせに対する応答を決定することが、
ネットワークアクセス可能なデータ・リソース内で、プログラム・コード内の前記識別された内容に関連する情報を識別することと、
前記ネットワークアクセス可能なデータ・リソース内でプログラム・コード内の前記識別された内容に関連する前記識別された情報を分析することに基づいて、前記指示されたエラーに対応する診断情報を生成することと、をさらに含む、請求項1
~3のいずれか1項に記載の方法。
【請求項5】
前記ソフトウェア製品の前記プログラム・コードが、前記ソフトウェア製品のソース・コードを含む、請求項1
~4のいずれか1項に記載の方法。
【請求項6】
ソフトウェア製品に関連する問い合わせを受信することが、
1つまたは複数のプロセッサによって、前記問い合わせを含んでいる仮想アシスタント・チャットボットへのメッセージを受信することをさらに含む、請求項1
~5のいずれか1項に記載の方法。
【請求項7】
前記受信された問い合わせの前記指示されたエラーに対応する前記ソフトウェア製品のプログラム・コード内の内容を識別することが、
1つまたは複数のプロセッサによって、前記受信された問い合わせ内の前記指示されたエラーに対応するエラー・コードを含んでいる前記プログラム・コード内のコメントを識別することをさらに含む、請求項1
~6のいずれか1項に記載の方法。
【請求項8】
コンピュータ・システムが請求項1~7のいずれか1項に記載の方法を実行するためのコンピュータ・プログラ
ム。
【請求項9】
コンピュータ・システムであって、
ソフトウェア製品に関連する問い合わせを受信するための
手段であって、前記問い合わせがエラーの指示を含む
手段と、
前記問い合わせに対する応答がアクセス可能な知識ベース内で使用可能であるかどうかを判定するための
手段と、
前記問い合わせに対する応答がアクセス可能な知識ベース内で使用可能でないということの決定に応答して、前記受信された問い合わせの前記指示されたエラーに対応する前記ソフトウェア製品のプログラム・コード内の内容を識別するための
手段と、
前記プログラム・コード内の前記識別された内容に基づいて前記問い合わせに対する応答を決定するため
の手段であって、前記問い合わせに対する前記決定された応答が、前記指示されたエラーに対応する診断情報を含
む手段と
を含む、コンピュータ・システム。
【請求項10】
前記決定された応答を、前記問い合わせを送信したユーザに送信するための
手段をさらに含み、前記決定された応答に含まれている前記診断情報が、前記指示されたエラーに対応するトラブルシューティング命令を含む、請求項
9に記載のコンピュータ・システム。
【請求項11】
前記問い合わせに含まれている前記指示されたエラーに関連する前記ソフトウェア製品の前記プログラム・コード内のコメントを識別するための
手段と、
前記プログラム・コード内の前記識別されたコメントを分析することに基づいて前記指示されたエラーに対応する診断情報を生成するための
手段と
をさらに含む、請求項
9または10に記載のコンピュータ・システム。
【請求項12】
前記プログラム・コード内の前記識別された内容に基づいて前記問い合わせに対する応答を決定するための前記
手段が、
ネットワークアクセス可能なデータ・リソース内で、プログラム・コード内の前記識別された内容に関連する情報を識別するための
手段と、
前記ネットワークアクセス可能なデータ・リソース内でプログラム・コード内の前記識別された内容に関連する前記識別された情報を分析することに基づいて、前記指示されたエラーに対応する診断情報を生成するための
手段と
をさらに含む
請求項
9~11のいずれか1項に記載のコンピュータ・システム。
【請求項13】
前記ソフトウェア製品の前記プログラム・コードが、前記ソフトウェア製品のソース・コードを含む、請求項
9~12のいずれか1項に記載のコンピュータ・システム。
【請求項14】
ソフトウェア製品に関連する問い合わせを受信するための前記
手段が、
前記問い合わせを含んでいる仮想アシスタント・チャットボットへのメッセージを受信するための
手段をさらに含
む
請求項
9~13のいずれか1項に記載のコンピュータ・システム。
【請求項15】
前記受信された問い合わせの前記指示されたエラーに対応する前記ソフトウェア製品のプログラム・コード内の内容を識別するための前記
手段が、
前記受信された問い合わせ内の前記指示されたエラーに対応するエラー・コードを含んでいる前記プログラム・コード内のコメントを識別することをさらに含む、請求項
9~14のいずれか1項に記載のコンピュータ・システム。
【請求項16】
コンピュータ・システムに対して請求項1~7に記載の方法を実行させるためのコンピュータ・プログラムを格納する、コンピュータ可読な記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、データ分析の分野に関連しており、より詳細には、診断方法および診断サービスに関連する。
【背景技術】
【0002】
メッセージング・アプリケーション(例えば、ソーシャル・メッセージング、チャット・アプリケーションなど)は、広範囲のプラットフォームでのインターネット上のメッセージングを可能にするアプリケーションおよびプラットフォームである。メッセージング・アプリケーションは、ソーシャル・ネットワーキング・プラットフォームまたは他のインスタント・メッセージング・サービスのために存在し、チャットボット、支払い、電子商取引チャットなどの、特定の用途のためにも開発される。メッセージング・アプリケーションは、スマートフォンで最も広く利用されているアプリケーションの一部である。
【0003】
対話システムまたは会話エージェント(CA:conversational agent)は、人間と会話するよう意図されたコンピュータ・システムである。対話システムは、入力チャネルおよび出力チャネルの両方での通信のために、テキスト、音声、グラフィックス、触覚、ジェスチャー、および他の方法のうちの1つまたは複数を採用した。チャットボットは、聴覚またはテキストによる方法によって会話を実施する1つのソフトウェアである。そのようなプログラムは、多くの場合、人間が会話の相手としてどのように振る舞うかをもっともらしくシミュレートするように設計される。通常、チャットボットは、対話システムにおいて、顧客サービスまたは情報取得を含む、さまざまな実用目的に使用される。一部のチャットボットは高度な自然言語処理(NLP:natural language processing)システムを使用するが、他のチャットボットは、より単純な方法(例えば、キーワードの識別に基づく応答など)を利用することができる。
【0004】
コンピュータ・プログラミングでは、エラー・コード(またはリターン・コード)は、エラーの性質およびエラーが発生した理由を決定するために使用される番号付けされたコードまたは英数字コードである。エラー・コードは、デバイスが実行できない何かをデバイスが実行しようとするときに、家庭用電化製品および消費者デバイスにおいても一般に見られる。エラー・コードは、実行する動作を決定するエラー・ハンドラにも渡され得る。
【発明の概要】
【0005】
本発明の態様は、ユーザからの問い合わせに対する応答を決定するための方法、コンピュータ・プログラム製品、およびシステムを開示する。この方法は、1つまたは複数のプロセッサが、ソフトウェア製品に関連する問い合わせを受信することを含む。問い合わせは、エラーの指示を含む。この方法は、1つまたは複数のプロセッサが、問い合わせに対する応答がアクセス可能な知識ベース内で使用可能であるかどうかを判定することをさらに含む。この方法は、1つまたは複数のプロセッサが、問い合わせに対する応答が使用可能でないということの決定に応答して、受信された問い合わせの指示されたエラーに対応するソフトウェア製品のプログラム・コード内の内容を識別することをさらに含む。この方法は、1つまたは複数のプロセッサが、プログラム・コード内の識別された内容に基づいて問い合わせに対する応答を決定することをさらに含む。問い合わせに対する決定された応答は、指示されたエラーに対応する診断情報を含む。
【図面の簡単な説明】
【0006】
【
図1】本発明の実施形態に従う、データ処理環境の機能ブロック図である。
【
図2】本発明の実施形態に従う、ソフトウェア製品に関連するユーザからの問い合わせに対する応答を決定し、提供するためのプログラムの動作可能なステップを示すフローチャートである。
【
図3】本発明の実施形態に従う、
図1のクライアント・デバイスおよびサーバを表すコンピュータ・システムのコンポーネントを示すブロック図である。
【発明を実施するための形態】
【0007】
本発明の実施形態は、ソフトウェア製品のソース・コードを自動的に再調査し、受信された問い合わせに対する回答を作成することに関連する情報を識別するためのチャットボットを提供できる。したがって、本発明の実施形態は、問い合わせに対する応答を決定するために、サポートされているソフトウェア製品に関する包括的なドキュメント(例えば、人間オペレータによって準備されるドキュメントおよび命令)を必要とせず、システムのコストを減らし、システムの速度およびスループットを向上させるように動作することができるチャットボット(または他の質問回答システムおよび方法)を操作し、提供することができる。
【0008】
本発明の一部の実施形態は、チャットボット(例えば、仮想アシスタント)が、ソフトウェア製品をサポートするために一般に使用されるということを認識している。さまざまな状況において、チャットボットは、マニュアル、ガイド、技術ノート、他のサポート事例(例えば、チケット)、よくある質問(FAQ:frequently asked questions)のリストなどの、製品ドキュメントに含まれている知識を利用して動作することができる。本発明の実施形態は、そのような知識ベースを作成することが、時間がかかり、献身的な努力を必要とするということを認識している。したがって、本発明の実施形態は、多くの状況において、知識ベースが完全で最新なものではなく、このことが、チャットボットからの回答の精度を制限するか、または減らす可能性があるということを認識している。製品サポート・チャットボットによって受信される一般的な種類の質問は、ソフトウェア製品によって報告されたエラー・コードの意味に関する。本発明の実施形態は、エラー・コードがドキュメントにおいて説明されている場合、そのような回答を提供することはチャットボットにとって自明であるが、エラー・コードがドキュメントにおいて明確に提示され、かつ説明されていない場合に困難が生じるということを認識している。
【0009】
本発明の実施形態は、ソフトウェア製品に関連する問い合わせを受信するように動作することができる。問い合わせに対する応答が(例えば、ソフトウェア製品に関連する既存の知識ベースにおいて)容易に使用可能でないということの決定に応答して、本発明の実施形態は、ソフトウェア製品のプログラム・コードを識別し、受信された問い合わせからプログラム・コード内の内容を識別することができる。次に、本発明の実施形態は、識別された内容に基づいて問い合わせに対する応答を決定し、対応する要求元のユーザ(例えば、問い合わせを提出したユーザ)に応答を提供するように動作ことができる。
【0010】
本発明の実施形態の実装は、さまざまな形態を取ってよく、以下では、各図を参照して例示的な実装の詳細が説明される。
【0011】
ここで、各図を参照して本発明が詳細に説明される。
図1は、本発明の1つの実施形態に従って、分散データ処理環境(概して100と指定される)を示す機能ブロック図である。
図1は、単に1つの実装の例を提供しており、さまざまな実施形態を実装できる環境に関して、どのような制限も意味していない。特許請求の範囲に列挙されている本発明の範囲から逸脱することなく、当業者によって、示された環境に対する多くの変更が行われてよい。
【0012】
データ処理環境100の実施形態は、ネットワーク105を経由して相互接続されたコンピューティング・デバイス110およびサーバ120を含んでいる。実施形態例では、サーバ120は、顧客サポート・サービスおよびトラブルシューティング・サービス(例えば、サポート・チャットボット、仮想アシスタントなど)を、コンピューティング・デバイス110に関連するユーザなどの、1つまたは複数の組織およびユーザに提供するコンピューティング・デバイス(例えば、1つまたは複数の管理サーバ)を表している。他の実施形態では、データ処理環境100は、本発明のさまざまな実施形態に従って、サーバ120とインターフェースすることができるコンピューティング・デバイスの追加の事例(不図示)を含むことができる。
【0013】
ネットワーク105は、例えば、ローカル・エリア・ネットワーク(LAN:local area network)、電気通信ネットワーク、インターネットなどの広域ネットワーク(WAN:wide area network)、またはこれらの3つの任意の組み合わせであることができ、有線接続、ワイヤレス接続、または光ファイバ接続を含むことができる。一般に、ネットワーク105は、本発明の実施形態に従って、コンピューティング・デバイス110と、サーバ120との間の通信をサポートする接続およびプロトコルの任意の組み合わせとすることができる。さまざまな実施形態では、ネットワーク105は、複数のネットワーク化されたコンピューティング・デバイス(例えば、コンピューティング・デバイス110および図示されていない他のデバイス)、対応するユーザ(例えば、コンピューティング・デバイス110、サーバ120などのユーザ)、および対応する管理サービスまたはネットワークアクセス可能なリソースあるいはその両方(例えば、サーバ120およびデータ・リソース130)の間の通信を容易にする。
【0014】
本発明のさまざまな実施形態では、コンピューティング・デバイス110は、ワークステーション、パーソナル・コンピュータ、パーソナル・デジタル・アシスタント、携帯電話、または本発明の実施形態に従ってコンピュータ可読プログラム命令を実行することができる任意の他のデバイスであってよい。一般に、コンピューティング・デバイス110は、コンピュータ可読プログラム命令を実行することができる任意の電子デバイスまたは電子デバイスの組み合わせを表す。コンピューティング・デバイス110は、本発明の実施形態に従って、
図3に関してさらに詳細に示され、説明されるように、コンポーネントを含んでよい。
【0015】
実施形態例では、コンピューティング・デバイス110は、問い合わせをサーバ120に送信するソフトウェア製品(例えば、ソフトウェア製品116)を利用しているユーザに関連する(例えば、ユーザに登録された)パーソナル・ワークステーションまたはモバイル・デバイスである。例えば、コンピューティング・デバイス110のユーザが、ソフトウェア製品116を利用している間にエラーに遭遇し、発生したエラーに関する問い合わせを(サーバ120に)送信する。
【0016】
コンピューティング・デバイス110は、ユーザ・インターフェース112、アプリケーション114、およびソフトウェア製品116を含んでいる。ユーザ・インターフェース112は、コンピューティング・デバイス110のユーザと、デバイスに存在する複数のアプリケーション(例えば、アプリケーション114)の間のインターフェースを提供するプログラムである。ユーザ・インターフェース112などのユーザ・インターフェースとは、プログラムがユーザに提示する情報(グラフィックス、テキスト、および音など)、およびプログラムを制御するためにユーザが使用する制御シーケンスのことを指す。さまざまな種類のユーザ・インターフェースが存在する。1つの実施形態では、ユーザ・インターフェース112はグラフィカル・ユーザ・インターフェースである。グラフィカル・ユーザ・インターフェース(GUI:graphical user interface)は、ユーザが、テキストベースのインターフェース、入力されるコマンド・ラベル、またはテキスト・ナビゲーションとは対照的に、二次表記などのグラフィカルなアイコンおよび視覚的インジケータを介して、コンピュータ・キーボードおよびマウスなどの電子デバイスを使用して情報をやりとりできるようにする一種のユーザ・インターフェースである。コンピュータの使用では、GUIは、キーボードでコマンドを入力することを必要とするコマンドライン・インターフェースの認識された急こう配の学習曲線に反応して導入された。GUIにおける動作は、多くの場合、グラフィカルな要素の直接的操作によって実行される。別の実施形態では、ユーザ・インターフェース112は、スクリプトまたはアプリケーション・プログラミング・インターフェース(API)である。
【0017】
アプリケーション114は、コンピューティング・デバイス110上で動作する1つまたは複数のアプリケーション(例えば、アプリケーション一式)を表すことができる。さまざまな実施形態例では、アプリケーション114は、サーバ120との間でデータを送信するか、または受信するか、あるいはその両方を実行するためにコンピューティング・デバイス110のユーザが利用するアプリケーションであることができる。別の実施形態例では、アプリケーション114は、ソフトウェア製品116を利用することに関連付けられたアプリケーションであることができる。1つの例では、アプリケーション114は、コンピューティング・デバイス110のユーザがアクセスして利用できるWebブラウザである。別の例では、アプリケーション114は、サーバ120または対応する組織あるいはその両方に関連する(例えば、企業によって提供された製品に関連する)、企業に固有のアプリケーションである。例示的な状況では、コンピューティング・デバイス110のユーザは、アプリケーション114を利用して、サーバ120(例えば、サーバ120のチャットボットまたはチャットボット・プログラム200あるいはその両方)とのチャット・セッションを確立し、ソフトウェア製品116に関して通信することができる。
【0018】
ソフトウェア製品116は、本発明のさまざまな実施形態に従ってコンピューティング・デバイス110のユーザが利用できる、コンピューティング・デバイス110上で動作するプログラムまたはアプリケーションを表すことができる。追加の態様では、ソフトウェア製品116は、サーバ120上のプログラム・コード124に対応する(すなわち、プログラム・コード124は、ソフトウェア製品116のソース・コードを含む)。
【0019】
実施形態例では、サーバ120は、デスクトップ・コンピュータ、コンピュータ・サーバ、または従来技術において知られた任意の他のコンピュータ・システムであることができる。特定の実施形態では、サーバ120は、データ処理環境100の要素(例えば、コンピューティング・デバイス110および図示されていない他のデバイス)によってアクセスされたときにシームレスなリソースの単一のプールとして機能するクラスタ化されたコンピュータおよびコンポーネント(例えば、データベース・サーバ・コンピュータ、アプリケーション・サーバ・コンピュータなど)を利用する、コンピュータ・システムを表す。一般に、サーバ120は、コンピュータ可読プログラム命令を実行することができる任意の電子デバイスまたは電子デバイスの組み合わせを表す。サーバ120は、本発明の実施形態に従って、
図3に関してさらに詳細に示され、説明されるように、コンポーネントを含んでよい。
【0020】
サーバ120は、チャットボット・プログラム200と、プログラム・コード124および知識ベース126を含むストレージ・デバイス122とを含んでいる。さまざまな実施形態例では、サーバ120は、顧客サポート・サービスおよびトラブルシューティング・サービス(例えば、サポート・チャットボット、仮想アシスタントなど)を、コンピューティング・デバイス110に関連するユーザなどの、1つまたは複数の組織およびユーザに提供するコンピューティング・システムとして動作する。例えば、サーバ120は、チャットボット・プログラム200を含んでいるチャットボット・サービスをホストする。追加の実施形態では、サーバ120は、本発明のさまざまな態様に従って(例えば、チャットボット・プログラム200の動作と組み合わせて)利用するために、構文および意味解析機能を含むか、または構文および意味解析機能にアクセスすることができる。別の実施形態では、サーバ120は、本発明のさまざまな態様に従って(例えば、チャットボット・プログラム200の動作と組み合わせて)利用するために、自然言語処理(NLP)機能を含むことができるか、または自然言語処理(NLP)機能にアクセスすることができる。
【0021】
実施形態例では、チャットボット・プログラム200は、本発明の実施形態に従って、ソフトウェア製品に関連するユーザからの問い合わせに対する応答を自動的に決定し、提供する。さまざまな実施形態では、サーバ120は、チャットボット・プログラム200を利用して、ソフトウェア製品116に関連するチャットボットの動作の一部を管理することができる。チャットボット・プログラム200は、ソフトウェア製品に関連する問い合わせを受信する。問い合わせに対する応答が(例えば、ソフトウェア製品に関連する既存の知識ベースにおいて)容易に使用可能でないということの決定に応答して、チャットボット・プログラム200は、ソフトウェア製品のプログラム・コードを識別し、受信された問い合わせからプログラム・コード内の内容を識別する。次に、チャットボット・プログラム200は、識別された内容に基づいて問い合わせに対する応答を決定し、対応する要求元のユーザ(例えば、問い合わせを提出したユーザ)に応答を提供する。
【0022】
本発明のさまざまな実施形態では、コンピューティング・デバイス110のユーザは、(例えば、対応するアプリケーションを介して)サーバ120に登録することができる。例えば、ユーザは、登録プロセスを完了し、情報を提供し、サーバ120による、少なくともコンピューティング・デバイス110によって提供される関連するデータ(例えば、ユーザ・プロフィール情報、ユーザの連絡先情報、認証情報、ソフトウェア製品の使用情報、ユーザの嗜好、またはサーバ120がチャットボット・プログラム200と共に利用する情報の種類)の収集および分析を許可する(すなわち、オプトインする)。さまざまな実施形態では、ユーザは、データ収集の特定のカテゴリをオプトインまたはオプトアウトすることができる。例えば、ユーザは、要求されたすべての情報、または要求された情報のサブセットを提供すること、あるいは情報を提供しないことを、オプトインすることができる。追加の実施形態では、コンピューティング・デバイス110のユーザは、本発明の実施形態に従って、コンピューティング・デバイス110からの問い合わせに対する応答を決定することにおいて、サーバ120がどの情報を利用できるかを定義することができる。
【0023】
ストレージ・デバイス122は、データベース・サーバ、ハード・ディスク・ドライブ、またはフラッシュ・メモリなどの、サーバ120によってアクセスされて利用され得るデータを格納できる任意の種類のストレージ・デバイス、例えば、持続性ストレージ305を使用して実装され得る。他の実施形態では、ストレージ・デバイス122は、サーバ120内の複数のストレージ・デバイスおよびデータの集合を表すことができる。さまざまな実施形態では、サーバ120は、ストレージ・デバイス122を利用して、ソフトウェア製品116(例えば、コンピューティング・デバイス110などの外部デバイス上で動作するソフトウェア)に関連する情報およびデータを格納することができる。
【0024】
プログラム・コード124は、(例えば、コンピューティング・デバイス110上の)ソフトウェア製品116に対応するコンピュータ・コードを表す。別の実施形態では、サーバ120は、プログラム・コード124およびソフトウェア製品116を含んでいる製品またはサービスをホストすることができる。この実施形態では、コンピューティング・デバイス110は、ソフトウェア製品116をサーバ120からダウンロードすることができ、一方、サーバ120は、コンピューティング・デバイス110上のソフトウェア製品116に直接対応するプログラム・コード124の各コピーを維持する。実施形態例では、プログラム・コード124はソフトウェア製品116のソース・コードを含む。追加の実施形態では、ソフトウェア製品116の作成者は、サーバ120が、本発明のさまざまな実施形態に従って(
図2に示されている)チャットボット・プログラム200の処理ステップにおいてプログラム・コード124を利用することを許可することができる。
【0025】
実施形態例では、知識ベース126は、ソフトウェア製品116およびプログラム・コード124に対応する蓄積されたデータを含む。例えば、知識ベース126は、製品ドキュメント、マニュアル、ガイド、技術ノート、他のサポート事例(例えば、チケット)、よくある質問(FAQ)のリストなどの、ソフトウェア製品116およびプログラム・コード124に関連する使用可能な既知のデータを含むことができる。追加の実施形態では、知識ベース126は、チャットボット・プログラム200の実行によって決定された情報を含むことができる。例えば、知識ベース126に存在しなかった、問い合わせに対する応答を決定することに応答して、チャットボット・プログラム200は、決定された応答を、将来使用するために知識ベース126に追加することができる。実施形態例では、知識ベース126は、ソフトウェア製品116(およびプログラム・コード124)に対応する複数のエラー・コード、およびエラー・コードの対応する意味(およびトラブルシューティング命令)を含むことができる。
【0026】
データ・リソース130は、サーバ120に(例えば、ネットワーク105を経由して)ネットワークアクセス可能な、情報の1つまたは複数の位置を表す。1つの実施形態では、データ・リソース130は、ソフトウェア製品116およびプログラム・コード124の使用に関連する情報を含んでいるパブリック・データ・ソースである。例えば、データ・リソース130は、ソフトウェア製品116(およびプログラム・コード124)に関連する質問および回答を含んでいるWebサイトであることができる。追加の実施形態では、データ・リソース130は、ソフトウェア製品116などの1つまたは複数のソフトウェア製品に関するデバッグ情報を含むことができる。さらなる実施形態では、データ・リソース130は、コード・コメント、コード・コメントの対応する説明、エラー情報、質問および回答などのデータベースを含むことができる。さまざまな実施形態では、サーバ120は、NLP解析、構文解析、意味解析、または本発明のさまざまな実施形態に従ってサーバ120が使用できる他の解析機能を利用して、データ・リソース130を検索することができる。
【0027】
図2は、本発明の実施形態に従う、ソフトウェア製品に関連するユーザからの問い合わせに対する応答を決定し、提供するためのプログラムであるチャットボット・プログラム200の動作可能なステップを示すフローチャートである。1つの実施形態では、チャットボット・プログラム200は、(例えば、コンピューティング・デバイス110のユーザから)問い合わせを受信することに応答して開始する。別の実施形態では、チャットボット・プログラム200は、ユーザからの問い合わせを待機する(サーバ120上の)バックグラウンド・プロセスとして動作することができる。例えば、チャットボット・プログラム200は、本発明のさまざまな実施形態に従ってサーバ120によって容易にされる、チャットボットおよびトラブルシューティング・サービスの態様として動作する。
【0028】
ステップ202で、チャットボット・プログラム200が、ソフトウェア製品に関連する問い合わせを受信する。1つの実施形態では、チャットボット・プログラム200は、ソフトウェア製品116に関連する問い合わせをコンピューティング・デバイス110から受信する。実施形態例では、チャットボット・プログラム200は、サーバ120上で質問回答チャットボットの態様として動作する。この実施形態例では、チャットボット・プログラム200(および対応するチャットボット)は、問い合わせ(例えば、質問)をコンピューティング・デバイス110のユーザから受信する。別の実施形態では、チャットボット・プログラム200は、自然言語で問い合わせを受信し、NLP解析技術を利用して、問い合わせ内の内容(例えば、質問の意図、キーワード、エラー・コードなど)を識別することができる。さまざまな実施形態では、チャットボット・プログラム200(およびサーバ120)は、ソフトウェア製品116の動作および対話に基づいて、さまざまな問い合わせの種類(およびデータ要求の他の形態)を受信することができる。
【0029】
例示的な状況では、コンピューティング・デバイス110のユーザは、ソフトウェア製品116を利用していて、エラーに遭遇する。それに応じて、ソフトウェア製品116は、「エラー:A44Z」を含んでいるエラー・メッセージを提示する。この例示的な状況では、コンピューティング・デバイス110のユーザは、サーバ120上のチャットボットとのメッセージング・セッションを開始し、提示されたエラー・コードを含んでいる問い合わせを送信する。例えば、コンピューティング・デバイス110のユーザは、「エラー:A44Zの意味は何ですか?」と述べる自然言語の問い合わせをチャットボットに提出することができ、チャットボット・プログラム200が、提出された自然言語の問い合わせを受信する。
【0030】
判定ステップ204で、チャットボット・プログラム200が、問い合わせに対する応答が使用可能であるかどうかを判定する。1つの実施形態では、チャットボット・プログラム200は、知識ベース126が、受信された(ステップ202で受信された)問い合わせに対応する応答を含んでいるかどうかを判定する。実施形態例では、知識ベース126は、ソフトウェア製品116およびプログラム・コード124に対応する蓄積されたデータを含む。例えば、知識ベース126は、製品ドキュメント、マニュアル、ガイド、技術ノート、他のサポート事例(例えば、チケット)、よくある質問(FAQ)のリストなどの、ソフトウェア製品116およびプログラム・コード124に関連する使用可能な既知のデータを含むことができる。追加の実施形態では、知識ベース126は、チャットボット・プログラム200の実行によって決定された情報を含むことができる。実施形態例では、知識ベース126は、ソフトウェア製品116(およびプログラム・コード124)に対応する複数のエラー・コードおよびエラー・コードの対応する意味(およびトラブルシューティング命令)を含むことができる。
【0031】
1つの実施形態では、チャットボット・プログラム200は、問い合わせに対する応答の検索において利用するために、受信された問い合わせを構文解析して分析し、キーワードおよび語句を識別する。次に、チャットボット・プログラム200は、問い合わせに対する既存の応答に関して、使用可能なリソース(例えば、知識ベース126)を検索することができる。例えば、チャットボット・プログラム200は、「エラー:A44Z」に対応する説明またはトラブルシューティング命令に関して、知識ベース126を検索する。
【0032】
1つの態様では、チャットボット・プログラム200は、知識ベースを検索し、ステップ202で受信された問い合わせに対する応答を特定する。この態様では、問い合わせに対する応答が使用可能であるということを決定すること(判定ステップ204の「はい」の分岐)に応答して、チャットボット・プログラム200が応答を提供する(ステップ212)。
【0033】
別の態様では、チャットボット・プログラム200は、知識ベースを検索し、ステップ202で受信された問い合わせに対する応答を特定しない。例えば、チャットボット・プログラム200は、知識ベース126(およびソフトウェア製品116に関連する他のアクセス可能情報リソース)を検索し、問い合わせに対する応答の指示(例えば、説明、トラブルシューティング命令など)を検出しない。前に説明された例示的な状況に関して、チャットボット・プログラム200は、知識ベース126が「エラー:A44Z」に対応する説明またはトラブルシューティング命令を含んでいないということを決定する。この態様では、問い合わせに対する応答が使用可能ないということを決定すること(判定ステップ204の「いいえ」の分岐)に応答して、チャットボット・プログラム200がソフトウェア製品のプログラム・コードを識別する(ステップ206)。
【0034】
ステップ206で、チャットボット・プログラム200が、ソフトウェア製品のプログラム・コードを識別する。より詳細には、(ステップ202で受信された)問い合わせに対する応答が使用可能でないということを決定すること(判定ステップ204の「いいえ」の分岐)に応答して、チャットボット・プログラム200が、ソフトウェア製品116に対応するプログラム・コード124を識別する(ステップ206)。さまざまな実施形態では、ストレージ・デバイス122に格納されているプログラム・コード124は、(例えば、コンピューティング・デバイス110上の)ソフトウェア製品116に対応するコンピュータ・コードを表す。実施形態例では、プログラム・コード124はソフトウェア製品116のソース・コードを含む。
【0035】
ステップ208で、チャットボット・プログラム200が、受信された問い合わせから、プログラム・コード内の内容を識別する。1つの実施形態では、チャットボット・プログラム200は、受信された問い合わせに含まれている情報(例えば、問い合わせからのエラー・コード、キーワード、または受信された問い合わせに含まれている他の要求/問題)に関して、プログラム・コード124を検索する。さまざまな実施形態では、チャットボット・プログラム200は、NLP解析、構文解析、意味解析、または本発明のさまざまな実施形態に従ってサーバ120が使用できる他の解析機能を利用して、プログラム・コード124を分析および検索することができる。
【0036】
実施形態例では、チャットボット・プログラム200は、問い合わせを解決することに関連するプログラム・コード124内の情報を検索するためにフックトゥスタティック(hook-to-static)プログラム解析エンジンを利用して、プログラム・コード124に対して意味解析または構文解析あるいはその両方を実行することができる。別の実施形態では、チャットボット・プログラム200は、受信された問い合わせに関連する情報を含んでいる(例えば、問い合わせ内のエラー・コードに言及する)プログラム・コード124内のコメントを識別することができる。この実施形態では、チャットボット・プログラム200は、識別されたコメントに含まれている情報(例えば、説明、トラブルシューティング命令など)に関して、ネットワークアクセス可能なリソース(例えば、データ・リソース130)を検索できる。例えば、チャットボット・プログラム200は、コメントのNLP解析/理解およびトーン解析を使用して、データ・リソース130に含まれている関連情報を識別することができる。
【0037】
前に説明された例示的な状況では、コンピューティング・デバイス110のユーザが、「エラー:A44Z」に言及する問い合わせを送信する。この例示的な状況では、チャットボット・プログラム200が、エラー・コード「エラー:A44Z」を検索して、プログラム・コード124を再調査する。チャットボット・プログラム200は、プログラム・コード124内のエラー・コードを識別してから、プログラム・コード124内のエラー・コードの位置の近くにあるコメントを識別し、分析することができる。例示的な状況では、チャットボット・プログラム200が、(例えば、NLP解析、構文解析、意味解析などを使用して)識別されたコメントを分析し、エラー・コードの意味に関連する情報を識別することができる。加えて、チャットボット・プログラム200は、エラー・コードに関連する情報に関して、ソフトウェア製品116およびプログラム・コード124に関連する情報を含んでいる追加のデータ・ソース(例えば、データ・ソース130、または他の関連するファイルならびにテキスト・リソースおよびテキスト・リポジトリ)にアクセスして分析することもできる。
【0038】
ステップ210で、チャットボット・プログラム200が、問い合わせに対する応答を決定する。1つの実施形態では、チャットボット・プログラム200は、プログラム・コード124内で識別された内容に基づいて、対応する診断情報を含んでいる、問い合わせに対する応答を決定する。例えば、チャットボット・プログラム200は、(例えば、プログラム・コード124内で識別されたコメントに基づいて)エラー・コードの意味について説明するコメントを含んでいる応答を決定する。別の実施形態では、チャットボット・プログラム200は、プログラム・コード124から決定された情報(例えば、ソース・コードのコメントにおいて列挙されたデータ)およびデータ・リソース130からの情報(例えば、エラー・コードの説明、対応するトラブルシューティング情報など)を応答に含めるために、診断情報のセットを生成することができる。
【0039】
実施形態例では、チャットボット・プログラム200は、ソフトウェア製品116に関連する受信された問い合わせに対する応答に関して、プログラム・コード124を検索する。例えば、チャットボット・プログラム200は、「エラー:A44Z」に関連する情報に関してプログラム・コード1224を検索する。チャットボット・プログラム200は、「エラー:A44Z」に関連するプログラム・コード124内のコメント(例えば、エラー・コードに言及するコメント、エラー・コードを表示するプログラム・コードの近くにあるコメントなど)を識別することができる。この実施形態例では、チャットボット・プログラム200が、(例えば、NLP解析、構文解析、意味解析などを使用して)プログラム・コード124および識別されたコメントを分析し、コンピューティング・デバイス110のユーザへの、問い合わせに対する応答に含めるための診断情報を識別することができる。
【0040】
別の実施形態例では、チャットボット・プログラム200は、ソフトウェア製品116に関連する受信された問い合わせに対する応答に関連する情報に関して、データ・リソース130(または別のアクセス可能な情報リソース)を検索するか、または照会するか、あるいはその両方を実行する。例えば、チャットボット・プログラム200は、「エラー:A44Z」に関連する情報に関してデータ・リソース130を検索する。1つの例では、チャットボット・プログラム200が、プログラム・コード124の内容を分析すること(例えば、意味解析/構文解析)が問い合わせに対する応答をもたらさないということを決定した場合、チャットボット・プログラム200は、データ・リソース130を検索することができる。別の例示的な態様では、チャットボット・プログラム200は、プログラム・コード124の内容を分析することに加えて、(例えば、さらなる明確化のために)データ・リソースを検索することができる。この実施形態例では、チャットボット・プログラム200は、「エラー:A44Z」に関連するプログラム・コード124内のコメントを識別してから、識別されたコメント(およびエラー・コード)を、データ・リソース130などのアクセス可能なリソースと比較する。したがって、チャットボット・プログラム200は、「エラー:A44Z」およびソフトウェア製品116に対応するデータ・リソース130内の診断情報を識別することができる。
【0041】
さまざまな実施形態では、チャットボット・プログラム200は、ユーザのための診断情報を含むように、問い合わせに対する応答を生成する。前に説明された例示的な状況では、チャットボット・プログラム200は、コンピューティング・デバイス110のユーザから、ソフトウェア製品116に関する「エラー:A44Z」を含んでいる問い合わせを受信した。チャットボット・プログラム200は、プログラム・コード124またはデータ・リソース130あるいはその両方を分析することに基づいて、エラーの意味を説明する情報またはエラーを解決することに関連する情報あるいはその両方を含んでいる診断情報を生成することができる。例えば、チャットボット・プログラム200が、「エラー:A44Z」が「パーティションでの不十分なディスク空き容量」に対応するということを決定する。チャットボット・プログラム200は、「パーティションでの不十分なディスク空き容量」のエラー・コード定義を含んでいる、問い合わせに対する応答を決定することができる。追加の態様では、チャットボット・プログラム200は、「パーティションでの不十分なディスク空き容量」のエラーを解決することにおいてコンピューティング・デバイス110のユーザを支援するためのトラブルシューティング命令を含んでいる、問い合わせに対する応答を決定することができる。
【0042】
ステップ212で、チャットボット・プログラム200が応答を提供する。1つの実施形態では、チャットボット・プログラム200は、(ステップ202で受信された)問い合わせに対する(ステップ210で決定された)応答をコンピューティング・デバイス110のユーザに提供する。実施形態例では、チャットボット・プログラム200は、サーバ120とコンピューティング・デバイス110のユーザの間のメッセージング・セッションにおいて、生成された診断情報を提供することができる。例えば、チャットボット・プログラム200は、「エラー:A44Z」が「パーティションでの不十分なディスク空き容量」に対応することを示す応答を提供することができる。加えて、チャットボット・プログラム200は、「パーティションでの不十分なディスク空き容量」のエラーを解決することにおいてコンピューティング・デバイス110のユーザを支援するためのトラブルシューティング命令を含んでいる、問い合わせに対する応答を提供することができる。
【0043】
別の実施形態では、チャットボット・プログラム200は、問い合わせに対する決定された応答を、ソフトウェア製品116をサポートすること(およびチャットボット・プログラム200の実行)において将来使用するために、知識ベース126に追加することができる。例えば、チャットボット・プログラム200は、コンピューティング・デバイス110のユーザから、問い合わせに対する応答が正確であり、満足のいくものであることのフィードバックを受信することができる。したがって、チャットボット・プログラム200は、次に、将来の事例および(判定ステップ204を実行する)チャットボット・プログラム200の動作において利用するために、許可された応答を知識ベース126に追加することができる。
【0044】
1つの態様では、チャットボット・プログラム200は、(判定ステップ204で)知識ベースを検索し、ステップ202で受信された問い合わせに対する応答を特定する。この態様では、問い合わせに対する応答が使用可能であるということを決定すること(判定ステップ204の「はい」の分岐)に応答して、チャットボット・プログラム200が応答を提供する(ステップ212)。
【0045】
図3は、本発明の実施形態例に従って、コンピューティング・デバイス110およびサーバ120を表すコンピュータ・システム300を示している。
図3は、単に1つの実装の例を提供しており、さまざまな実施形態を実装できる環境に関して、どのような制限も意味していないと理解されるべきである。図に示された環境に対して、多くの変更が行われてよい。コンピュータ・システム300は、プロセッサ301、キャッシュ303、メモリ302、永続的ストレージ305、通信ユニット307、入出力(I/O:input/output)インターフェース306、および通信構造304を含んでいる。通信構造304は、キャッシュ303、メモリ302、永続的ストレージ305、通信ユニット307、および入出力(I/O)インターフェース306の間の通信を提供する。通信構造304は、プロセッサ(マイクロプロセッサ、通信プロセッサ、およびネットワーク・プロセッサなど)、システム・メモリ、周辺機器、およびシステム内の任意の他のハードウェア・コンポーネントの間で、データまたは制御情報あるいはその両方を渡すために設計された、任意のアーキテクチャを使用して実装され得る。例えば、通信構造304は、1つまたは複数のバスまたはクロスバ・スイッチを使用して実装され得る。
【0046】
メモリ302および永続的ストレージ305は、コンピュータ可読ストレージ媒体である。この実施形態では、メモリ302はランダム・アクセス・メモリ(RAM:random access memory)を含んでいる。一般に、メモリ302は、任意の適切な揮発性または不揮発性のコンピュータ可読ストレージ媒体を含むことができる。キャッシュ303は、メモリ302から最近アクセスされたデータ、および最近アクセスされたデータに近いデータを保持することによって、プロセッサ301の性能を向上させる高速なメモリである。
【0047】
本発明の実施形態を実践するために使用されるプログラム命令およびデータ(例えば、ソフトウェアおよびデータ310)は、永続的ストレージ305、およびキャッシュ303を介して各プロセッサ301のうちの1つまたは複数によって実行するためのメモリ302に格納されてよい。実施形態では、持続性ストレージ305は、磁気ハード・ディスク・ドライブを含んでいる。磁気ハード・ディスク・ドライブに対する代替または追加として、永続的ストレージ305は、半導体ハード・ドライブ、半導体ストレージ・デバイス、読み取り専用メモリ(ROM:read-only memory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasable programmable read-only memory)、フラッシュ・メモリ、あるいはプログラム命令またはデジタル情報を格納できる任意の他のコンピュータ可読ストレージ媒体を含むことができる。
【0048】
持続性ストレージ305によって使用される媒体は、取り外し可能であってもよい。例えば、取り外し可能ハード・ドライブが、持続性ストレージ305に使用されてよい。その他の例としては、持続性ストレージ305の一部でもある別のコンピュータ可読ストレージ媒体に転送するためのドライブに挿入される、光ディスクおよび磁気ディスク、サム・ドライブ、ならびにスマート・カードが挙げられる。ソフトウェアおよびデータ310は、キャッシュ303を介して各プロセッサ301のうちの1つまたは複数によってアクセスするか、または実行するか、あるいはその両方を行うために、持続性ストレージ305に格納され得る。コンピューティング・デバイス110に関して、ソフトウェアおよびデータ310は、ユーザ・インターフェース112およびアプリケーション114を含む。サーバ120に関して、ソフトウェアおよびデータ410は、チャットボット・プログラム200、プログラム・コード124、および知識ベース126を含む。
【0049】
これらの例において、通信ユニット307は、他のデータ処理システムまたはデバイスとの通信を提供する。これらの例において、通信ユニット307は、1つまたは複数のネットワーク・インターフェース・カードを含む。通信ユニット307は、物理的通信リンクおよびワイヤレス通信リンクのどちらかまたは両方を使用して通信を提供してよい。本発明の実施形態を実践するために使用されるプログラム命令およびデータ(例えば、ソフトウェアおよびデータ310)は、通信ユニット307を介して永続的ストレージ305にダウンロードされてよい。
【0050】
I/Oインターフェース306は、各コンピュータ・システムに接続されてよい他のデバイスとのデータの入力および出力を可能にする。例えば、I/Oインターフェース306は、キーボード、キーパッド、タッチ・スクリーン、またはその他の適切な入力デバイス、あるいはその組み合わせなどの、外部デバイス308への接続を提供してよい。外部デバイス308は、例えばサム・ドライブ、ポータブル光ディスクまたはポータブル磁気ディスク、およびメモリ・カードなどの、ポータブル・コンピュータ可読ストレージ媒体を含むこともできる。本発明の実施形態を実践するために使用されるプログラム命令およびデータ(例えば、ソフトウェアおよびデータ310)は、そのようなポータブル・コンピュータ可読ストレージ媒体に格納されることが可能であり、I/Oインターフェース306を介して持続性ストレージ305に読み込まれ得る。I/Oインターフェース306は、ディスプレイ309にも接続される。
【0051】
ディスプレイ309は、データをユーザに表示するためのメカニズムを提供し、例えば、コンピュータのモニタであってよい。
【0052】
本明細書に記載されたプログラムは、アプリケーションに基づいて識別され、本発明の特定の実施形態において、そのアプリケーションに関して実装される。ただし、本明細書における特定のプログラムの名前は単に便宜上使用されていると理解されるべきであり、したがって、本発明は、そのような名前によって識別されたか、または暗示されたか、あるいはその両方である特定のアプリケーションのみで使用するように制限されるべきではない。
【0053】
本発明は、任意の可能な統合の技術的詳細レベルで、システム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読ストレージ媒体を含んでよい。
【0054】
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読ストレージ媒体のさらに具体的な例の非網羅的リストは、ポータブル・フロッピー(登録商標)・ディスク、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(登録商標)・ディスク、命令が記録されているパンチカードまたは溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組み合わせを含む。本明細書において使用されるとき、コンピュータ可読ストレージ媒体は、それ自体が、電波または他の自由に伝搬する電磁波、導波管または他の送信媒体を伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、あるいはワイヤを介して送信される電気信号などの一過性の信号であると解釈されるべきではない。
【0055】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から各コンピューティング・デバイス/処理デバイスへ、またはネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、またはワイヤレス・ネットワーク、あるいはその組み合わせ)を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを備えてよい。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。
【0056】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、あるいはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)または広域ネットワーク(WAN)を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ(FPGA:field-programmable gate arrays)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行してよい。
【0057】
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
【0058】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施する手段を作り出すべく、コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されて機械を作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体がフローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組み合わせに特定の方式で機能するように指示できるものであってもよい。
【0059】
コンピュータ可読プログラム命令は、コンピュータ上、他のプログラム可能な装置上、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施するように、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスに読み込まれてもよく、それによって、一連の動作可能なステップを、コンピュータ上、他のプログラム可能な装置上、またはコンピュータ実装プロセスを生成する他のデバイス上で実行させる。
【0060】
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための1つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された2つのブロックは、実際には、含まれている機能に応じて、1つのステップとして同時に実行されるか、時間的に部分的または完全に重複する方法で実質的に同時に実行されるか、あるいは場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組み合わせは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組み合わせを実行する専用ハードウェアベースのシステムによって実装されることができるということにも注意する。
【0061】
本発明の種々の実施形態の説明は、例示の目的で提示されているが、網羅的であることを意図しておらず、開示された実施形態に制限されない。本発明の範囲を逸脱することなく多くの変更および変形が可能であることは、当業者にとって明らかである。本明細書で使用された用語は、実施形態の原理、実際の適用、または市場で見られる技術を超える技術的改良を最も良く説明するため、または他の当業者が本明細書で開示された実施形態を理解できるようにするために選択された。