(57)【要約】      （修正有）【課題】メッセージキューシステムの処理性能を向上させる。【解決手段】メッセージ処理装置は、メッセージと、ユーザを認証するための認証情報と、記憶エリアを識別するための識別情報とを含むメッセージの送信指示を情報処理装置から受信すると、識別情報で識別される記憶エリアにメッセージを記録させる指示を出力するとともに、認証情報を用いて認証を依頼し、依頼に対する応答結果に基づいて、ユーザが記憶エリアにメッセージを記憶する権限を有する場合、記憶エリアに記憶されたメッセージに関連付けて、記憶エリアに認証済みを示す情報を記憶させる第２の指示を出力する、ことを含む。【選択図】図７
2018005744.tif 000002
【特許請求の範囲】
【請求項１】
メッセージと、ユーザを認証するための認証情報と、記憶エリアを識別するための識別情報とを含む前記メッセージの送信指示を情報処理装置から受信すると、前記識別情報で識別される前記記憶エリアに前記メッセージを記録させる指示を出力するとともに、前記認証情報を用いて認証を依頼し、
前記依頼に対する応答結果に基づいて、前記ユーザが前記記憶エリアに前記メッセージを記憶する権限を有する場合、前記記憶エリアに記憶された前記メッセージに関連付けて、前記記憶エリアに認証済みを示す情報を記憶させる第２の指示を出力する、
ことを含む、コンピュータが実行するメッセージ処理方法。
【請求項２】
前記認証の結果が得られる前に、前記情報処理装置に前記送信指示に対する応答を通知することを更に含む、請求項１に記載のメッセージ処理方法。
【請求項３】
前記認証情報を用いて行われた前記認証に失敗した場合、前記認証情報を記憶装置に記憶し、
前記メッセージの前記送信指示を受信すると、前記送信指示に含まれる前記認証情報が前記記憶装置に記憶されているか否かを判定し、
前記認証情報が前記記憶装置に記憶されている場合、前記送信指示に対する応答で認証に失敗したことを示す情報を前記情報処理装置に通知する、
ことを含む、請求項１又は２に記載のメッセージ処理方法。
【請求項４】
ユーザを認証するための認証情報と、記憶エリアを識別するための識別情報と、を含むメッセージの受信指示を情報処理装置から受信すると、前記認証情報を用いて行われた認証の結果に基づいて、前記ユーザが前記記憶エリアに記憶されたメッセージを取得する権限を有するか否かの判定を行い、
前記権限を有する場合、前記メッセージを取得するための要求を出力して、前記記憶エリアに記憶されているメッセージのうちで、認証済みを示す情報が関連付けられているメッセージを取得する、
ことを含む、コンピュータが実行するメッセージ処理方法。
【請求項５】
前記受信指示を前記情報処理装置から受信すると、前記権限を有するか否かの判定を行う前に、前記記憶エリアに記憶されているメッセージのうちから、前記認証済みを示す情報が関連付けられているメッセージを特定することを更に含む、請求項４に記載のコンピュータが実行するメッセージ処理方法。
【請求項６】
前記認証情報を用いて行われた前記認証に失敗した場合、前記認証情報を記憶装置に記憶し、
前記メッセージの前記受信指示を受信すると、前記受信指示に含まれる前記認証情報が前記記憶装置に記憶されているか否かを判定し、
前記認証情報が前記記憶装置に記憶されている場合、前記受信指示に対する応答で認証に失敗したことを示す情報を前記情報処理装置に通知することを含む、請求項４又は５に記載のメッセージ処理方法。
【請求項７】
メッセージと、ユーザを認証するための認証情報と、記憶エリアを識別するための識別情報とを含む前記メッセージの送信指示を情報処理装置から受信すると、前記識別情報で識別される前記記憶エリアに前記メッセージを記録させる指示を出力するとともに、前記認証情報を用いて認証を依頼し、
前記依頼に対する応答結果に基づいて、前記ユーザが前記記憶エリアに前記メッセージを記憶する権限を有する場合、前記記憶エリアに記憶された前記メッセージに関連付けて、前記記憶エリアに認証済みを示す情報を記憶させる第２の指示を出力する、
処理を、コンピュータに実行させるメッセージ処理プログラム。
【請求項８】
ユーザを認証するための認証情報と、記憶エリアを識別するための識別情報と、を含むメッセージの受信指示を情報処理装置から受信すると、前記認証情報を用いて行われた認証の結果に基づいて、前記ユーザが前記記憶エリアに記憶されたメッセージを取得する権限を有するか否かの判定を行い、
前記権限を有する場合、前記メッセージを取得するための要求を出力して、前記記憶エリアに記憶されているメッセージのうちで、認証済みを示す情報が関連付けられているメッセージを取得する、
処理を、コンピュータに実行させるメッセージ処理プログラム。
【請求項９】
メッセージと、ユーザを認証するための認証情報と、記憶エリアを識別するための識別情報とを含む前記メッセージの送信指示を情報処理装置から受信すると、前記識別情報で識別される前記記憶エリアに前記メッセージを記録させる指示を出力するとともに、前記認証情報を用いて認証を依頼する依頼部と、
前記依頼に対する応答結果に基づいて、前記ユーザが前記記憶エリアに前記メッセージを記憶する権限を有する場合、前記記憶エリアに記憶された前記メッセージに関連付けて、前記記憶エリアに認証済みを示す情報を記憶させる第２の指示を出力する出力部と、
を含む、メッセージ処理装置。
【請求項１０】
ユーザを認証するための認証情報と、記憶エリアを識別するための識別情報と、を含むメッセージの受信指示を情報処理装置から受信すると、前記認証情報を用いて行われた認証の結果に基づいて、前記ユーザが前記記憶エリアに記憶されたメッセージを取得する権限を有するか否かの判定を行う判定部と、
前記権限を有する場合、前記メッセージを取得するための要求を出力して、前記記憶エリアに記憶されているメッセージのうちで、認証済みを示す情報が関連付けられているメッセージを取得する取得部と、
を含む、メッセージ処理装置。
【請求項１１】
メッセージと、記憶エリアの識別情報と、該記憶エリアに該メッセージを記憶させる指示と、を情報処理装置から受信すると、記憶エリアを該記憶エリアの識別情報に対応付けて記憶する記憶部を参照して、受信した前記識別情報に対応付けられた記憶エリアを特定して、特定した前記記憶エリアに、受信した前記メッセージを記憶させると共に、前記情報処理装置が、特定した前記記憶エリアにメッセージを記憶させる権限を有するか否かの判定を行う制御部と、
前記権限を有する場合、特定した前記記憶エリアに記憶された前記メッセージに、前記権限を有することを示す情報を対応付けて記憶する記憶制御部と、
を備えることを特徴とするメッセージ処理装置。
【請求項１２】
記憶エリアの識別情報と、該記憶エリアに記憶されたメッセージを取得する指示と、を情報処理装置から受信すると、記憶エリアを該記憶エリアの識別情報に対応付けて記憶する記憶部を参照して、受信した前記識別情報に対応付けられた記憶エリアを特定すると共に、前記情報処理装置が、特定した前記記憶エリアに記憶されたメッセージを取得する権限を有するか否かの判定を行う制御部と、
前記権限を有する場合、特定した前記記憶エリアに記憶された前記メッセージを取得する取得部と、
を備えることを特徴とするメッセージ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メッセージ処理装置、メッセージ処理方法、及びメッセージ処理プログラムに関する。
【背景技術】
【０００２】
昨今、インターネット上で仮想マシンやミドルウェアを提供するクラウドサービスが利用され、ユーザは独自にサーバを用意しなくとも、手軽にサービスを受けることが可能となっている。クラウド上では、お互いに関係のない複数のユーザのデータが取り扱われるため、ユーザのデータの秘匿性を確保することが重要である。そのため、例えば、ユーザの要求に対して認証を行うことで秘匿性を確保することが行われている。
【０００３】
また、この様なクラウド上で動作するシステムの１つに、例えば、メッセージキューを提供するマルチテナント型のメッセージキューシステムがある。ユーザはクラウド上のメッセージキューに対して、キューの操作のためのＡＰＩを実行することで、メッセージキューシステムを利用することができる。なお、キューの操作のためのＡＰＩは、例えば、キューの作成、キューの削除、メッセージの送信、及びメッセージの受信などを含んでよい。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−１７０７６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
例えば、メッセージキューシステムが異なるサーバ間での情報のやり取りに利用される場合など、メッセージキューシステムに非常に高い処理性能（例えば、数ミリ秒〜数十ミリ秒での処理）が望まれることがある。しかしながら、メッセージキューシステムにおいて、例えば、認証処理がボトルネックとなり、十分に処理性能を高められないことがある。
【０００６】
１つの側面では、本発明は、メッセージキューの処理性能を向上させることを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一つの態様のコンピュータが実行するメッセージ処理方法は、メッセージと、ユーザを認証するための認証情報と、記憶エリアを識別するための識別情報とを含むメッセージの送信指示を情報処理装置から受信すると、識別情報で識別される記憶エリアにメッセージを記録させる指示を出力するとともに、認証情報を用いて認証を依頼し、依頼に対する応答結果に基づいて、ユーザが記憶エリアにメッセージを記憶する権限を有する場合、記憶エリアに記憶されたメッセージに関連付けて、記憶エリアに認証済みを示す情報を記憶させる第２の指示を出力する、ことを含む。
【発明の効果】
【０００８】
メッセージキューシステムの処理性能を向上させることができる。
【図面の簡単な説明】
【０００９】
【図１】例示的なメッセージキューシステムの構成を例示する図である。
【図２】メッセージ送信における認証処理及びキュー操作処理の実行タイミングの例を示す図である。
【図３】いくつかの実施形態に係るメッセージ処理装置の機能ブロック構成を例示する図である。
【図４】実施形態に係るメッセージ送信時のキュー操作を例示する図である。
【図５】実施形態に係るメッセージ送信処理における認証処理を説明する図である。
【図６】メッセージ受信における認証処理及びキュー操作処理の実行タイミングの例を示す図である。
【図７】実施形態に係るメッセージ受信時のキュー操作を例示する図である。
【図８】受信時のキュー操作を更に説明する図である。
【図９】実施形態に係るメッセージ受信処理における認証処理を説明する図である。
【図１０】認証失敗時の処理を例示する図である。
【図１１】実施形態に係るメッセージキューを例示する図である。
【図１２】実施形態に係るキャッシュを例示する図である。
【図１３】実施形態に係るメッセージ送信処理の動作フローを例示する図である。
【図１４】実施形態における送信時のキュー操作処理を例示する図である。
【図１５】実施形態に係るメッセージ受信処理の動作フローを例示する図である。
【図１６】実施形態における受信時のキュー操作処理を例示する図である。
【図１７】第２の実施形態に係るメッセージキューシステムの構成を例示する図である。
【図１８】第２の実施形態に係るメッセージ処理装置の機能ブロック構成を例示する図である。
【図１９】第２の実施形態に係るメッセージ送信処理の動作フローを例示する図である。
【図２０】第２の実施形態における送信時のキュー操作処理を例示する図である。
【図２１】第２の実施形態に係るメッセージ受信処理の動作フローを例示する図である。
【図２２】第２の実施形態における受信時のキュー操作処理を例示する図である。
【図２３】記憶エリア情報を例示する図である。
【図２４】実施形態に係るメッセージ処理装置を実現するためのハードウェア構成を例示する図である。
【発明を実施するための形態】
【００１０】
以下、図面を参照しながら、本発明のいくつかの実施形態について詳細に説明する。なお、複数の図面において対応する要素には同一の符号を付す。
【００１１】
図１は、例示的なメッセージキューシステム１００の構成を例示する図である。メッセージキューシステム１００は、例えば、メッセージ処理装置１０１、情報処理装置１０２、認証サーバ１０３、及びデータサーバ１０４を含む。メッセージ処理装置１０１は、情報処理装置１０２、認証サーバ１０３、及びデータサーバ１０４と、通信可能に接続されてよい。メッセージ処理装置１０１は、例えば、接続した複数の情報処理装置１０２からメッセージキューの操作指示を受け付ける。例えば、情報処理装置１０２は、メッセージ処理装置１０１においてメッセージキューの操作に関するＡＰＩ（Application Programming Interface）をＨＴＴＰプロトコルで呼び出すことで、メッセージ処理装置１０１にメッセージキューの操作指示を出力する。なお、メッセージキューは、例えば、ユーザが送受信するメッセージを格納するために用いる記憶エリアの一例である。また、以下では、メッセージキューを単にキューと呼ぶことがある。
【００１２】
メッセージ処理装置１０１は、例えば、メッセージキューの操作指示の入力を受け付けると、情報処理装置１０２を用いて操作指示を入力してきたユーザの認証を認証サーバ１０３に依頼し、ユーザを認証する。また、メッセージ処理装置１０１は、例えば、メッセージキューの操作指示に従って、操作指示を通知してきたユーザのメッセージキューをデータサーバ１０４において操作する。なお、メッセージキューシステム１００は、複数のデータサーバ１０４を含んでいてよく、その場合、そのうちの１台が管理サーバとして動作してよい。そして、メッセージ処理装置１０１は、まず、管理サーバに、どこのデータサーバに操作対象のメッセージキューが登録されているのかを問い合わせて教えてもらってよい。次に、メッセージ処理装置１０１は、その操作対象のデータサーバ１０４にメッセージキューの操作を依頼してメッセージキューを操作してよい。それにより、メッセージキューシステム１００において、複数の情報処理装置１０２は、例えば、メッセージ処理装置１０１を介してメッセージをやり取りすることができる。
【００１３】
そして、この様にメッセージキューシステム１００が、例えば、異なる情報処理装置１０２間でのメッセージのやり取りに利用される場合、メッセージキューシステム１００には非常に速い処理速度（例えば、数ミリ秒〜数十ミリ秒での処理）が望まれることがある。しかしながら、一方で、お互いに関係のない複数のユーザのデータがメッセージキューシステム１００で取り扱われるため、ユーザのデータの秘匿性を確保することも重要である。そのため、認証処理が行われることがあるが、例えば、メッセージキューシステム１００において、認証処理の完了を待ってからメッセージキューを処理した場合、認証処理がボトルネックとなり、十分に処理速度を高められないことがある。
【００１４】
図２は、メッセージ送信における認証処理及びキュー操作処理の実行タイミングを例示する図である。図２（ａ）は、例示的な認証処理及びキュー操作処理の実行タイミングを示しており、メッセージ処理装置１０１はＡＰＩを受け付けると、認証処理を動作させて、認証が成功した場合、ＡＰＩに応じたキューの操作を行って、ＡＰＩを返却している。そのため、まず認証処理を完了して、次にキューの操作が完了するまで、ＡＰＩが返却されず、時間がかかっている。そこで、以下で述べる実施形態では、メッセージ処理装置１０１は、認証の完了を待たずに、認証処理と並列して、ＡＰＩに応じたキューの操作を行う。例えば、図２（ｂ）は、メッセージ送信における実施形態に係る認証処理及びキュー操作処理の実行タイミングを例示する図である。図２（ｂ）では、メッセージ処理装置１０１は、認証の完了を待たずに、認証処理と並列して、ＡＰＩに応じたキューの操作を開始している。また、メッセージ処理装置１０１は、認証の完了を待たずにＡＰＩを返却している。そのため、ＡＰＩの処理時間を短縮することができ、メッセージキューシステムの処理性能を向上させることができる。以下、実施形態を更に詳細に説明する。
【００１５】
＜実施形態＞
図３は、いくつかの実施形態に係るメッセージ処理装置１０１の機能ブロック構成を例示する図である。メッセージ処理装置１０１は、例えば、制御部３０１、記憶部３０２、及び通信部３０３を含んでいる。制御部３０１は、例えば、操作部３１１、及び認証部３１２などとして動作する。また、操作部３１１は、例えば、依頼部３２１、出力部３２２、判定部３２３、及び取得部３２４を含む。メッセージ処理装置１０１の記憶部３０２は、例えば、後述するキャッシュ１２００などの情報を記憶している。通信部３０３は、例えば、制御部３０１の指示に従って、情報処理装置１０２、認証サーバ１０３、及びデータサーバ１０４と通信する。これらの各部の詳細及び記憶部３０２に格納されている情報の詳細については後述する。
【００１６】
続いて、メッセージ処理装置１０１が実行するメッセージの送信処理及び受信処理を説明する。なお、例えば、送信処理は、情報処理装置１０２から受信したメッセージをメッセージキューに格納する処理であり、受信処理は、メッセージキューから取得したメッセージを情報処理装置１０２に提供する処理である。以下では、まずメッセージの送信処理について説明する。
【００１７】
＜メッセージ送信＞
［メッセージ送信時のキュー操作］
図４は、実施形態に係るメッセージ送信時のキュー操作を例示する図である。例えば、メッセージキューへのメッセージの送信を指示する送信指示であるメッセージ送信ＡＰＩを、ユーザが情報処理装置１０２を用いてＨＴＴＰプロトコルで呼び出したとする。すると、呼び出されたＡＰＩはメッセージ処理装置１０１の操作部３１１で受け付けられる（図４の（１））。なお、メッセージ送信ＡＰＩには、ユーザの認証に用いるためのユーザ固有の認証トークンが含まれていてよい。認証トークンは、例えば、ユーザの認証に用いるための認証情報の一例である。認証トークンは、例えば、認証対象のユーザを示す鍵であってよい。そして、メッセージ処理装置１０１の操作部３１１は、受け付けたＡＰＩが、どのようなＡＰＩであり、どのキューに対して発行されたか解釈する（図４の（２））。ここでは、操作部３１１は、メッセージ送信ＡＰＩであると判定したものとする。
【００１８】
続いて、操作部３１１は、メッセージを送信してきた情報処理装置１０２のユーザの認証を要求するメッセージ送信用の認証要求を認証部３１２に通知する（図４の（３））。この時、操作部３１１は、認証トークン、メッセージに紐付く固有の情報であるユニークＩＤ（Identifier）、メッセージの格納先のメッセージキューを識別するための識別情報を認証部３１２に渡す。また、操作部３１１は、認証の結果を待たずに、実行されたメッセージ送信ＡＰＩの正当性を検証する（図４の（４））。例えば、操作部３１１は、ＡＰＩに設定されたパラメータが正しいか、及びＡＰＩで伝送されるデータの形式が誤っていないかなどを検証する。
【００１９】
続いて、操作部３１１は、メッセージ送信ＡＰＩの操作対象となるメッセージキューが、どのデータサーバ１０４のどの領域に存在するかを確認する（図４の（５））。例えば、操作部３１１は、複数のデータサーバ１０４を管理する管理サーバに、操作対象となるメッセージキューを、どのデータサーバ１０４が保持しているか、及びそのデータサーバ１０４のどの領域にメッセージキューが存在するかを問い合わせる。それにより、操作部３１１は、操作対象のメッセージキューの所在を確認する。そして、操作部３１１は、特定されたメッセージキューにメッセージを格納するようにデータサーバ１０４に指示する（図４の（６））。操作部３１１は、メッセージ送信ＡＰＩの実行が完了したことを示す実行結果をユーザの情報処理装置１０２に返却する（図４の（７））。このように、操作部３１１は、認証結果を待たずに、メッセージをメッセージキューに格納し、また、ＡＰＩ実行の実行結果を返却するため、メッセージキューシステム１００のメッセージ送信にかかる処理時間を短縮することができる。
【００２０】
［メッセージ送信における認証処理］
続いて、メッセージ送信における認証処理を説明する。図５は、実施形態に係るメッセージ送信における認証処理を説明する図である。認証処理は、例えば、図４の（３）において、認証部３１２が、操作部３１１からメッセージ送信用の認証要求を受信すると開始してよい。
【００２１】
認証部３１２は、操作部３１１からメッセージ送信用の認証要求を受け付けると（図５の（１））、操作部３１１から受け取った認証トークンが記憶部３０２のキャッシュに格納されているか確認する（図５の（２））。キャッシュには、後述するように、過去に不正と判定された認証トークンが格納されていてよい。例えば、認証対象の認証トークンがキャッシュに格納されている場合、認証部３１２は、操作部３１１に認証拒否の返答を即時行い、認証要求をキャンセルする。一方、認証対象の認証トークンがキャッシュに格納されていなかった場合は、認証部３１２は、認証サーバ１０３に認証の依頼を行い、認証を継続する（図５（３））。
【００２２】
認証サーバ１０３からの認証結果が、認証成功である場合、認証部３１２は、キューに格納された認証対象のメッセージに関連付けて認証済みのマークを行うようにデータサーバ１０４に指示する（図５の（４））。なお、認証結果が認証成功である場合、認証結果には、認証トークンと対応するユーザを示す情報が含まれていてよい。一方、認証サーバ１０３からの認証結果が、認証失敗である（即ち、不正な認証トークンであった）場合、認証部３１２は、メッセージキューに格納した認証対象のメッセージを削除するようにデータサーバ１０４に指示する（図５の（４’））。そして、認証部３１２は、認証に失敗した認証トークンを不正な認証トークンとしてキャッシュする（図５の（５’））。
【００２３】
この様に、認証が成功すれば、メッセージキューのメッセージに関連付けて認証済みのマークが付される。また、認証に失敗すると、操作対象のメッセージはメッセージキューから削除される。そのため、例えば、メッセージの通知先で受信の際に、認証済みのマークを確認してからメッセージを受信することで、不正なメッセージが、メッセージの通知先で受信されることを抑制することができる。この様に、実施形態によれば、認証結果を待たずに、メッセージをメッセージキューに格納したとしても、メッセージキューの秘匿性を確保することができる。
【００２４】
＜メッセージ受信＞
続いて、メッセージの受信処理について説明する。図６は、メッセージ受信における認証処理及びキュー操作処理の実行タイミングの例を示す図である。図６（ａ）は、例示的な認証処理及びキュー操作処理の実行タイミングを示している。そして、図６（ａ）において、メッセージ処理装置１０１はメッセージ受信ＡＰＩを受け付けると、認証処理を動作させて、認証が成功した場合、メッセージ受信ＡＰＩに応じたキューの操作を行って、ＡＰＩを返却している。そのため、まず認証処理を完了させて、次にキューの操作の実行を完了させた後まで、ＡＰＩが返却されず、時間がかかってしまう。そこで、実施形態に係るメッセージ処理装置１０１は、認証の完了を待たずに、メッセージ受信ＡＰＩに応じたキューの操作を並行して開始する。図６（ｂ）は、実施形態に係る認証処理及びキュー操作処理の実行タイミングを示す図である。図６（ｂ）に示すように、実施形態に係るメッセージ処理装置１０１は、認証の完了を待たずにキュー操作を並行して開始している。そのため、メッセージの受信処理においても、処理時間を短縮することができ、メッセージキューシステム１００の処理性能を向上させることができる。なお、メッセージ受信では、例えば、キュー操作と認証との双方が完了してから、ＡＰＩの返却が行われてよい。また、認証の完了を待っている間に、メッセージ送信ＡＰＩによりメッセージキューに登録されているメッセージに関連付けて認証済みのマークが新たに付される可能性がある。そのため、認証の待ち時間中に、メッセージキューに登録されているメッセージの認証済みマークを確認する処理が実行されてもよい（図６（ｂ）の点線矢印）。
【００２５】
［メッセージ受信時のキュー操作］
図７は、実施形態に係るメッセージ受信時のキュー操作を例示する図である。図７において、（１）〜（４）までの処理では、例えば、図４の（１）〜（４）までと類似する処理が実行されてよい。ただし、図７（１）では、操作部３１１は、メッセージキューからメッセージを受信するための受信指示であるメッセージ受信ＡＰＩを受信する。メッセージ受信ＡＰＩには、キューの操作を実行するユーザの情報処理装置１０２を表す認証トークンが含まれていてよい。そして、図７（３）では、認証トークンを含むメッセージ受信用の認証要求を認証部３１２に通知する。続いて、操作部３１１は、認証の結果を待たずに図７（４）の処理を実行し、メッセージ受信ＡＰＩの正当性を検証する。
【００２６】
図７（５）において、操作部３１１は、ＡＰＩの処理対象となるメッセージキューが、どのデータサーバ１０４のどの領域に存在するかを確認する。例えば、操作部３１１は、管理サーバに問い合わせることでメッセージキューの所在を確認してよい。図７（６）において操作部３１１は、メッセージキューの情報を取得し、メッセージキューの更新内容を決定する。例えば、操作部３１１は、どのメッセージを受信し、メッセージキューのどのメッセージをどんな値に書き換えるかを決定してよい。また、操作部３１１は、既に内容を登録可能な情報をＡＰＩ実行結果に設定し、ＡＰＩ実行結果の返却の準備をする。例えば、操作部３１１は、受け付けたメッセージ受信ＡＰＩのユニークＩＤや、受信時刻などの情報をＡＰＩ実行結果のベース（枠組み）に設定してよい。
【００２７】
図７（７）において、操作部３１１は、認証部３１２に認証の確認要求を出力して認証結果を取得し、認証結果に基づいて、ユーザがメッセージ受信ＡＰＩで処理対象となっているメッセージキューの操作権限を有するか否かを判定する。そして、ユーザがメッセージ受信ＡＰＩで処理対象となっているメッセージキューの操作権限を有することが保証された場合、図７（８）において、操作部３１１は、操作対象のメッセージキューからメッセージを取得して、メッセージキューのデータを更新する。なお、メッセージキューのデータを更新では、操作部３１１は、例えば、メッセージを削除する。また、図７（８）では、操作部３１１は、認証済みマークの付いたメッセージのみを取得対象とする。図７（９）において、操作部３１１は、取得したメッセージをＡＰＩ実行結果のベースに埋め込み、ユーザにＡＰＩ実行結果を返却する。
【００２８】
図８は、以上で述べた図７（５）〜図７（８）までの処理を、更に説明する図である。図８（５）において、操作部３１１は、ＡＰＩの処理対象となるメッセージキューが、どのデータサーバ１０４のどの領域に存在するかを確認する。図８（６）において操作部３１１がメッセージキューの情報を取得すると、図８（７）において操作部３１１は、認証部３１２に認証の確認要求を出力する。そして、操作部３１１は、確認要求の応答から認証結果を確認し、ユーザがメッセージ受信ＡＰＩによる操作対象のメッセージキューの操作権限を有するか否かを判定する。そして、ユーザがメッセージ受信ＡＰＩによる操作対象のメッセージキューの操作権限を有する場合、操作部３１１は、メッセージキューからメッセージを取得する（図８（８））。ここで、操作部３１１によるキュー操作処理よりも認証部３１２による認証処理の方に時間がかかる場合があり、その場合、認証部３１２による認証の完了待ちとなることがある。この場合、操作部３１１は、認証部３１２による認証を待つ間、メッセージ受信ＡＰＩによる操作対象のメッセージキューに登録されているメッセージの認証済みマークを確認する処理を実行して、最新のメッセージの認証完了状況を把握してよい。これにより、図８（５）〜図８（７）の処理の間に認証済みとなったメッセージについても、操作部３１１は、メッセージ取得（図８（８））において取得することができる。
【００２９】
以上で述べた様に、実施形態に係るメッセージ受信処理によれば、認証処理とキュー操作処理とが並行して実施されるため、処理時間を短縮することができ、メッセージキューシステム１００の処理性能を向上させることができる。また、操作部３１１は、認証が完了しなければ、キューからメッセージを取り出さないため、メッセージキューの秘匿性はメッセージ受信においても確保される。なお、図８（７）において認証部３１２による認証結果が認証失敗の場合、認証に失敗したことを示すＡＰＩ実行結果を情報処理装置１０２に返却する。また、例えば、メッセージキューに、認証済みマークの付されたメッセージが無い場合、操作部３１１は、メッセージがないことを示すＡＰＩ実行結果を情報処理装置１０２に返却する。
【００３０】
［メッセージ受信における認証処理］
図９は、実施形態に係るメッセージ受信における認証処理を説明する図である。認証処理は、例えば、図７の（３）において、認証部３１２が、操作部３１１からメッセージ受信用の認証要求を受信すると開始してよい。
【００３１】
認証部３１２は、操作部３１１からメッセージ受信用の認証要求を受け付けると（図９（１））、操作部３１１から受け取った認証トークンが記憶部３０２のキャッシュに格納されているか確認する（図９（２））。キャッシュには、過去に不正と判定された認証トークンが格納されていてよく、操作部３１１は、例えば、認証対象の認証トークンがキャッシュに格納されている場合、操作部３１１に認証拒否の返答を即時行い、認証要求をキャンセルする。一方、認証対象の認証トークンがキャッシュに格納されていなかった場合は、認証サーバ１０３に認証の依頼を行い、認証を継続する（図９（３））。
【００３２】
続いて、認証部３１２は、操作部３１１から認証の確認要求を受け付けると（図９（４−１））、認証の結果を操作部３１１に返却する（図９（４−２））。なお、認証サーバ１０３からの認証結果が認証失敗である場合（不正な認証トークンであった）、認証部３１２は、認証できなかった認証トークンを不正なトークンとしてキャッシュに格納する（図９（４’））。
【００３３】
以上で述べた様に、ユーザの認証に成功し、且つ、メッセージキューのメッセージに認証済みのマークが付されている場合に、メッセージをユーザに返却するので、メッセージキューの秘匿性を確保することができる。また、メッセージの取得と、認証とが並行して行われるため、メッセージの受信処理にかかる時間を短縮することができる。
【００３４】
＜認証失敗時の処理＞
図１０は、認証失敗時の処理を例示する図である。なお、図１０の処理は、メッセージの送信と受信の双方に適用されてよい。例えば、ユーザの情報処理装置１０２が、ユーザのメッセージキューを操作するためのＡＰＩを実行すると、実行したＡＰＩはメッセージ処理装置１０１の操作部３１１で受け付けられる（図１０の（１））。そして、メッセージ処理装置１０１の操作部３１１は、受け付けたＡＰＩが、どのようなＡＰＩであり、どのメッセージキューに対して発行されたか解釈する（図１０の（２））。
【００３５】
続いて、操作部３１１は、認証部３１２に対してＡＰＩを送信してきた情報処理装置１０２の認証を要求する（図１０の（３））。そして、操作部３１１が、認証部３１２から認証が失敗したことを示す通知を受けたとする（図１０の（４））。この場合に、操作部３１１は、キュー操作を依頼してきたユーザの情報処理装置１０２に認証が失敗したことを示すＡＰＩ実行結果を返却する。
【００３６】
続いて、以上で述べた、メッセージ送信処理とメッセージ受信処理のそれぞれについて動作フローを説明する。
【００３７】
図１１は、実施形態に係るメッセージキュー１１００を例示する図である。メッセージキュー１１００は、例えば、データサーバ１０４の記憶装置に記憶されていてよい。メッセージキュー１１００には、例えば、ユニークＩＤと、メッセージと、メッセージに対する認証状況とを含むエントリが登録されている。ユニークＩＤは、例えば、エントリのメッセージをメッセージキュー１１００に登録する際に用いられたメッセージ送信ＡＰＩのユニークＩＤである。メッセージは、例えば、メッセージ送信ＡＰＩで送信されてきたメッセージである。また、認証状況は、例えば、エントリで対応づけられるメッセージが認証済みか否かを示す情報であってよい。図１１の例では、エントリで対応づけられるメッセージが認証済みである場合、認証状況に「認証済み」が登録されており、認証済みでない場合には、未認証であることを表す「‐」が登録されている。
【００３８】
図１２は、不正な認証トークンを格納するキャッシュ１２００を例示する図である。キャッシュ１２００は、例えば、メッセージ処理装置１０１の記憶部３０２に記憶されていてよい。図１２に示すように、キャッシュ１２００には、例えば、不正な認証トークンと判定された認証トークンが登録されている。
【００３９】
＜メッセージ送信の動作フロー＞
図１３は、実施形態に係るメッセージ送信処理の動作フローを例示する図である。図１３のメッセージ送信処理の動作フローは、メッセージ処理装置１０１の操作部３１１が、メッセージ送信ＡＰＩを受け付けると開始してよい。
【００４０】
ステップ１３０１において操作部３１１は、受信したメッセージ送信ＡＰＩに含まれる認証トークン、メッセージに紐付く固有の情報であるユニークＩＤ、メッセージの格納先のキューの識別情報を取得し、認証要求を認証部３１２に通知する。なお、以降、ステップを“Ｓ”と記載し、例えば、Ｓ１３０１と表記する。Ｓ１３０２において認証部３１２は、認証要求に含まれる認証トークンが、キャッシュ１２００に格納されているか否かを判定する。
【００４１】
Ｓ１３０２において認証トークンがキャッシュ１２００に格納されている場合（Ｓ１３０２がＹＥＳ）、フローはＳ１３１１に進む。Ｓ１３１１において操作部３１１は、メッセージ送信ＡＰＩの実行結果を認証エラーに設定し、フローはＳ１３１０に進み、操作部３１１は、認証エラーに設定したＡＰＩ実行結果を、メッセージ送信ＡＰＩの呼び出し元の情報処理装置１０２に返却する。
【００４２】
一方、Ｓ１３０２において認証トークンがキャッシュ１２００に格納されていない場合（Ｓ１３０２がＮＯ）、操作部３１１と、認証部３１２とは並列処理を開始する。まず、認証部３１２は、Ｓ１３０３において認証処理を開始し、Ｓ１３０４において認証サーバ１０３に認証依頼を送信する。Ｓ１３０５において認証部３１２は、認証サーバ１０３からの応答として受け取った認証結果に基づいて、認証に成功したか否かを判定する。認証に成功した場合（Ｓ１３０５がＹＥＳ）、フローはＳ１３０６に進む。Ｓ１３０６において、認証部３１２は、メッセージキュー１１００において認証対象のメッセージを含むエントリの認証状況を認証済みに変更するようにデータサーバ１０４に指示を出力し、メッセージに認証済みのマークを行う。Ｓ１３０６の処理が終了すると、認証部３１２は認証処理を終了する。
【００４３】
また、認証に失敗した場合（Ｓ１３０５がＮＯ）、フローはＳ１３０７に進み、認証部３１２は、メッセージキュー１１００において認証対象のメッセージを含むエントリを削除するようにデータサーバ１０４に指示する。Ｓ１３０８において認証部３１２は、認証で用いた認証トークンを不正な認証トークンとしてキャッシュ１２００に保存し、認証部３１２は認証処理を終了する。
【００４４】
また、Ｓ１３０３の認証部３１２の認証処理と並行して、操作部３１１は、Ｓ１３０９においてメッセージの送信時のキュー操作処理を実行する。送信時のキュー操作処理の詳細は、図１４を参照して後述する。Ｓ１３０９のキュー操作処理を完了すると、Ｓ１３１０において操作部３１１は、メッセージ送信ＡＰＩのＡＰＩ実行結果をメッセージ送信ＡＰＩの呼び出し元の情報処理装置１０２に返却する。この場合、メッセージ送信ＡＰＩのＡＰＩ実行結果は、例えば、メッセージキューへのメッセージの登録が完了したことを示す情報を含んでよい。
【００４５】
また、図１４は、実施形態における送信時のキュー操作処理を例示する図である。例えば、操作部３１１は、図１３のＳ１３０９の処理に進むと、図１４のキュー操作処理の実行を開始してよい。
【００４６】
Ｓ１４０１において操作部３１１は、メッセージ送信ＡＰＩの正当性を検証する。例えば、操作部３１１は、メッセージ送信ＡＰＩに設定されているパラメータが正しいか、及びメッセージ送信ＡＰＩで伝送されるデータの形式が誤っていないかなどを検証する。そして、Ｓ１４０２において操作部３１１は、ＡＰＩの検証の結果、メッセージ送信ＡＰＩに誤りがあるか否かを判定する。ＡＰＩの検証の結果、誤りがあれば（Ｓ１４０２がＹＥＳ）、フローはＳ１４０５に進む。Ｓ１４０５において操作部３１１は、メッセージ送信ＡＰＩのＡＰＩ実行結果をエラーに設定し、本動作フローは終了し、図１３のＳ１３１０に進む。
【００４７】
一方、ＡＰＩの検証の結果、メッセージ送信ＡＰＩに誤りがなければ（Ｓ１４０２がＮＯ）、フローはＳ１４０３に進む。Ｓ１４０３において操作部３１１は、メッセージ送信ＡＰＩで操作対象に指定されているメッセージキューの所在を確認する。例えば、操作部３１１は、データサーバ１０４を管理する管理サーバに問い合わせることで、メッセージキューの所在を確認してよい。Ｓ１４０４において操作部３１１は、確認の結果に基づいて、ＡＰＩで操作対象に指定されているメッセージキューが未登録か否かを判定する。ＡＰＩで操作対象に指定されているメッセージキューが未登録であり、いずれのデータサーバ１０４にも存在しない場合（Ｓ１４０４がＹＥＳ）、フローはＳ１４０５に進む。
【００４８】
一方、ＡＰＩで操作対象に指定されているメッセージキューがデータサーバ１０４に登録されている場合（Ｓ１４０４がＮＯ）、フローはＳ１４０６に進む。Ｓ１４０６において操作部３１１は、ＡＰＩで指定されたメッセージを、操作対象のメッセージキューに格納するようにデータサーバ１０４に指示を出力して、メッセージキューを更新する。Ｓ１４０７において操作部３１１は、ＡＰＩ実行結果にメッセージキューへのメッセージの格納の成功を示す情報を設定し、本動作フローは終了する。
【００４９】
＜メッセージ受信の動作フロー＞
続いて、メッセージ受信の動作フローを説明する。図１５は、実施形態に係るメッセージ受信処理の動作フローを例示する図である。図１５のメッセージ受信処理の動作フローは、メッセージ処理装置１０１の操作部３１１が、メッセージ受信ＡＰＩを受け付けると開始してよい。
【００５０】
Ｓ１５０１においてメッセージ処理装置１０１の操作部３１１は、受け付けたメッセージ受信ＡＰＩに含まれる認証トークン、メッセージの格納先のキューの識別情報を取得し、認証要求を認証部３１２に通知する。Ｓ１５０２において認証部３１２は、認証要求に含まれる認証トークンが、キャッシュ１２００に格納されているか否かを判定する。
【００５１】
Ｓ１５０２において認証トークンがキャッシュ１２００に格納されている場合（Ｓ１５０２がＹＥＳ）、フローはＳ１５０９に進む。Ｓ１５０９において操作部３１１は、ＡＰＩ実行結果を認証エラーに設定し、フローはＳ１５１０に進み、認証エラーに設定されたＡＰＩ実行結果をＡＰＩの呼び出し元の情報処理装置１０２に返却する。
【００５２】
一方、Ｓ１５０２において認証トークンがキャッシュ１２００に格納されていない場合（Ｓ１５０２がＮＯ）、操作部３１１と、認証部３１２とは並列処理を開始する。まず、認証部３１２は、Ｓ１５０３において認証処理を開始し、Ｓ１５０４において認証サーバ１０３に認証依頼を送信する。Ｓ１５０５において認証部３１２は、認証サーバ１０３から応答として受け取った認証結果に基づいて、認証に成功したか否かを判定する。認証に成功した場合（Ｓ１５０５がＹＥＳ）、認証部３１２は認証処理を終了し、操作部３１１の処理が完了するのを待機する。
【００５３】
また、Ｓ１５０５において認証に失敗した場合（Ｓ１５０５がＮＯ）、フローはＳ１５０６に進み、認証部３１２は、操作部３１１に強制割り込みの通知を出力して、キュー操作処理を終了させる。Ｓ１５０７において認証部３１２は、認証に失敗した認証トークンを、不正な認証トークンとしてキャッシュ１２００に格納し、認証部３１２の認証処理は終了し、操作部３１１の処理が完了するのを待機する。
【００５４】
また、認証部３１２の認証処理と並行して、操作部３１１は、Ｓ１５０８においてメッセージの受信時のキュー操作処理を実行する。なお、受信時のキュー操作処理の詳細は、図１６を参照して後述する。Ｓ１５０８のキュー操作処理を完了すると、操作部３１１は、認証部３１２の認証処理が完了するまで待機する。
【００５５】
そして、操作部３１１の処理と認証部３１２の認証処理との双方が完了すると、操作部３１１は、ＡＰＩ実行結果をＡＰＩの呼び出し元の情報処理装置１０２に返却する。この場合、ＡＰＩ実行結果は、例えば、メッセージキューから取得したメッセージを含んでよい。
【００５６】
また、図１６は、実施形態における受信時のキュー操作処理を例示する図である。例えば、制御部３０１は、図１５のＳ１５０８の処理に進むと、図１６のキュー操作処理の実行を開始してよい。
【００５７】
Ｓ１６０１において操作部３１１は、メッセージ受信ＡＰＩの正当性を検証する。例えば、操作部３１１は、メッセージ受信ＡＰＩに設定されているパラメータが正しいか、及びＡＰＩで伝送されるデータの形式が誤っていないかなどを検証する。そして、Ｓ１６０２において操作部３１１は、ＡＰＩに誤りがあるか否かを判定する。ＡＰＩの検証の結果、ＡＰＩに誤りがあれば（Ｓ１６０２がＹＥＳ）、フローはＳ１６０５に進む。Ｓ１６０５において操作部３１１は、ＡＰＩ実行結果をエラーに設定し、本動作フローは終了し、図１５のＳ１５１０に進む。
【００５８】
一方、ＡＰＩの検証の結果、ＡＰＩに誤りがなければ（Ｓ１６０２がＮＯ）、フローはＳ１６０３に進む。Ｓ１６０３において操作部３１１は、ＡＰＩで操作対象に指定されているメッセージキューに登録されているメッセージリストの取得を試みる。なお、メッセージリストには、メッセージのユニークＩＤと、そのメッセージの認証済みマークの情報が含まれていてよい。Ｓ１６０４において操作部３１１は、ＡＰＩで操作対象に指定されているメッセージキュー１１００が未登録か否かを判定する。ＡＰＩで操作対象に指定されているメッセージキュー１１００が未登録であり、いずれのデータサーバ１０４にも存在しない場合（Ｓ１６０４がＮＯ）、フローはＳ１６０５に進む。
【００５９】
一方、ＡＰＩで操作対象に指定されているメッセージキュー１１００がデータサーバ１０４に登録されている場合（Ｓ１６０４がＮＯ）、フローはＳ１６０６に進む。Ｓ１６０６において操作部３１１は、メッセージキュー１１００の更新内容を決定する。更新内容の決定では、操作部３１１は、例えば、メッセージリストの認証済みマークの情報を基に、データサーバ１０４からメッセージキューのどのメッセージを受信し、メッセージキュー１１００をどんな値に書き換えるかを決定してよい。
【００６０】
Ｓ１６０７において操作部３１１は、ＡＰＩ実行結果に既に内容を登録可能な情報を設定し、ＡＰＩ実行結果の返却の準備をする。例えば、操作部３１１は、受け付けたメッセージ受信ＡＰＩのメッセージに紐付く固有の情報であるユニークＩＤや、メッセージ受信ＡＰＩを受け付けた受付時刻などの情報をＡＰＩ実行結果に設定してよい。Ｓ１６０８において操作部３１１は、認証部３１２に認証の確認要求を通知して、認証結果を確認する。Ｓ１６１０において操作部３１１は、認証に成功したかを判定する。
【００６１】
Ｓ１６１０においてまだ認証中である場合（Ｓ１６１０が認証中）、操作部３１１は、メッセージキュー１１００のメッセージリストを再度取得して、認証済みマークのあるメッセージを特定し、Ｓ１６０６に戻り、メッセージキューの更新内容を再度決定する。
【００６２】
Ｓ１６１０において認証に失敗した場合（Ｓ１６１０が失敗）、フローはＳ１６１１に進み、ＡＰＩ実行結果に認証エラーを示す情報を設定する。一方、Ｓ１６１０において認証に成功した場合（Ｓ１６１０が成功）、フローはＳ１６１２に進む。
【００６３】
Ｓ１６１２において操作部３１１は、データサーバ１０４に、メッセージキュー１１００から認証済みマークが付されているメッセージの送付と、送付したメッセージを含むエントリの削除を指示する依頼を出力する。それにより、操作部３１１は、認証済みマークが付されているメッセージをデータサーバ１０４から取得し、データサーバ１０４はメッセージキュー１１００を更新する。Ｓ１６１３において操作部３１１は、ＡＰＩ実行結果に、メッセージキュー１１００から取得したメッセージを格納し、本動作フローは終了する。
【００６４】
また、例えば、Ｓ１６０１〜Ｓ１６０９までの処理において、操作部３１１が認証部３１２からの割り込みを受けた場合、フローはＳ１６１４に進み、操作部３１１は、ＡＰＩ実行結果に、認証エラーを設定し、本動作フローは終了する。
【００６５】
以上で述べた様に、実施形態によればメッセージ処理装置１０１の制御部３０１は、ＡＰＩの操作と、認証とを並行して行うため、処理時間を短縮でき、メッセージキューシステム１００の処理性能を向上させることができる。
【００６６】
例えば、メッセージ処理装置１０１の制御部３０１は、情報処理装置１０２からメッセージ送信ＡＰＩを受信した場合、認証の完了を待たずに、メッセージをメッセージキュー１１００に登録する依頼を出力し、ＡＰＩ実行結果を返却する。この様に、制御部３０１は、認証の完了を待たずに処理を進めるため、処理時間を短縮することができる。
【００６７】
一方で、メッセージ送信において認証が完了した場合、メッセージ処理装置１０１の制御部３０１は、データサーバ１０４に、メッセージキュー１１００において、メッセージ送信ＡＰＩで登録されたメッセージに認証済みのマークを付与するように依頼する。そのため、メッセージ送信において、メッセージキュー１１００の秘匿性を確保することができる。
【００６８】
また、同様に、情報処理装置１０２からメッセージ受信ＡＰＩを受信した場合も、制御部３０１は、メッセージ処理装置１０１の制御部３０１は、ＡＰＩの操作と、認証とを並行して行うため、処理時間を短縮できる。そして、制御部３０１は、認証を完了させてから、認証結果に応じてＡＰＩ実行結果を情報処理装置１０２に返却する。そして、制御部３０１は、メッセージの受信する際は、メッセージに認証済みのマークが付与されたメッセージを取得する。そのため、メッセージ受信においても、メッセージキュー１１００の秘匿性を確保することができる。
【００６９】
また更に、制御部３０１は、認証に失敗した場合には、認証に用いた認証トークンをキャッシュ１２００に保存しておくため、以降、メッセージ送信及びメッセージ受信において認証エラーを迅速に判定することができる。そして、キャッシュ１２００を用いて認証エラーが検出された場合、制御部３０１は、例えば、図１３のＳ１３０３以降の処理及び、図１５のＳ１５０３以降の処理の少なくとも一部を省略可能である。そのため、実施形態によれば、メッセージキューシステム１００の処理性能を向上させることができる。
【００７０】
なお、上述のメッセージ送信の動作フローにおいて、例えば、図１３のＳ１３０４において制御部３０１は、依頼部３２１として動作する。また、例えば、図１３のＳ１３０６において制御部３０１は、出力部３２２として動作する。
【００７１】
また、上述のメッセージ受信の動作フローにおいて、例えば、図１５のＳ１５０５において制御部３０１は、判定部３２３として動作する。例えば、図１６のＳ１６１２において制御部３０１は、取得部３２４として動作する。
【００７２】
また、上述の実施形態では、図２に示す様に、認証サーバ１０３が認証を行い、また、データサーバ１０４にメッセージキュー１１００が記憶されている場合を例示している。しかしながら、実施形態はこれに限定されるものではない。例えば、別の実施形態では、メッセージ処理装置１０１、認証サーバ１０３、データサーバ１０４は、これらを一体型にした装置として実装されてもよい。以下、このような一体型の装置を用いる第２の実施形態を説明する。
【００７３】
図１７は、第２の実施形態におけるメッセージキューシステム１７００を例示する図である。メッセージキューシステム１７００は、メッセージ処理装置１０１及び情報処理装置１０２を含む。メッセージ処理装置１０１は、情報処理装置１０２と通信可能に接続されてよい。メッセージ処理装置１０１は、例えば、接続した複数の情報処理装置１０２からメッセージキューの操作指示を受け付ける。例えば、情報処理装置１０２は、メッセージ処理装置１０１においてメッセージキューの操作に関するＡＰＩをＨＴＴＰプロトコルで呼び出すことで、メッセージ処理装置１０１にメッセージキューの操作指示を出力する。
【００７４】
メッセージ処理装置１０１は、例えば、メッセージキューの操作指示の入力を受け付けると、メッセージキューの操作指示に従って、操作指示を通知してきたユーザのメッセージキューを操作するとともに、操作指示を入力してきたユーザの認証を行う。
【００７５】
図１８は、第２の実施形態に係るメッセージ処理装置１０１のブロック構成を例示する図である。メッセージ処理装置１０１は、例えば、制御部１８０１、記憶部１８０２、通信部１８０３を含んでいる。制御部１８０１は、例えば記憶制御部１８１１、取得部１８１２、認証部１８１３などとして動作する。メッセージ処理装置１０１の記憶部１８０２は、例えば、メッセージキュー１１００、キャッシュ１２００、及び後述する記憶エリア情報２３００などの情報を記憶している。通信部１８０３は、例えば、制御部１８０１の指示に従って、情報処理装置１０２と通信する。これらの各部の詳細及び記憶部１８０２に格納されている情報の詳細については後述する。続いて、第２の実施形態に係る処理の動作フローを例示する。
【００７６】
＜メッセージ送信の動作フロー＞
図１９は、実施形態に係るメッセージ送信処理の動作フローを例示する図である。図１９のメッセージ送信処理の動作フローは、メッセージ処理装置１０１の制御部１８０１が、メッセージ送信ＡＰＩを受け付けると開始してよい。
【００７７】
Ｓ１９０１において制御部１８０１は、受信したメッセージ送信ＡＰＩに含まれる認証トークン、メッセージに紐付く固有の情報であるユニークＩＤ、メッセージの格納先のキューの識別情報を取得し、認証要求を認証部１８１３に通知する。Ｓ１９０２において認証部１８１３は、認証要求に含まれる認証トークンが、キャッシュ１２００に格納されているか否かを判定する。
【００７８】
Ｓ１９０２において認証トークンがキャッシュ１２００に格納されている場合（Ｓ１９０２がＹＥＳ）、フローはＳ１９１１に進む。Ｓ１９１１において制御部１８０１は、メッセージ送信ＡＰＩの実行結果を認証エラーに設定し、フローはＳ１９１０に進み、制御部１８０１は、認証エラーに設定したＡＰＩ実行結果を、メッセージ送信ＡＰＩの呼び出し元の情報処理装置１０２に返却する。
【００７９】
一方、Ｓ１９０２において認証トークンがキャッシュ１２００に格納されていない場合（Ｓ１９０２がＮＯ）、制御部１８０１と、認証部１８１３とは並列処理を開始する。まず、認証部１８１３は、Ｓ１９０３において認証処理を開始し、Ｓ１９０４において認証を実行する。Ｓ１９０５において認証部１８１３は、認証結果に基づいて、認証に成功したか否かを判定する。認証に成功した場合（Ｓ１９０５がＹＥＳ）、フローはＳ１９０６に進む。Ｓ１９０６において、認証部１８１３は、記憶部１８０２のメッセージキュー１１００において認証対象のメッセージを含むエントリの認証状況を認証済みに変更し、メッセージに認証済みのマークを行う。Ｓ１９０６の処理が終了すると、認証部１８１３は認証処理を終了する。
【００８０】
また、認証に失敗した場合（Ｓ１９０５がＮＯ）、フローはＳ１９０７に進み、認証部１８１３は、記憶部１８０２のメッセージキュー１１００において認証対象のメッセージを含むエントリを削除する。Ｓ１９０８において認証部１８１３は、認証で用いた認証トークンを不正な認証トークンとしてキャッシュ１２００に保存し、認証部１８１３は認証処理を終了する。
【００８１】
また、Ｓ１９０３の認証部１８１３の認証処理と並行して、制御部１８０１は、Ｓ１９０９においてメッセージの送信時のキュー操作処理を実行する。送信時のキュー操作処理の詳細は、図２０を参照して後述する。Ｓ１９０９のキュー操作処理を完了すると、Ｓ１９１０において制御部１８０１は、メッセージ送信ＡＰＩのＡＰＩ実行結果をメッセージ送信ＡＰＩの呼び出し元の情報処理装置１０２に返却する。この場合、メッセージ送信ＡＰＩのＡＰＩ実行結果は、例えば、メッセージキューへのメッセージの登録が完了したことを示す情報を含んでよい。
【００８２】
また、図２０は、実施形態における送信時のキュー操作処理を例示する図である。例えば、制御部１８０１は、図１９のＳ１９０９の処理に進むと、図２０のキュー操作処理の実行を開始してよい。
【００８３】
Ｓ２００１において制御部１８０１は、メッセージ送信ＡＰＩの正当性を検証する。例えば、制御部１８０１は、メッセージ送信ＡＰＩに設定されているパラメータが正しいか、及びメッセージ送信ＡＰＩで伝送されるデータの形式が誤っていないかなどを検証する。そして、Ｓ２００２において制御部１８０１は、ＡＰＩの検証の結果、メッセージ送信ＡＰＩに誤りがあるか否かを判定する。ＡＰＩの検証の結果、誤りがあれば（Ｓ２００２がＹＥＳ）、フローはＳ２００５に進む。Ｓ２００５において制御部１８０１は、メッセージ送信ＡＰＩのＡＰＩ実行結果をエラーに設定し、本動作フローは終了し、図１９のＳ１９１０に進む。
【００８４】
一方、ＡＰＩの検証の結果、メッセージ送信ＡＰＩに誤りがなければ（Ｓ２００２がＮＯ）、フローはＳ２００３に進む。Ｓ２００３において制御部１８０１は、メッセージ送信ＡＰＩで操作対象に指定されているメッセージキューの所在を記憶部１８０２において確認する。例えば、制御部１８０１は、記憶エリア情報２３００を参照して、メッセージの格納先のメッセージキューを識別するための識別情報と対応する記憶エリアを特定する。なお、記憶エリアは、識別情報と対応するメッセージキューの記憶部１８０２における格納先を示す情報である。
【００８５】
図２３は、記憶エリア情報２３００を例示する図である。記憶エリア情報２３００では、識別情報と、記憶エリアとが対応付けられて記憶されている。例えば、制御部１８０１は、記憶エリア情報２３００を参照して、メッセージの格納先のメッセージキューを識別するための識別情報と対応する記憶エリアを特定し、操作対象のメッセージキューを特定してよい。
【００８６】
Ｓ２００４において制御部１８０１は、確認の結果に基づいて、ＡＰＩで操作対象に指定されているメッセージキューが未登録か否かを判定する。ＡＰＩで操作対象に指定されているメッセージキューが未登録であり、記憶部１８０２に存在しない場合（Ｓ２００４がＹＥＳ）、フローはＳ２００５に進む。
【００８７】
一方、ＡＰＩで操作対象に指定されているメッセージキューが記憶部１８０２に登録されている場合（Ｓ２００４がＮＯ）、フローはＳ２００６に進む。Ｓ２００６において制御部１８０１は、ＡＰＩで指定されたメッセージを、記憶部１８０２の特定した記憶エリアに存在する操作対象のメッセージキューに格納し、メッセージキューを更新する。Ｓ２００７において制御部１８０１は、ＡＰＩ実行結果にメッセージキューへのメッセージの格納の成功を示す情報を設定し、本動作フローは終了する。
【００８８】
＜メッセージ受信の動作フロー＞
続いて、メッセージ受信の動作フローを説明する。図２１は、実施形態に係るメッセージ受信処理の動作フローを例示する図である。図２１のメッセージ受信処理の動作フローは、メッセージ処理装置１０１の制御部１８０１が、メッセージ受信ＡＰＩを受け付けると開始してよい。
【００８９】
Ｓ２１０１においてメッセージ処理装置１０１の制御部１８０１は、受け付けたメッセージ受信ＡＰＩに含まれる認証トークン、メッセージの格納先のキューの識別情報を取得し、認証要求を認証部１８１３に通知する。Ｓ２１０２において認証部１８１３は、認証要求に含まれる認証トークンが、キャッシュ１２００に格納されているか否かを判定する。
【００９０】
Ｓ２１０２において認証トークンがキャッシュ１２００に格納されている場合（Ｓ２１０２がＹＥＳ）、フローはＳ２１０９に進む。Ｓ２１０９において制御部１８０１は、ＡＰＩ実行結果を認証エラーに設定し、フローはＳ２１１０に進み、認証エラーに設定されたＡＰＩ実行結果をＡＰＩの呼び出し元の情報処理装置１０２に返却する。
【００９１】
一方、Ｓ２１０２において認証トークンがキャッシュ１２００に格納されていない場合（Ｓ２１０２がＮＯ）、制御部１８０１と、認証部１８１３とは並列処理を開始する。まず、認証部１８１３は、Ｓ２１０３において認証処理を開始し、Ｓ２１０４において認証を実行する。Ｓ２１０５において認証部１８１３は、認証結果に基づいて、認証に成功したか否かを判定する。認証に成功した場合（Ｓ２１０５がＹＥＳ）、認証部１８１３は認証処理を終了し、制御部１８０１の処理が完了するのを待機する。
【００９２】
また、Ｓ２１０５において認証に失敗した場合（Ｓ２１０５がＮＯ）、フローはＳ２１０６に進み、認証部１８１３は、制御部１８０１に強制割り込みの通知を出力して、キュー操作処理を終了させる。Ｓ２１０７において認証部１８１３は、認証に失敗した認証トークンを、不正な認証トークンとしてキャッシュ１２００に格納し、認証部１８１３の認証処理は終了し、制御部１８０１の処理が完了するのを待機する。
【００９３】
また、認証部１８１３の認証処理と並行して、制御部１８０１は、Ｓ２１０８においてメッセージの受信時のキュー操作処理を実行する。なお、受信時のキュー操作処理の詳細は、図２２を参照して後述する。Ｓ２１０８のキュー操作処理を完了すると、制御部１８０１は、認証部１８１３の認証処理が完了するまで待機する。
【００９４】
そして、制御部１８０１の処理と認証部１８１３の認証処理との双方が完了すると、制御部１８０１は、ＡＰＩ実行結果をＡＰＩの呼び出し元の情報処理装置１０２に返却する。この場合、ＡＰＩ実行結果は、例えば、メッセージキューから取得したメッセージを含んでよい。
【００９５】
また、図２２は、実施形態における受信時のキュー操作処理を例示する図である。例えば、制御部１８０１は、図２１のＳ２１０８の処理に進むと、図２２のキュー操作処理の実行を開始してよい。
【００９６】
Ｓ２２０１において制御部１８０１は、メッセージ受信ＡＰＩの正当性を検証する。例えば、制御部１８０１は、メッセージ受信ＡＰＩに設定されているパラメータが正しいか、及びＡＰＩで伝送されるデータの形式が誤っていないかなどを検証する。そして、Ｓ２２０２において制御部１８０１は、ＡＰＩに誤りがあるか否かを判定する。ＡＰＩの検証の結果、ＡＰＩに誤りがあれば（Ｓ２２０２がＹＥＳ）、フローはＳ２２０５に進む。Ｓ２２０５において制御部１８０１は、ＡＰＩ実行結果をエラーに設定し、本動作フローは終了し、図２１のＳ２１１０に進む。
【００９７】
一方、ＡＰＩの検証の結果、ＡＰＩに誤りがなければ（Ｓ２２０２がＮＯ）、フローはＳ２２０３に進む。Ｓ２２０３において制御部１８０１は、ＡＰＩで操作対象に指定されているメッセージキューに登録されているメッセージリストの取得を試みる。例えば、制御部１８０１は、記憶エリア情報２３００を参照して、メッセージの格納先のメッセージキューを識別するための識別情報と対応する記憶エリアを特定する。そして、制御部１８０１は、記憶エリアに格納されたメッセージキューから情報を取得し、メッセージリストを生成する。なお、メッセージリストには、メッセージのユニークＩＤと、そのメッセージの認証済みマークの情報が含まれていてよい。Ｓ２２０４において制御部１８０１は、ＡＰＩで操作対象に指定されているメッセージキュー１１００が未登録か否かを判定する。ＡＰＩで操作対象に指定されているメッセージキュー１１００が未登録である場合（Ｓ２２０４がＮＯ）、フローはＳ２２０５に進む。
【００９８】
一方、ＡＰＩで操作対象に指定されているメッセージキュー１１００が記憶部１８０２に登録されている場合（Ｓ２２０４がＮＯ）、フローはＳ２２０６に進む。Ｓ２２０６において制御部１８０１は、メッセージキュー１１００の更新内容を決定する。更新内容の決定では、制御部１８０１は、例えば、メッセージリストの認証済みマークの情報を基に、メッセージキューのどのメッセージを受信し、メッセージキュー１１００をどんな値に書き換えるかを決定してよい。
【００９９】
Ｓ２２０７において制御部１８０１は、ＡＰＩ実行結果に既に内容を登録可能な情報を設定し、ＡＰＩ実行結果の返却の準備をする。例えば、制御部１８０１は、受け付けたメッセージ受信ＡＰＩのメッセージに紐付く固有の情報であるユニークＩＤや、メッセージ受信ＡＰＩを受け付けた受付時刻などの情報をＡＰＩ実行結果に設定してよい。Ｓ２２０８において制御部１８０１は、認証部１８１３に認証の確認要求を通知して、認証結果を確認する。Ｓ２２１０において制御部１８０１は、認証に成功したかを判定する。
【０１００】
Ｓ２２１０においてまだ認証中である場合（Ｓ２２１０が認証中）、制御部１８０１は、メッセージキュー１１００のメッセージリストを再度取得して、認証済みマークのあるメッセージを特定し、Ｓ２２０６に戻り、メッセージキューの更新内容を再度決定する。
【０１０１】
Ｓ２２１０において認証に失敗した場合（Ｓ２２１０が失敗）、フローはＳ２２１１に進み、ＡＰＩ実行結果に認証エラーを示す情報を設定する。一方、Ｓ２２１０において認証に成功した場合（Ｓ２２１０が成功）、フローはＳ２２１２に進む。
【０１０２】
Ｓ２２１２において制御部１８０１は、メッセージキュー１１００から認証済みマークが付されているメッセージを取得し、取得したメッセージを含むエントリを削除して、メッセージキュー１１００を更新する。Ｓ２２１３において制御部１８０１は、ＡＰＩ実行結果に、メッセージキュー１１００から取得したメッセージを格納し、本動作フローは終了する。
【０１０３】
また、例えば、Ｓ２２０１〜Ｓ２２０９までの処理において、制御部１８０１が認証部１８１３からの割り込みを受けた場合、フローはＳ２２１４に進み、制御部１８０１は、ＡＰＩ実行結果に、認証エラーを設定し、本動作フローは終了する。
【０１０４】
以上で述べた様に、メッセージ処理装置１０１に、認証サーバ１０３、及びデータサーバ１０４の機能を備えさせて、処理を実行することができる。
【０１０５】
第２の実施形態では、制御部１８０１は、メッセージと、メッセージの格納先のメッセージキューを識別するための識別情報とを含むメッセージ送信ＡＰＩを情報処理装置１０２から受信すると、記憶部１８０２の記憶エリア情報２３００を参照する。そして、制御部１８０１は、識別情報と対応する記憶エリアを特定する。続いて、制御部１８０１は、特定した記憶エリアに記憶されているメッセージキューに、受信したメッセージを記憶させる。また、それと共に、制御部１８０１は、情報処理装置１０２が、特定したメッセージキューにメッセージを記憶させる権限を有するか否かの認証を行う。そして、制御部１８０１は、権限を有する場合、特定したメッセージキューに記憶されたメッセージに対応付けて認証済みのマークを記憶する。そのため、第２の実施形態においても、メッセージキューの送信にかかる時間を短縮することができる。なお、Ｓ１９０６の処理において、制御部１８０１は、例えば、記憶制御部１８１１として動作する。
【０１０６】
また、第２の実施形態では、制御部１８０１は、メッセージの格納先のメッセージキューを識別するための識別情報を含むメッセージ受信ＡＰＩを情報処理装置１０２から受信すると、記憶部１８０２の記憶エリア情報２３００を参照する。そして、制御部１８０１は、識別情報と対応する記憶エリアに記憶されているメッセージキューを特定する。また、それと共に、制御部１８０１は、情報処理装置１０２が、特定したメッセージキューに記憶されたメッセージを取得する権限を有するか否かの認証を行う。制御部１８０１は、権限を有する場合、特定したメッセージキューに記憶されたメッセージを取得する。そのため、第２の実施形態においても、メッセージキューの受信にかかる時間を短縮することができる。なお、図２２のＳ２２１２において制御部１８０１は、取得部１８１２として動作する。
【０１０７】
従って、第２の実施形態によれば、メッセージキューシステム１７００の処理性能を向上させることができる。
【０１０８】
以上において、実施形態を例示したが、実施形態はこれに限定されるものではない。例えば、上述の動作フローは例示であり、実施形態はこれに限定されるものではない。可能な場合には、動作フローは、処理の順番を変更して実行されてもよく、別に更なる処理を含んでもよく、又は、一部の処理が省略されてもよい。例えば、図１３のＳ１３０７とＳ１３０８の処理、Ｓ１５０６とＳ１５０７の処理は、順序を入れ替えて実行されてもよい。
【０１０９】
図２４は、実施形態に係るメッセージ処理装置１０１を実現するためのコンピュータ２４００のハードウェア構成を例示する図である。なお、例えば、情報処理装置１０２、認証サーバ１０３、及びデータサーバ１０４も、同様に、図２４のハードウェア構成を有していてもよい。図２４のコンピュータ２４００のハードウェア構成は、例えば、プロセッサ２４０１、メモリ２４０２、記憶装置２４０３、読取装置２４０４、通信インタフェース２４０６、及び入出力インタフェース２４０７を備える。なお、プロセッサ２４０１、メモリ２４０２、記憶装置２４０３、読取装置２４０４、通信インタフェース２４０６、入出力インタフェース２４０７は、例えば、バス２４０８を介して互いに接続されている。
【０１１０】
プロセッサ２４０１は、メモリ２４０２を利用して例えば上述の動作フローの手順を記述したプログラムを実行することにより、上述した制御部３０１、又は制御部１８０１の一部または全部の機能を提供する。また、記憶部３０２、又は記憶部１８０２は、例えばメモリ２４０２、記憶装置２４０３、及び着脱可能記憶媒体２４０５を含んでいる。メッセージ処理装置１０１のプロセッサ２４０１は、例えば、記憶装置２４０３に格納されているプログラムを読み出して実行することで、操作部３１１、認証部３１２、依頼部３２１、出力部３２２、判定部３２３、及び取得部３２４として動作してよい。また、プロセッサ２４０１は、例えば、記憶装置２４０３に格納されているプログラムを読み出して実行することで、記憶制御部１８１１、取得部１８１２、及び認証部１８１３として動作してよい。メッセージ処理装置１０１の記憶装置２４０３には、例えば、キャッシュ１２００が記憶されていてよい。また、例えば、データサーバ１０４の記憶装置２４０３には、メッセージキュー１１００が記憶されていてよい。或いは、メッセージ処理装置１０１の記憶装置２４０３には、例えば、メッセージキュー１１００、キャッシュ１２００、及び記憶エリア情報２３００が記憶されていてもよい。
【０１１１】
メモリ２４０２は、例えば半導体メモリであり、ＲＡＭ領域及びＲＯＭ領域を含んでいてよい。記憶装置２４０３は、例えばハードディスク、フラッシュメモリ等の半導体メモリ、又は外部記憶装置である。なお、ＲＡＭは、Random Access Memoryの略称である。また、ＲＯＭは、Read Only Memoryの略称である。
【０１１２】
読取装置２４０４は、プロセッサ２４０１の指示に従って着脱可能記憶媒体２４０５にアクセスする。着脱可能記憶媒体２４０５は、例えば、半導体デバイス（ＵＳＢメモリ等）、磁気的作用により情報が入出力される媒体（磁気ディスク等）、光学的作用により情報が入出力される媒体（ＣＤ−ＲＯＭ、ＤＶＤ等）などにより実現される。なお、ＵＳＢは、Universal Serial Busの略称である。ＣＤは、Compact Discの略称である。ＤＶＤは、Digital Versatile Diskの略称である。
【０１１３】
通信インタフェース２４０６は、プロセッサ２４０１の指示に従ってネットワーク２４２０を介してデータを送受信する。通信部３０３は、例えば、通信インタフェース２４０６であってよい。入出力インタフェース２４０７は、例えば、入力装置及び出力装置との間のインタフェースであってよい。入力装置は、例えばユーザからの指示を受け付けるキーボードやマウスなどのデバイスである。出力装置は、例えばディスプレーなどの表示装置、及びスピーカなどの音声装置である。
【０１１４】
実施形態に係る各プログラムは、例えば、下記の形態でメッセージ処理装置１０１に提供される。
（１）記憶装置２４０３に予めインストールされている。
（２）着脱可能記憶媒体２４０５により提供される。
（３）プログラムサーバなどのサーバ２４３０から提供される。 
【０１１５】
なお、図２４を参照して述べたメッセージ処理装置１０１を実現するためのコンピュータ２４００のハードウェア構成は、例示であり、実施形態はこれに限定されるものではない。例えば、上述の機能部の一部または全部の機能がＦＰＧＡ及びＳｏＣなどによるハードウェアとして実装されてもよい。なお、ＦＰＧＡは、Field Programmable Gate Arrayの略称である。ＳｏＣは、System-on-a-chipの略称である。
【０１１６】
以上において、いくつかの実施形態が説明される。しかしながら、実施形態は上記の実施形態に限定されるものではなく、上述の実施形態の各種変形形態及び代替形態を包含するものとして理解されるべきである。例えば、各種実施形態は、その趣旨及び範囲を逸脱しない範囲で構成要素を変形して具体化できることが理解されよう。また、前述した実施形態に開示されている複数の構成要素を適宜組み合わせることにより、種々の実施形態が実施され得ることが理解されよう。更には、実施形態に示される全構成要素からいくつかの構成要素を削除して又は置換して、或いは実施形態に示される構成要素にいくつかの構成要素を追加して種々の実施形態が実施され得ることが当業者には理解されよう。
【符号の説明】
【０１１７】
１００      メッセージキューシステム
１０１      メッセージ処理装置
１０２      情報処理装置
１０３      認証サーバ
１０４      データサーバ
３０１      制御部
３０２      記憶部
３０３      通信部
３１１      操作部
３１２      認証部
３２１      依頼部
３２２      出力部
３２３      判定部
３２４      取得部
１８０１    制御部
１８０２    記憶部
１８０３    通信部
１８１１    記憶制御部
１８１２    取得部
１８１３    認証部
２４００    コンピュータ
２４０１    プロセッサ
２４０２    メモリ
２４０３    記憶装置
２４０４    読取装置
２４０５    着脱可能記憶媒体
２４０６    通信インタフェース
２４０７    入出力インタフェース
２４０８    バス
【図１】
2018005744.tif 000003
【図２】
2018005744.tif 000004
【図３】
2018005744.tif 000005
【図４】
2018005744.tif 000006
【図５】
2018005744.tif 000007
【図６】
2018005744.tif 000008
【図７】
2018005744.tif 000009
【図８】
2018005744.tif 000010
【図９】
2018005744.tif 000011
【図１０】
2018005744.tif 000012
【図１１】
2018005744.tif 000013
【図１２】
2018005744.tif 000014
【図１３】
2018005744.tif 000015
【図１４】
2018005744.tif 000016
【図１５】
2018005744.tif 000017
【図１６】
2018005744.tif 000018
【図１７】
2018005744.tif 000019
【図１８】
2018005744.tif 000020
【図１９】
2018005744.tif 000021
【図２０】
2018005744.tif 000022
【図２１】
2018005744.tif 000023
【図２２】
2018005744.tif 000024
【図２３】
2018005744.tif 000025
【図２４】
2018005744.tif 000026