以下に、本願に係る情報提供装置、情報提供方法、データ構造および情報提供プログラムを実施するための形態(以下、「実施形態」と呼ぶ)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る情報提供装置、情報提供方法、データ構造および情報提供プログラムが限定されるものではない。また、各実施形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
〔1.情報提供装置について〕
まず、図1を用いて、選択装置の一例である情報提供装置10が実行する処理の一例について説明する。図1は、実施形態に係る情報提供装置が実行する処理の一例を示す図である。なお、以下の説明では、情報提供装置10が実行する情報提供処理として、決済サーバ100が提供する決済サービスに関するアプリケーションの開発を容易にするため、各種パラメータの設定を行った際に決済サーバ100からアプリケーションに対して提供される応答の内容のシミュレーションを行う処理の一例について記載するが、実施形態は、これに限定されるものではない。
後述する説明で明らかとなるように、情報提供装置10が提供する情報は、決済サービス以外にも、外部のサーバ装置やクラウドシステム等、各種の外部サーバが管理する情報を制御することで、所定のサービスを利用者に提供するためのアプリケーションの開発に有意な情報となる。そこで、情報提供装置10は、決済サービス以外にも、利用者が利用する端末装置からの情報に従って、任意の処理を実行し、実行結果を提供する外部サーバのシミュレーションを提供してよい。
〔1-1.情報提供装置の概要〕
図1に示すように、情報提供システム1は、情報提供装置10、決済サーバ100、利用者Uが利用する端末装置210、利用者に対して各種サービスを提供する店員Sが利用する端末装置220、および開発者Dが利用する開発者端末300を有する。なお、情報提供システム1は、情報提供装置10のみを有し、他の装置については、他のシステムに属するものであってもよい。
情報提供装置10は、インターネット等の所定のネットワークN(例えば、図3を参照。)を介して、各種の装置と通信可能な情報処理装置であり、例えば、サーバ装置やクラウドシステム等により実現される。例えば、情報提供装置10は、ネットワークNを介して、各装置と通信可能である。
決済サーバ100は、各種の決済サービスを提供する情報処理装置であり、例えば、サーバ装置やクラウドシステム等により実現される。例えば、決済サーバ100は、利用者Uや店舗Sの口座を管理しており、各種の要求に応じて口座間の送金を行うことで、決済サービスの実現を行う。なお、決済サービスの詳細については、後述する。
端末装置210は、利用者Uが利用する情報処理装置であり、例えば、スマートフォンやタブレット等のスマートデバイスであり、3G(Generation)やLTE(Long Term Evolution)等の無線通信網を介して任意のサーバ装置と通信を行うことができる携帯端末装置である。また、端末装置220は、店舗Sが利用する情報処理装置であり、例えば、POS(Pont of Sales)端末、スマートフォンやタブレット等のスマートデバイス等により実現される。
ここで、端末装置210、220(以下、「端末装置200」と総称する場合がある。)は、液晶ディスプレイ等の画面であって、タッチパネルの機能を有する画面を有し、利用者から指やスタイラス等によりタップ操作、スライド操作、スクロール操作等、コンテンツ等の表示データに対する各種の操作を受付けてもよい。なお、端末装置200は、PC(Personal Computer)等の情報処理装置であってもよい。
開発者端末300は、端末装置210にインストールさせるアプリケーションの開発を行う開発者Dが利用する端末装置であり、例えばPCやサーバ装置により実現可能である。例えば、開発者端末300は、各種の開発用アプリケーションがインストールされており、開発者Dによるプログラムコードの入力により、アプリケーションの生成を行うこととなる。
〔1-2.決済サービスの概要〕
ここで、決済サーバ100が提供する決済サービスの一例について説明する。決済サーバ100は、端末装置200を用いた決済(電子決済)に関するサービスを提供する(ステップBS0)。
例えば、利用者Uが店舗Sにて各種の商品やサービスといった決済対象(取引対象)の利用や購入に伴う決済を行う場合、利用者Uは、端末装置210に予めインストールされた決済用のアプリケーション(以下、単に「決済アプリ」と記載する場合がある)を起動する。そして、利用者Uは、決済アプリを介して、店舗Aに設置された店舗識別情報(すなわち、支払先識別情報)を撮影する。例えば、店舗Sには、店舗Sを識別する2次元コード(QRコード(登録商標))等の店舗識別情報が設置されており、利用者Uは、このような店舗識別情報を端末装置200で撮影する。なお、店舗識別情報は、QRコード(登録商標)のみならず、バーコードや所定のマーク、番号等であってもよい。また、店舗識別情報は、各種の印刷物に付与されたものであってもよく、例えば、端末装置220の画面上に表示されたものであってもよい。
このような場合、端末装置210は、決済対象の価格を入力するための画面を表示し、利用者U或いは店舗Sの店員から決済金額の入力を受け付ける。そして、端末装置210は、利用者Uを識別する利用者識別情報(すなわち、支払元識別情報)と、店舗識別情報(若しくは、店舗識別情報が示す情報、すなわち、店舗Sを示す情報(例えば、店舗ID(Identifier))と、決済金額とを示す決済情報を決済サーバ100へと送信する。
このような場合、決済サーバ100は、利用者識別情報が示す利用者Uの口座から、店舗識別情報が示す店舗Sの口座へと、決済金額が示す額の電子マネーを移行させる。そして、決済サーバ100は、決済が完了した旨の通知を端末装置210へと送信する。このような場合、端末装置210は、決済が完了した旨の画面や所定の音声を出力することで、電子マネーによる決済が行われた旨を通知する。
なお、端末装置200を用いた決済は、上述した処理に限定されるものではない。例えば、端末装置200を用いた決済は、店舗Sに設置された端末装置220を用いたものであってもよい。例えば、端末装置210は、利用者Uを識別するための利用者識別情報を画面上に表示させる。このような場合、店舗Sに設置された端末装置220は、端末装置210に表示された利用者識別情報を読み取り、利用者識別情報(若しくは、利用者識別情報が示す情報、すなわち、利用者Uを示す情報(例えば、利用者ID))と、決済金額と、店舗Sを識別する情報とを示す決済情報を決済サーバ100へと送信する。このような場合、決済サーバ100は、利用者識別情報が示す利用者Uの口座から、店舗Sの口座へと、決済金額が示す額の電子マネーを移行させ、店舗Sの端末装置220または端末装置210に対し、決済が完了した旨の画面や所定の音声を出力させることで、決済が行われた旨を通知してもよい。
また、端末装置200を用いた決済は、利用者Uが予め電子マネーをチャージした口座から店舗Sの口座へと電子マネーを移行させる処理のみならず、例えば、利用者Uが予め登録したクレジットカードを用いた決済であってもよい。このような場合、例えば、端末装置200は、店舗Aの口座に対して決済金額の電子マネーを移行させるとともに、利用者Uのクレジットカードの運用会社に対し、決済金額を請求してもよい。
〔1-3.情報提供処理の一例について〕
このような決済サービスそのものや、決済サービスに付随する他の付加的なサービスを提供するアプリケーションの開発が考えられる(ステップBS1)。例えば、複数の利用者で店舗の利用料金を割り勘するサービスや、利用額に応じて各種のクーポンを提供したりといったサービスが考えられる。このようなサービスを提供するには、各種サービスを実現するためのアプリケーションを開発し、端末装置210にインストールさせることとなる。
より具体的な例を挙げて説明する。例えば、上述したように、利用者が店舗での購買に決済サービスを用いる場合、端末装置210にインストールされたアプリケーションは、支払元口座の識別情報、支払額、および支払先口座の識別情報等を決済サーバ100に通知する。このような場合、決済サーバ100は、通知された識別情報が示す支払元口座から、通知された支払額を、通知された識別情報が支払先口座へと送金することで、決済サービスを実現することとなる。また、例えば、複数の利用者が決済額の割り勘を行う場合、代表者の端末装置210にインストールされたアプリケーションは、決算額を決済サーバ100に通知するとともに、決済サーバ100から通知された所定のQRコードを表示させる。このような場合、各利用者は、代表者の端末装置210に表示されたQRコードを自身の端末装置210で撮影する。そして、各利用者の端末装置210にインストールされたアプリケーションは、撮影したQRコードが示す情報を決済サーバ100へと送信する。このような場合、決済サーバ100は、所定のQRコードが示す情報を送信した利用者を割り勘を行う利用者として特定し、特定した利用者の口座から、店舗の口座へと、決済額を決済額を利用者の人数で除算した額の電子マネーを送金する。
このように、端末装置210にインストールされたアプリケーションは、決済サーバ100が管理する各種の情報を制御することで、決済サービスを実現することとなる。例えば、アプリケーションは、支払前における口座の残余額、支払額、支払後における口座の残余額、支払によって提供されるポイントやキャッシュバックの額等、様々な情報を取得して表示したり、口座間の送金や送金額の制御を行うことで、支払、口座間の送金、クーポンを利用した値引き、キャッシュバック等といったサービスを実現することとなる。例えば、このようなアプリケーションは、利用者Uが支払を行った際に、決済サーバ100から支払に伴うキャッシュバック額やクーポンの内容等を取得し、取得した額やクーポンを表示する機能を有する。また、これらの処理以外にも、端末装置210にインストールされるアプリケーションは、例えば、利用者Uの認証や店舗に設置されたQRコードの認証等、セキュリティに関する様々な機能や、その他任意の機能を、決済サーバ100と通信を行うことで実現することとなる。
しかしながら、このようなアプリケーションの開発には、手間がかかる。例えば、決済サービスに用いられるアプリケーションは、決済サーバ100に対して各種の情報を送信することで、決済サーバ100が管理する情報を制御し、制御結果として決済サーバ100が提供する応答の内容に応じて、次の処理を実行することとなる。また、このようなアプリケーションは、決済サーバ100から、各種の情報を取得し、取得した情報を用いて、次の処理(例えば、取得した情報の表示等)を行うこととなる。
例えば、決済サーバ100側は、端末装置210から提供される情報に基づいて、処理を実行する。このため、アプリケーションから決済サーバ100へ送信される情報(例えば、決済額や各種ID等のパラメータ)の内容や種別が、決済サーバ100に実行させる処理と対応していない場合、決済サーバ100に適切な処理を実行させることができない。より具体的には、アプリケーションは、決済サーバ100が提供するAPI(Application Programming Interface)に対応した情報を送信する必要がある。
しかしながら、このようなAPIに対応した情報がどのような情報であるかを確認するのは、手間がかかる。特に、決済サーバが提供するサービスが新規なサービスである場合、インターネット等で検索したとしても、適切な解説が開発者によって投稿済みである可能性は低く、どのような情報を送信するようにアプリケーションを作成すればよいかを認識するのは、難しい。
特に、決済サーバ100は、アプリケーションからの要求に従って処理を行った場合、処理の実行結果を応答としてアプリケーションに送信する。例えば、決済サーバ100は、端末装置210が実行するアプリケーションからの要求に従って処理を実行した結果、処理が適切に行われた場合、端末装置210を利用する利用者Uの口座の残余額を含む応答等をアプリケーションに送信する場合がある。このような場合、アプリケーションは、応答に基づいて、例えば、口座の残余額を表示するといった次の処理を実行することとなる。
一方、決済サーバ100は、アプリケーションからの要求に従って適切な処理を実行することができない場合、処理を実行することができなかった旨の内容を含む応答を出力する。このような応答には、例えば、どのようなエラーが生じたかを示す文字列(以下、「エラーコード」と記載する場合がある。)や、エラーの種別を示す数値(以下、「レスポンスコード」と記載する場合がある。)が含まれる場合がある。このようなエラーを示す応答(以下、「エラーレスポンス」と記載する。)が決済サーバ100から出力された場合、開発者Dは、エラーレスポンスの内容から、エラーの原因を特定し、アプリケーションの修正を行う。
しかしながら、エラーレスポンスからエラーの原因を推定するのは、手間がかかる。例えば、決済サーバ100に送信する情報が同一であったとしても、決済サーバ100に実行させる処理が異なる場合は、応答の内容が変化する。このため、開発者Dは、どのようなタイミングでどのような処理を行った際に、どのようなエラーレスポンスが提供されたかに応じて、送信する情報に誤りがあったのか、送信する情報の形式に誤りがあったのかといった事項を特定しなければならず、手間がかかる。とくに、アプリケーションと外部サーバとが利用者Uに対して提供するサービスが新規なサービスである場合、サービスの開発者とは異なる開発者Dがアプリケーションの開発時において、エラーの内容を特定するのは、難しい。
そこで、情報提供装置10は、決済サーバ100から提供されるエラーレスポンスの内容から、エラーの内容を特定し、特定した内容を示す情報を開発者Dに対して提供する。すなわち、情報提供装置10は、決済サーバ100が提供するエラーレスポンスの内容を解説する解説装置として動作する。
以下、図1を用いて、情報提供装置10が実行する情報提供処理の流れの一例について説明する。まず、開発者Dは、開発者端末300から、エンドポイントや決済サーバ100から受けた応答メッセージを情報提供装置100へと提供する(ステップS1)。例えば、開発者Dは、アプリケーションの開発段階、もしくは配布済みのアプリケーションについて決済サーバ100が出力したエラーレスポンスを取得する。このような場合、開発者Dは、エラーレスポンス、すなわち、応答メッセージを情報提供装置10へと提供する。さらに、開発者Dは、このようなエラーレスポンスが提供されたエンドポイントを示す情報を合わせて提供する。
ここで、エンドポイントとは、アプリケーションと決済サーバ100とが通信を行うタイミングや、決済サーバ100が提供するAPIを介して通信を行う際に用いられるURI(Uniform Resource Identifier)等といった処理のエンドポイントである。例えば、アプリケーションは、何かしらの機能を発揮する場合、決済サーバ100が管理する情報を制御するためのリクエストを、処理の内容や処理を実行する目的に応じたAPIエンドポイントを介して、決済サーバ100に送信することとなる。例えば、アプリケーションは、決済サーバ100が管理する情報を制御する場合、口座の残余額等、決済サーバ100が管理する情報の取得(GET)、削除(DEL:Delete、もしくは情報の登録(POST)といった処理を行うことで、所定の機能を実現することとなる。
このような決済サーバ100が管理する情報を制御する処理は、アプリケーションと決済サーバ100とが通信を行うエンドポイントごとに異なる目的で実行されることとなる。この結果、例えば、同様のエラーコードを含むエラーレスポンスが提供されたとしても、リクエストを送信した際のエンドポイントが異なる場合、エラーの原因が変化すると考えられる。そこで、情報提供装置10は、エラーレスポンスとの文章とともに、どのエンドポイントにおいて決済サーバ100が提供したエラーレスポンスであるかを示す情報を開発者Dから取得する。
このような場合、情報提供装置10は、エラー内容を特定する(ステップS2)。例えば、情報提供装置10は、エラーレスポンスの内容と、エラーレスポンスが提供されたエンドポイントとの組み合わせに応じて、なぜエラーが発生したのか、どのようにすればエラーを解消できるのかといった情報を特定する。より具体的な例を挙げると、情報提供装置10は、決済額等、決済サーバ100が管理する情報を制御するためにアプリケーションが送信する各種のパラメータの値が所定の形式を満たしているか、パラメータの値に矛盾が含まれているかといったエラーの原因を特定する。
さらに、情報提供装置10は、特定したエラーの原因に対応する対応策を特定する。例えば、情報提供装置10は、特定したエラーを解決するために(エラーが発生しないように)アプリケーションが実行すべき処理の内容を対応策として特定する。そして、情報提供装置10は、特定したエラーの内容を示す情報を提供する(ステップS3)。例えば、情報提供装置10は、エラーの内容や対応策を開発者Dに対して提供する(ステップS3)。このような処理の結果、開発者Dは、エラーの発生を防ぐようにアプリケーションの修正等といった開発を行うことができる(ステップS4)。
〔1-4.解析画面の一例について〕
次に、図2~図4を用いて、情報提供装置10がエラーレスポンスを受け付け、エラーレスポンスが示すエラーの内容や解決方法を提供する解析コンテンツC10の一例について説明する。図2は、実施形態に係る解析コンテンツの一例を示す第1の図である。また、図3は、実施形態に係る解析コンテンツの一例を示す第2の図である。また、図4は、実施形態に係る解析コンテンツの一例を示す第3の図である。情報提供装置10は、図2~図4に示す解析コンテンツC10を提供することで、開発者Dに対し、エラーレスポンスが示すエラーの内容や対応策を提供する。
例えば、図2に示す例では、解析コンテンツC10には、応答解析アイコンC11、原文解析アイコンC12、エンドポイント指定ウインドウC13、レスポンスコード指定ウインドウC14、エラーレスポンス入力ウインドウC15、および解析ボタンC16が配置されている。なお、図2、図3に示す画面を、以下では「応答解析画面」と記載する場合がある。
応答解析アイコンC11は、図2に示す応答解析画面を表示させるためのアイコンである。情報提供装置10は、開発者Dが応答解析アイコンC11を選択した場合、図2に示すように、エンドポイント指定ウインドウC13、レスポンスコード指定ウインドウC14、エラーレスポンス入力ウインドウC15、および解析ボタンC16が配置された原文解析画面を表示する。
原文解析アイコンC12は、エラーレスポンスの文章のみからエラーの内容や対応策を提供する原文解析画面(例えば、図4)を表示させるためのアイコンである。例えば、情報提供装置10は、開発者Dが原文解析アイコンC12を選択した場合、エンドポイント指定ウインドウC13、およびレスポンスコード指定ウインドウC14を有さず、エラーレスポンス入力ウインドウC15および解析ボタンC16のみが配置された原文解析画面を表示する。なお、原文解析画面の詳細については、後述する。
エンドポイント指定ウインドウC13は、入力するエラーレスポンスが受け付けられた際のエンドポイントを指定するための入力ウインドウである。例えば、開発者Dは、エラーレスポンスの解析を行う場合、エラーレスポンスが提供された際に利用したAPIエンドポイントを入力することとなる。なお、情報提供装置10は、エンドポイント指定ウインドウC13を介して、APIエンドポイントを示す文字列の入力を受け付けてもよく、例えば、ドロップダウンリスト等でAPIエンドポイントの候補を提供し、候補の中から開発者Dが選択したAPIエンドポイントを入力としてもよい。
レスポンスコード指定ウインドウC14は、エラーレスポンスが提供された際に決済サーバ100から提供されるレスポンスコードを入力するための入力ウインドウである。例えば、決済サーバ100は、リクエストに従って処理を実行した際にエラーが発生した場合、エラーレスポンスとともに、エラーの種別を示すレスポンスコードを出力する。このような場合、開発者Dは、レスポンスコードを、レスポンスコード指定ウインドウC14に入力する。なお、情報提供装置10は、ドロップダウンリスト等でレスポンスコードの候補を提供し、候補の中から開発者Dが選択したレスポンスコードを入力としてもよい。
エラーレスポンス入力ウインドウC15は、エラーレスポンスの文字列を入力するためのウインドウである。例えば、開発者Dは、決済サーバ100から受け付けたエラーレスポンスの文章をエラーレスポンス入力ウインドウC15内にコピーアンドペーストする。このような処理の結果、情報提供装置10は、エラーレスポンスの文章を取得することとなる。
また、情報提供装置10は、開発者DがAPIエンドポイント、レスポンスコード、およびエラーレスポンスの文章を入力し、解析ボタンC16を選択した場合、APIエンドポイント、レスポンスコード、およびエラーレスポンスの文章を取得する。そして、情報提供装置10は、取得したAPIエンドポイント、レスポンスコード、およびエラーレスポンスの文章から、エラーの内容を特定し、特定したエラーを解消するための対応策を特定する。そして、情報提供装置10は、特定したエラーの内容と、対応策とを示す情報を開発者Dに対して提供する。
例えば、情報提供装置10は、エラーレスポンスの文章に含まれるエラーコードを特定する。そして、情報提供装置10は、APIエンドポイント、レスポンスコード、およびエラーコードとの組に対してあらかじめ対応付けて所定の記憶装置に登録されたエラー内容と、対応策とを特定する。すなわち、情報提供装置10は、入力されたAPIエンドポイントにおいて決済サーバ100がアプリケーションへと提供したエラーレスポンスであって、アプリケーションから通知されたパラメータを用いて処理を実行した際に生じたエラーの内容を示すエラーレスポンスやレスポンスコードから、エラーの内容や対応策を特定する。
例えば、情報提供装置10は、図3に示すように、特定したエラー内容を解説する解説コンテンツC17と、特定した内容のエラーを解消するための対応策を示す対応策コンテンツC18とを、解析コンテンツC10内に配置して表示する。この際、情報提供装置10は、日本語でエラー内容を解説する文章とともに、英語でエラー内容を解説する文章を解説コンテンツC17として表示する。また、情報提供装置10は、日本語で対応策を示す文章とともに、英語で対応策を示す文章を対応策コンテンツC17として表示する。なお、情報提供装置10は、例えば、中国語、ヒンドゥー語、ドイツ語、フランス語等、各種の言語でエラー内容や対応策を示す文章を表示してもよい。このように、情報提供装置10は、エラーの内容や対応策を多言語で表示することで、利用者の国籍によらず、エラーレスポンスの解析結果を認識させることができる。
なお、情報提供装置10は、原文解析アイコンC12が選択された場合、図4に示すように、レスポンステキストの原文(すなわち、Raw Text)のみを入力するための画面を表示する。このような画面からレスポンステキストのみが入力された場合、情報提供装置10は、レスポンステキストに含まれるエラーコードを特定し、特定したエラーコードと対応付けられたすべてのエラー内容や対応策を特定する。
そして、情報提供装置10は、特定したすべてのエラー内容や対応策を提供する。なお、情報提供装置10は、各エラー内容や対応策が、どのエンドポイントやどのエラーコードに対応するエラー内容と対応策であるかを示す表示を合わせて提供してもよい。また、情報提供装置10は、レスポンステキストの分析結果から、決済サーバ100がレスポンステキストを提供した際に提供したレスポンスコードや、エンドポイントを推定し、推定したレスポンスコードやエンドポイントと対応するエラーの内容や対応案を提供してもよい。
〔1-5.情報提供装置の機能について〕
ここで、上述した説明では、開発者Dは、決済サーバ100から提供されたエラーレスポンスの内容を解析するため、エラーレスポンスを情報提供装置10へと提供した。しかしながら、実施形態は、これに限定されるものではない。例えば、アプリケーションの開発段階において、実際にサービスを提供する決済サーバ100に対し、各種のリクエストの送信するのは、提供されているサービスに障害を生じさせる恐れがある。
そこで、情報提供装置10は、アプリケーションの開発段階において、決済サーバ100が提供する応答のガイダンスとして動作してもよい。より具体的には、情報提供装置10は、端末装置210から提供される各種の情報(例えば、支払元口座、支払先口座、および支払額)をパラメータとして受け付けると、かかるパラメータを受け付けた際に決済サーバ100が提供するであろう応答、すなわち、そのパラメータを用いた処理の実行結果を開発者Dに対して提供する。また、情報提供装置10は、端末装置210で実行されるアプリケーションと、決済サーバ100との間で行われる情報通信が適切に行われるか否かを開発者Dに対して提示するサンドボックス環境として動作することができる(図1中ステップBS2)。
例えば、情報提供装置10は、指定された処理の実行に対してパラメータが適切である場合、そのパラメータを用いて処理を実行した後に決済サーバ100がアプリケーションに送信する応答を生成する。より具体的には、情報提供装置10は、処理を実行した後の状況を示すパラメータ(例えば、支払後の残余額等)を含む応答を生成する。そして、情報提供装置10は、生成した応答を開発者Dに対して提供する。また、情報提供装置10は、パラメータの値や形式が適切ではない場合、パラメータが適切ではない旨の情報や、決済サーバ100が実際に出力するエラーコードを含むエラーレスポンスを実行結果として開発者Dに対して提供する。このような処理の結果、情報提供装置10は、決済サーバ100と端末装置210が協調して実行するサービスにおいて、端末装置210側にインストールされるアプリケーションの開発を促進することができる。
より具体的な例を挙げると、情報提供装置10は、エンドポイントの候補を提供する。そして、情報提供装置10は、開発者Dが実行結果を確認したい処理のエンドポイントの指定を受け付ける。例えば、情報提供装置10は、アプリケーションを介して提供されるサービスの種別(以下、「サービス種別」と記載する。)を提示する。例えば、アプリケーションを介して提供される各種のサービスが、電子商店街等といったWeb上の店舗における決済サービスに関する「Web Cashier」、実店舗における決済サービスに関する「Payments」、決済の停止に関する「Pending Payments」、および決済の再開・継続に関する「Continuous Payment」という4つのサービス種別に分類されているものとする。このような場合、情報提供装置10は、各サービス種別を開発者端末300に表示させる。
そして、情報提供装置10は、利用者がいずれかのサービス種別を選択した場合、選択されたサービス種別に分類されるエンドポイントを開発者端末300に表示させる。例えば、情報提供装置10は、サービス種別として、「Web Cashier」が選択された場合、電子商店街等といったWeb上の店舗における決済サービスにおいて決済サーバ100とアプリケーションとが通知を行う各エンドポイントを候補として提示する。また、情報提供装置10は、各エンドポイントにおいて行われる情報の制御が、登録(POST)であるか、取得(GET)であるか、削除(DEL)であるかを示す情報を合わせて表示してもよい。より具体的な例を挙げると、情報提供装置10は、サービス種別「Web Cashier」に関するエンドポイントとして、エンドポイント「/v2/codes」ともに、かかるエンドポイントにおいて実行される情報の制御が、情報の登録(POST)である旨を示す情報を表示させる。
また、例えば、情報提供装置10は、開発者Dがエンドポイントを選択した場合、選択されたエンドポイントにおいて開発者が所望する機能の候補(以下、「シナリオ」と記載する。)を開発者端末300に表示させる。例えば、情報提供装置10は、エンドポイント「/v2/codes」において提供される機能、すなわち、シナリオが、「ダイナミックQRコードの生成」、「事前認証済みのダイナミックQRコードの生成」、および「APIにアクセスできない場合のエラー表示」である場合、シナリオの候補として、「ダイナミックQRコードを生成したい」、「事前認証済みのダイナミックQRコードを生成したい」、および「APIにアクセスできない場合にエラーを表示させたい」といった候補を開発者端末300に表示させる。そして、情報提供装置10は、いずれのシナリオを所望するかの指定を開発者Dから受け付ける。
また、情報提供装置10は、開発者Dがシナリオを選択した場合、選択されたシナリオにおいてアプリケーションから決済サーバ100へと送信されるパラメータの指定を受け付ける。例えば、情報提供装置10は、開発者DがシナリオウインドウC12を介して「ダイナミックQRコードを生成したい」というシナリオを選択した場合、「ダイナミックQRコードの生成」を行う際にアプリケーションから決済サーバ100へと送信されるパラメータとして、「支払先口座ID」、「送金額」、および「QRコード種別」といったパラメータの種別を示す情報を、開発者端末300に表示させる。さらに、情報提供装置10は、「支払先口座ID」、「送金額」、および「QRコード種別」といったパラメータを入力するための入力ウインドウを表示する。
この際、情報提供装置10は、入力ウインドウに、パラメータの値の候補を入力した状態で表示させてもよい。また、情報提供装置10は、適切なパラメータの条件を示す情報をさらに表示させてもよい。例えば、情報提供装置10は、支払先口座IDとして入力されるべきパラメータの文字種別や文字数、送金額として入力されるべき数値の範囲、QRコード種別として入力されるべきパラメータの文字種別や文字数等を示す情報を表示してもよい。
また、情報提供装置10は、開発者Dの操作に応じて、開発者Dが選択したシナリオを実現するためにアプリケーションから決済サーバ100へと送信されるプログラムコードの例、すなわち、コードスニペットを生成する。例えば、情報提供装置10は、入力ウインドウに入力されたパラメータの値を特定し、特定した値を特定したコードスニペット内に挿入する。そして、情報提供装置10は、パラメータに応じた制御の実行結果を表示する。なお、情報提供装置10は、パラメータの値を挿入したコードスニペットをさらに表示させてもよい。
ここで、情報提供装置10は、パラメータの値に不適切な値が含まれる場合、例えば、利用者Uや店舗Sを識別するIDの形式が誤っている場合や値が誤っている場合、送金元の口座の残余額よりも高い送金額が設定されている場合等は、エラーレスポンスを実行結果として提供することとなる。このようなエラーレスポンスには、どのようなエラーが発生したかを示すエラーコードとともに、エラーの種別を示すレスポンスコードが含まれることとなる。
このようなエラーレスポンスが提供された場合、開発者Dは、エラーレスポンスの内容を確認し、選択したエンドポイントにおいてどのようなパラメータを設定すればよいかを特定することとなる。しかしながら、開発者Dが決済サービスの仕様(例えば、APIの仕様)に詳しくない場合には、このような特定が困難となる。また、決済サービスが新規なサービスである場合、他の開発者Dによって作成されたエラーレスポンスの解説が存在せず、ウェブ検索を行ったとしても、対策を講じることができない可能性が高い。
そこで、情報提供装置10は、エラーレスポンスの内容を解析し、エラーの内容や対応策を特定する。そして、情報提供装置10は、特定した内容や対応策を開発者Dに対して提供することで、アプリケーションの開発を促進することができる。
〔1-6.適用対象について〕
上述した説明では、情報提供装置10は、決済サービスにおいて提供される各種の機能を発揮するためのアプリケーション開発を容易にするため、エラーレスポンスの内容を解析し、エラーの内容や対応策を提供した。しかしながら、実施形態は、これに限定されるものではない。
例えば、情報提供装置10は、所定の外部サーバ(外部システムを含む。)と端末装置210側とが通信しながら協調して動作することで実現されるサービスであって、端末装置210を利用する利用者Uに対して提供されるサービスであれば、任意のサービスについて、上述した各処理を実行してよい。
例えば、情報提供装置10は、SNS(Social Networking Service)や、各種のソーシャルゲーム等、外部サーバに登録されている情報の制御を行うことで、各種のサービスを利用者に提供するアプリケーションの開発について、エンドポイント、レスポンスコード、およびレスポンステキストの組等を受け付けると、受け付けた組と対応するエラーの内容や対応策を提供してもよい。このような実行結果が得られる場合、開発者Dは、例えば、エラーが発生したエンドポイントにおいて、どのような対応を行えばよいかを識別することができる。なお、外部サーバが管理し、アプリケーションからの制御される情報としては、任意の種別の情報が採用可能である。このような情報は、口座の残余額といった数値のみならず、各種の文字列、画像、音声等といった各種のコンテンツであってもよい。すなわち、情報提供装置10は、任意の情報を制御するアプリケーションについて、上述した各種の機能を提供してよい。
〔2.情報提供装置の構成〕
以下、上記した情報提供装置10が有する機能構成の一例について説明する。図5は、実施形態に係る情報提供装置の構成例を示す図である。図5に示すように、情報提供装置10は、通信部20、記憶部30、および制御部40を有する。
通信部20は、例えば、NIC(Network Interface Card)等によって実現される。そして、通信部20は、ネットワークNと有線または無線で接続され、端末装置200との間で情報の送受信を行う。
記憶部30は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。また、記憶部30は、エラーコードデータベース31を記憶する。
エラーコードデータベース31には、各エンドポイントとレスポンスコードとエラーコードとの組に対して、エラーの内容を示す情報や、対応策が対応付けて登録されている。例えば、図6は、実施形態に係るエラーコードデータベースに登録された情報の一例を示す図である。図6に示すように、エラーコードデータベース31には、「エラー種別」、「レスポンスコード」、「エラーコード」、「対応エンドポイント」、「エラー解説」、および「対応策」といった情報が対応付けて登録されている。
ここで、「エラー種別」とは、エラーがどのような種別のエラーであるかを示す情報である。例えば、決済サーバ100が処理を実行する際に生じるエラーには、エラーが決済サーバ側で発生する「Downstream error」以外にも、各種の種別のエラーが存在する。そこで、エラーコードデータベース31には、各エラーがどの種別のエラーであるかを示す情報が「エラー種別」として登録されている。
「レスポンスコード」とは、エラーの種別を示す数値であり、エラーが発生した際に、決済サーバ100から提供される数値である。なお、かかる「レスポンスコード」は、「エラー種別」と一対一で対応していてもよく、していなくともよい。また、「エラーコード」とは、エラーレスポンスに含まれる文字列であって、発生したエラーの内容を示す文字列である。また、「対応エンドポイント」とは、対応付けられた「レスポンスコード」と「エラーコード」との組が示すエラーが発生しうるエンドポイントを示す情報である。
例えば、決済サーバ100とアプリケーションとが協調して実行する処理においては、すべてのエンドポイントにおいて、すべてのエラーが発生しうるわけではなく、「レスポンスコード」と「エラーコード」との組み合わせごとに、その組み合わせと対応するエラーが発生するエンドポイントが限定される。そこで、情報提供装置10は、「レスポンスコード」と「エラーコード」との組に対し、その組が示すエラーが発生しうるエンドポイントを対応付けて記憶する。
「エラー解説」とは、対応付けられた「対応エンドポイント」が示すエンドポイントにおいて生じるエラーであって、対応付けられた「レスポンスコード」と「エラーコード」との組が示すエラーの内容を示す情報、すなわち、エラー解説情報である。また、「対応策」とは、対応付けられた「対応エンドポイント」が示すエンドポイントにおいて生じるエラーであって、対応付けられた「レスポンスコード」と「エラーコード」との組が示すエラーを解消するための対応策を示す情報である。
このように、エラーコードデータベース31には、決済サーバ100が管理する情報を制御するための処理(すなわち、エンドポイント)と、その処理において生じるエラーの種別を識別するためのエラー識別情報(すなわち、レスポンスコード)と、その処理においてエラーが生じた際に外部サーバが実行結果に含めるコードであって、その識別情報が識別する種別のエラーが生じた際に実行結果に含めるコード(すなわち、エラーコード)との組が登録されている。また、エラーコードデータベース31には、各情報の組に対し、その組と対応するエラーの内容と、そのエラーを解消するためにアプリケーションに実行させる対応策の内容を示す情報とが対応付けて登録されることとなる。
例えば、図6に示す例では、エラーコードデータベース31には、エラー種別「エラー種別#1」、レスポンスコード「400」およびエラーコード「CANCELED_USER」の組に対し、対応エンドポイント「エンドポイント#2」や「エンドポイント#3」等が対応付けて登録されている。また、レスポンスコード「400」、エラーコード「CANCELED_USER」、および対応エンドポイント「エンドポイント#2」の組に対し、エラー解説「解説#2」、および対応策「対応策#2」が対応付けて登録されており、レスポンスコード「400」、エラーコード「CANCELED_USER」、および対応エンドポイント「エンドポイント#3」の組に対し、エラー解説「解説#3」、および対応策「対応策#3」が対応付けて登録されている。
このような情報は、エラー種別「エラー種別#1」に属するエラーであって、レスポンスコード「400」およびエラーコード「CANCELED_USER」の組が示すエラーが、「エンドポイント#2」や「エンドポイント#3」等で発生しうる旨を示す。また、このような情報は、レスポンスコード「400」およびエラーコード「CANCELED_USER」の組が示すエラーが「エンドポイント#2」で発生した場合、このエラーの内容を示す情報が「解説#2」であり、このエラーを解消するための対応策が「対応策#2」である旨を示す。また、このような情報は、レスポンスコード「400」およびエラーコード「CANCELED_USER」の組が示すエラーが「エンドポイント#3」で発生した場合、このエラーの内容を示す情報が「解説#3」であり、このエラーを解消するための対応策が「対応策#3」である旨を示す。
なお、図6に示す例では、「エラー種別#1」、「エンドポイント#1」、「解説#1」、「対応策#1」といった概念的な値を記載したが、実際には、エラーの種別を示す文字列や数値、エンドポイントを示す文字列(例えば、APIエンドポイントのURI)、エラーの内容を示す各種のコンテンツや対応策を示す各種のコンテンツがエラーコードデータベース31に登録されることとなる。
なお、図6に示すエラーコードデータベース31には、決済サーバ100が実際に提供するエラーレスポンスと対応するエンドポイント、レスポンスコード、およびエラーコードの組について、エラーの内容と対応策とが対応付けて登録されているが、実施形態は、これに限定されるものではない。例えば、エラーコードデータベース31には、決済サーバ100が実際には提供しないエラーレスポンスと対応するエンドポイント、レスポンスコード、およびエラーコードの組について、そのような組において提供されるエラーレスポンスが存在する旨(例えば、True)や、エラーレスポンスが存在しない旨(例えば、False)や、対応するエラーレスポンスが発行されない旨を示す情報が対応付けて登録されていてもよい。
また、エラーコードデータベース31には、レスポンスコード、エラーコード、および対応エンドポイントの組み合わせごとに、エラー解説や対応策が登録されていてもよい。また、エラーコードデータベース31には、レスポンスコード、エラーコード、および対応エンドポイントの少なくともいずれか1つの情報に対し、その情報(もしくは情報の組)が決済サーバ100から提供された際に生じうるすべてのエラーのエラー解説や対応策が対応付けられていてもよい。
図5に戻り、説明を続ける。制御部40は、コントローラ(controller)であり、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)等のプロセッサによって、情報提供装置10内部の記憶装置に記憶されている各種プログラムがRAM等を作業領域として実行されることにより実現される。また、制御部40は、コントローラ(controller)であり、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現されてもよい。
図5に示すように、制御部40は、受付部41、特定部42、および提供部43を有する。なお、図5に示す例では、決済サーバ100のサンドボックス環境として、各種のレスポンスを提供する処理を実現するための機能構成については、図示を省略した。
受付部41は、外部サーバが管理する情報を制御することで所定の機能を提供するアプリケーションが外部サーバに対して所定の処理の実行を指示した際に、その外部サーバからアプリケーションに対して提供される所定の処理の実行結果を受け付ける。例えば、受付部41は、端末装置210が実行するアプリケーションが、決済サーバ100が管理する情報を制御することで各種のサービスを利用者Uに提供する際に、決済サーバ100からアプリケーションへと提供されるエラーレスポンスの情報を受け付ける。
より具体的には、受付部41は、開発者端末300からの要求に従って、図2に示す解析コンテンツC10を配信し、解析コンテンツC10を介して開発者Dが入力した各種の情報を受け付ける。例えば、受付部41は、エンドポイント指定ウインドウC13を介して、外部サーバが管理する情報を制御するための処理のうち、実行結果が提供された際に実行された処理の指定、すなわち、エンドポイントの指定を受け付ける。
また、受付部41は、レスポンスコード指定ウインドウC14を介して、実行結果とともに外部サーバから提供される情報であって、処理の実行時に発生したエラーの種別を識別する識別情報、すなわち、レスポンスコードの指定を受け付ける。また、受付部41は、エラーレスポンス入力ウインドウC15を介して、所定の処理の実行結果、すなわり、エラーレスポンスの文章の指定を受け付ける。このように、受付部41は、所定の処理の実行結果と、所定の処理の指定と、その所定の処理の実行時に発生したエラーの種別を識別する識別情報とを受け付ける。
なお、受付部41は、エラーレスポンスの生データをそのまま受け付けてもよい。例えば、受付部41は、図2に示した解析コンテンツC10において、原文解析アイコンC12が選択された場合、エラーレスポンスの生データのみを受け付けることとなる。
特定部42は、実行結果の内容に基づいて、所定の処理の実行において生じたエラーの内容を特定する。例えば、特定部42は、受付部41が受け付けたエンドポイントと、レスポンスコードと、エラーレスポンスの文章とをそれぞれ取得する。このような場合、特定部42は、エラーレスポンスの文章から、エラーコードを抽出する。そして、特定部42は、エンドポイントと、レスポンスコードと、エラーコードとの組に対応付けられたエラー解説と対応案とをエラーコードデータベース31から特定する。すなわち、特定部42は、外部サーバが管理する情報を制御するための処理(エンドポイント)と、その処理において生じるエラーの種別を識別するためのエラー識別情報(エラーコード)と、その処理においてエラーが生じた際に外部サーバが実行結果に含めるコードであって、そのエラー識別情報が識別する種別のエラーが生じた際に実行結果に含めるコード(レスポンスコード)との組に対し、そのエラーの内容と、そのエラーを解消するためにアプリケーションに実行させる対応策の内容を示す対応情報とを対応付けたテーブル(すなわち、エラーコードデータベース31)を参照する。そして、特定部42は、受け付けられたエンドポイントと、レスポンスコードと、エラーコードとの組に対応するエラーの内容と対応情報とを特定する。
なお、特定部42は、レスポンスコード、もしくは、エンドポイントが受け付けられなかった場合は、以下の処理を実行してもよい。例えば、特定部42は、レスポンスコードが受け付けられなかった場合、エラーレスポンスから特定したエラーコードとエンドポイントとの組に対応付けられたすべてのエラー解説および対応案を特定する。また、例えば、特定部42は、エンドポイントが受け付けられなかった場合、エラーレスポンスから特定したエラーコードとレスポンスコードとの組に対応付けられたすべてのエラー解説および対応案を特定する。
また、特定部42は、特定部42は、開発者Dが原文解析アイコンC12を選択し、エラーレスポンスの生データを入力した場合、エラーレスポンスからエラーコードを特定し、特定したエラーコードと対応するすべてのエラー解説および対応案を特定してもよい。例えば、エラーコードが「CANCELED_USER」である場合、かかるエラーコードと対応付けられたエラー解説「解説#2」および対応案「対応案#2」の組、およびエラー解説「解説#3」および対応案「対応案#3」の組を特定してもよい。
また、特定部42は、例えば、エラーレスポンスから、レスポンスコードもしくはエンドポイントの少なくともいずれか一方をさらに推定してもよい。例えば、特定部42は、エラーレスポンスからエラーコードを特定するとともに、レスポンスコードが推定できた場合、推定したレスポンスコードとエラーコードとの組に対応付けられたエラー解説や対応案を特定する。また、例えば、特定部42は、エラーレスポンスからエラーコードを特定するとともに、エンドポイントが推定できた場合、推定したエンドポイントとエラーコードとの組に対応付けられたエラー解説や対応案を特定する。また、特定部42は、エラーレスポンスから、レスポンスコードおよびエンドポイントを推定できた場合、エラーコードと、推定されたレスポンスコードと、推定されたエンドポイントとの組に対応付けられたエラー解説および対応案を特定する。
なお、このような推定は、例えば、エラーレスポンスに含まれる文字列と、その文字列が含まれるレスポンスが提供されるエンドポイントや、その文字列が含まれるエラーレスポンスとともに提供されるエラーコードとを対応付けたテーブルを準備することにより、実現可能となる。
提供部43は、特定部により特定されたエラーの内容を示す情報を提供する。また、提供部43は、特定されたエラーを解消するために行われるアプリケーションに実行させる対応策を示す対応情報を提供する。例えば、提供部43は、特定部42が特定したエラー解説および対応案を解析コンテンツC10内に配置して表示する。なお、提供部43は、エンドポイントやレスポンスコードが指定されなかった場合、各エラー解説や対応案がどのエンドポイントやレスポンスコードに対応するものであるかを示す情報をさらに表示してもよい。
なお、上述した処理は、開発者Dが入力したエンドポイントと、レスポンスコードと、エラーレスポンスに含まれるエラーコードとの対応が正しい(True)場合の処理となる。例えば、決済サーバ100は、あるエンドポイントにおいてエラーが生じた場合、そのエラーに対応するレスポンスコードとエラーコードとを提供することとなる。しかしながら、エラーの内容を考慮すると、エンドポイントごとに、発生しうるエラーと発生しないエラーが存在する。このため、開発者Dが入力したエンドポイントと、レスポンスコードと、エラーレスポンスに含まれるエラーコードとのいずれかに誤りが含まれる場合、エンドポイントとレスポンスコードとエラーコードとの対応が正しくない(False)場合がある。
そこで、提供部43は、エンドポイントと、レスポンスコードと、エラーコードとの対応が正しくない場合は、入力に誤りがある旨の情報を提供してもよい。例えば、提供部43は、エンドポイントと、レスポンスコードと、エラーレスポンスとが受け付けられたが、特定部42により、受け付けられたエンドポイントと、レスポンスコードと、エラーコードとの組に対応付けられたエラー解説や対応案が登録されていない場合、エンドポイント、レスポンスコード、もしくはエラーレスポンスのいずれかに誤りが含まれる旨の情報を解析コンテンツC10上に配置して表示してもよい。
〔3.情報提供装置が実行する処理の流れの一例〕
続いて、図7を用いて、情報提供装置10が実行する処理の流れについて説明する。図7は、実施形態に係る情報提供装置が実行する処理の流れの一例を示すフローチャートである。
例えば、情報提供装置10は、解析コンテンツC10を配信し(ステップS101)、エラーレスポンスとともに、エンドポイントとレスポンスコードとが提供されたか否かを判定する(ステップS102)。そして、情報提供装置10は、エラーレスポンスとともに、エンドポイントとレスポンスコードとが提供された場合は(ステップS102:Yes)、エンドポイントとレスポンスコードとエラーコードとの組み合わせと対応するエラー解説および対応策を提供し(ステップS103)、処理を終了する。一方、情報提供装置10は、エンドポイントとレスポンスコードとが提供されなかった場合は(ステップS102:No)、エラーコードと対応付けられたすべてのエラー解説および対応策を提供し(ステップS104)、処理を終了する。
〔4.変形例〕
上記では、情報提供装置10による処理の一例について説明した。しかしながら、実施形態は、これに限定されるものではない。以下、情報提供装置10が実行する処理のバリエーションについて説明する。
〔4-1.情報提供処理のバリエーションについて〕
上述した解析コンテンツC10は、あくまで一例であり、任意の内容および任意のレイアウトを有する解析コンテンツC10が提供されてよい。なお、上述した解析コンテンツC10は、例えば、ウェブページ内におけるコンテンツとして提供されてもよい。例えば、情報提供装置10は、解析コンテンツC10として動作するウェブコンテンツを開発者端末300に送信してもよい。
また、情報提供装置10は、テーブルを用いたルールベースの処理ではなく、各種解析結果に応じて、エラーの内容や対応策を提供してもよい。また、情報提供装置10は、エラーの対応策として、決済サーバ100が提供するサービスの開発者に対して連絡を行うための情報(例えば、メールアドレス等)を含めてもよく、例えば、対応するエンドポイントのAPIが受け付ける情報を解説するウェブコンテンツへのリンクを設定してもよい。
また、上述する処理は、すべて開発者端末300がスタンドアローンで実行してもよい。このような場合、開発者端末300は、図4に示すエラーコードデータベース31とともに、各部41~43として開発者端末300を動作させるプログラムを実行することにより、上述した情報提供処理を実現することができる。
〔4-2.その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、逆に、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
また、上記してきた各実施形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
〔4-3.プログラム〕
また、上述した実施形態に係る情報提供装置10は、例えば図8に示すような構成のコンピュータ1000によって実現される。図8は、ハードウェア構成の一例を示す図である。コンピュータ1000は、出力装置1010、入力装置1020と接続され、演算装置1030、一次記憶装置1040、二次記憶装置1050、出力IF(Interface)1060、入力IF1070、ネットワークIF1080がバス1090により接続された形態を有する。
演算装置1030は、一次記憶装置1040や二次記憶装置1050に格納されたプログラムや入力装置1020から読み出したプログラム等に基づいて動作し、各種の処理を実行する。一次記憶装置1040は、RAM等、演算装置1030が各種の演算に用いるデータを一次的に記憶するメモリ装置である。また、二次記憶装置1050は、演算装置1030が各種の演算に用いるデータや、各種のデータベースが登録される記憶装置であり、ROM(Read Only Memory)、HDD(Hard Disk Drive)、フラッシュメモリ等により実現される。
出力IF1060は、モニタやプリンタといった各種の情報を出力する出力装置1010に対し、出力対象となる情報を送信するためのインタフェースであり、例えば、USB(Universal Serial Bus)やDVI(Digital Visual Interface)、HDMI(登録商標)(High Definition Multimedia Interface)といった規格のコネクタにより実現される。また、入力IF1070は、マウス、キーボード、およびスキャナ等といった各種の入力装置1020から情報を受信するためのインタフェースであり、例えば、USB等により実現される。
なお、入力装置1020は、例えば、CD(Compact Disc)、DVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等から情報を読み出す装置であってもよい。また、入力装置1020は、USBメモリ等の外付け記憶媒体であってもよい。
ネットワークIF1080は、ネットワークNを介して他の機器からデータを受信して演算装置1030へ送り、また、ネットワークNを介して演算装置1030が生成したデータを他の機器へ送信する。
演算装置1030は、出力IF1060や入力IF1070を介して、出力装置1010や入力装置1020の制御を行う。例えば、演算装置1030は、入力装置1020や二次記憶装置1050からプログラムを一次記憶装置1040上にロードし、ロードしたプログラムを実行する。
例えば、コンピュータ1000が情報提供装置10として機能する場合、コンピュータ1000の演算装置1030は、一次記憶装置1040上にロードされたプログラムを実行することにより、制御部40の機能を実現する。
〔5.効果〕
上述したように、情報提供装置10は、外部サーバが管理する情報を制御することで所定の機能を提供するアプリケーションが外部サーバに対して所定の処理の実行を指示した際に、その外部サーバからアプリケーションに対して提供される所定の処理の実行結果を受け付ける。例えば、情報提供装置10は、決済サーバ100からアプリケーションに提供されるエラーレスポンスを受け付ける。そして、情報提供装置10は、実行結果の内容に基づいて、所定の処理の実行において生じたエラーの内容を特定し、特定されたエラーの内容を示す情報を提供する。このような処理の結果、情報提供装置10は、エラーが生じた際に、開発者Dが、決済サービス等の各種サービスにおいてエラーが発生した際にどのようなエラーが発生したかを調べる手間を削減することができるので、アプリケーションの開発を促進することができる。
また、情報提供装置10は、特定されたエラーを解消するために行われる対応策を示す対応情報を提供する。この結果、情報提供装置10、どのような対応策でエラーを解消できるのかを調べる手間を削減することができるので、アプリケーションの開発を促進させることができる。
また、情報提供装置10は、外部サーバが管理する情報を制御するための処理のうち、実行結果が提供された際に実行された処理の指定をさらに受け付け、実行結果の内容と、指定された処理との組み合わせに応じて、エラーの内容を特定する。このため、情報提供装置10は、例えば、エンドポイントごとにエラーの内容が異なる場合であっても、適切に発生したエラーの内容や解決策を提供することができるので、アプリケーションの開発を促進するために提供する情報の精度を向上させることができる。
また、情報提供装置10は、処理の指定が受け付けられなかった場合は、実行結果の内容と、外部サーバが管理する情報を制御するための処理とのすべての組み合わせについて、対応するエラーの内容を特定する。このため、情報提供装置10は、エンドポイントが不明であっても、適切にエラーの内容や解決策を提供することができるので、アプリケーションの開発を促進するために提供する情報の精度を向上させることができる。
また、情報提供装置10は、実行結果とともに外部サーバから提供される情報であって、処理の実行時に発生したエラーの種別を識別するエラー識別情報をさらに受け付け、実行結果の内容と、エラー識別情報との組み合わせに応じて、エラーの内容を特定する。このため、情報提供装置10は、例えば、レスポンスコードとエラーコードとの組み合わせに応じて、エラーの内容や解決策を提供することができるので、アプリケーションの開発を促進するために提供する情報の精度を向上させることができる。
また、情報提供装置10は、エラー識別情報が受け付けられなかった場合は、実行結果の内容と、外部サーバが提供するエラー識別情報とのすべての組み合わせについて、対応するエラーの内容を特定する。このため、情報提供装置10は、レスポンスコードが不明であっても、エラーの内容や解決策を提供することができるので、アプリケーションの開発を促進するために提供する情報の精度を向上させることができる。
また、情報提供装置10は、処理の実行時にエラーが生じた際に外部サーバが提供する情報に対し、そのエラーの内容と、エラーを解消するためにアプリケーションに実行させる対応策の内容を示す対応情報とを対応付けたテーブル、すなわちエラーコードデータベース31を参照し、所定の処理の実行結果に対応するエラーの内容と対応情報とを特定する。例えば、情報提供装置10は、所定の処理の実行結果、すなわちエラーレスポンスを受け付ける。そして、情報提供装置10は、テーブルとして、処理においてエラーが生じた際に外部サーバが実行結果に含めるコード、すなわち、エラーコードに対してエラーの内容と、対応策の内容を示す対応情報とを対応付けたテーブルを参照し、受付られたエラーレスポンスに含まれるエラーコードに対応するエラーの内容と対応情報とを特定する。
また、情報提供装置10は、所定の処理の指定、すなわち、エンドポイントの指定を受け付ける。そして、情報提供装置10は、テーブルとして、各エンドポイントに対して、処理の実行時に生じるエラーの内容と、エラーを解消するためにアプリケーションに実行させる対応策の内容を示す対応情報とを対応付けたテーブルを参照し、指定されたエンドポイントに対応するエラーの内容と対応情報とを特定する。また、情報提供装置10は、所定の処理の実行時に発生したエラーの種別を識別するエラー識別情報、すなわち、レスポンスコードを受け付ける。そして、情報提供装置10は、テーブルとして、各レスポンスコードに対し、エラーの内容と、エラーを解消するためにアプリケーションに実行させる対応策の内容を示す対応情報とを対応付けたテーブルを参照し、受け付けられたレスポンスコードに対応するエラーの内容と対応情報とを特定する。
また、エラーコードデータベース31は、上述した情報提供装置10に用いられるデータ構造を有する。例えば、エラーコードデータベース31は、外部サーバが管理する情報を制御することで所定の機能を提供するアプリケーションが外部サーバに対して実行を指示した際に外部サーバがアプリケーションに提供する情報であって、当該処理の実行時にエラーが生じた際に提供される情報に対し、エラーの内容と、エラーを解消するためにアプリケーションに実行させる対応策の内容を示す対応情報とを対応付けたデータ構造である。また、このようなエラーコードデータベース31は、情報提供装置10が、外部サーバに対して所定の処理の実行を指示した際に、外部サーバから提供された情報を受け付け、受け付けた情報と対応付けられたエラーの内容と、対応情報とを特定し、特定したエラーの内容と対応情報とを提供する処理に用いられるデータ構造を有する。このため、エラーコードデータベース31には、情報提供装置10が、エラーレスポンスからエラーの内容や対応策を示すという使用目的に応じた特有の情報の演算又は加工を実現するための情報が登録されていることとなり、情報提供装置10の動作方法を構築するものであるため、アプリケーションの開発を促進することができるという効果を情報提供装置10に発揮させることができる。
また、情報提供装置10は、所定の処理の実行結果と、所定の処理の指定と、その所定の処理の実行時に発生したエラーの種別を識別するエラー識別情報とを受け付ける。そして、情報提供装置10は、外部サーバが管理する情報を制御するための処理と、その処理において生じるエラーの種別を識別するためのエラー識別情報と、その処理においてエラーが生じた際に外部サーバが実行結果に含めるコードであって、そのエラー識別情報が識別する種別のエラーが生じた際に実行結果に含めるコードとの組に対し、そのエラーの内容と、そのエラーを解消するためにアプリケーションに実行させる対応策の内容を示す対応情報とを対応付けたテーブル(すなわち、エラーコードデータベース31)を参照し、所定の処理の実行結果と、所定の処理の指定と、その所定の処理の実行時に発生したエラーの種別を識別するエラー識別情報との組に対応するエラーの内容と対応情報とを特定する。上述した処理の結果、情報提供装置10は、レスポンスコードと、エンドポイントと、エラーレスポンスに含まれるエラーコードとのそれぞれ、もしくはこれらの情報の組み合わせに応じて、エラーの内容や解決策を提供することができる。
また、情報提供装置10は、外部サーバが管理する口座間における送金の送受信を実現するためのアプリケーションが外部サーバに対して所定の処理の実行を指示した際に、その外部サーバからアプリケーションに対して提供される所定の処理の実行結果を受け付ける。例えば、情報提供装置10は、支払元が利用する端末装置で実行されるアプリケーションであって、支払先を示す支払先識別情報を撮影すると、支払元の口座から撮影された支払先識別情報が示す支払先の口座へと端末装置を介して入力された額の送金を行うよう外部サーバが管理する情報を制御するアプリケーションが提供する機能の指定を受け付ける。また、例えば、情報提供装置10は、支払元の口座から支払先の口座へと入力された額の送金を行うよう外部サーバが管理する情報を制御する支払先が利用する端末装置が読み取り可能な識別情報であって、支払元を識別する支払元識別情報を表示するアプリケーションが提供する機能の指定を受け付ける。このような処理の結果、情報提供装置10は、決済サーバ100が管理する各口座間の送金等を制御するアプリケーションが、決済サーバ100に対して各種のパラメータを提供した際に、決済サーバ100から提供されるエラーレスポンスから、エラーの内容や解決策を特定し、開発者Dに提供することができる。このため、情報提供装置10は、決済サービスに用いられるアプリケーションの開発を促進することができる。
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の欄に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
また、上記してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、付与部は、特定手段や特定回路に読み替えることができる。