(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023017187
(43)【公開日】2023-02-07
(54)【発明の名称】情報処理システム、情報処理方法、振分装置、通知装置、振分プログラム及び通知プログラム
(51)【国際特許分類】
G06F 8/77 20180101AFI20230131BHJP
【FI】
G06F8/77
【審査請求】未請求
【請求項の数】15
【出願形態】OL
(21)【出願番号】P 2021121259
(22)【出願日】2021-07-26
(71)【出願人】
【識別番号】506301140
【氏名又は名称】公立大学法人会津大学
(74)【代理人】
【識別番号】100094525
【弁理士】
【氏名又は名称】土井 健二
(74)【代理人】
【識別番号】100094514
【弁理士】
【氏名又は名称】林 恒徳
(72)【発明者】
【氏名】渡部 有隆
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376BA01
5B376BA11
5B376BC69
(57)【要約】 (修正有)
【課題】プログラムコードについての評価結果のフィードバックに要する時間を短縮する情報処理システム、情報処理方法、振分装置、通知装置、振分プログラム及び通知プログラムを提供する。
【解決手段】方法は、新たなプログラムコードを受け付けた場合、プログラムコードの評価を行う複数の評価装置のそれぞれに対応する複数のキューのいずれかに格納されているプログラムコード毎に、各プログラムコードに対応する問題について各プログラムコードを作成したユーザが過去に作成した第1のプログラムコードについての第1の評価結果と、各プログラムコードに対応する問題について各プログラムコードに対応するプログラミング言語を用いて過去に作成された第2のプログラムコードについての第2の評価結果とを算出し、第1の評価結果と第2の評価結果とに基づいて、新たなプログラムコードを格納する第1のキューを複数のキューから特定し、格納する。
【選択図】
図8
【特許請求の範囲】
【請求項1】
ユーザが作成したプログラムコードの評価をそれぞれ行う複数の評価装置と、
前記複数の評価装置のそれぞれに対応する複数のキューと、
前記プログラムコードを前記複数のキューのうちのいずれかに振り分ける振分装置と、
前記複数のキューのいずれかに格納されている前記プログラムコードに関する情報を前記プログラムコードの送信元に通知する通知装置と、を有する情報処理システムであって、
前記振分装置は、
新たなプログラムコードを受け付けた場合、前記複数のキューのいずれかに格納されているプログラムコードごとに、各プログラムコードに対応する問題について各プログラムコードを作成したユーザが過去に作成した第1のプログラムコードについての前記複数の評価装置による第1の評価結果と、各プログラムコードに対応する問題について各プログラムコードに対応するプログラミング言語を用いて過去に作成された第2のプログラムコードについての前記複数の評価装置による第2の評価結果とを算出し、
前記複数のキューのいずれかに格納されているプログラムコードごとの前記第1の評価結果と前記第2の評価結果とに基づいて、前記新たなプログラムコードを格納する第1のキューを前記複数のキューから特定し、
特定した前記第1のキューに対して前記新たなプログラムコードを格納し、
前記通知装置は、特定した前記第1のキューに格納された前記新たなプログラムコードに関する情報を、前記新たなプログラムコードを生成したユーザに対応する通知先に通知する、
ことを特徴とする情報処理システム。
【請求項2】
請求項1において、
前記振分装置は、
前記第1のキューに格納されているプログラムコードごとに、各プログラムコードに対応する前記第1の評価結果と、各プログラムコードに対応する前記第2の評価結果とを算出し、
前記第1のキューに格納されているプログラムコードごとの前記第1の評価結果と前記第2の評価結果とに基づいて、前記新たなプログラムコードに関する情報を生成する、
ことを特徴とする情報処理システム。
【請求項3】
請求項2において、
前記第1の評価結果は、前記第1のプログラムコードの評価に要した第1の時間であり、
前記第2の評価結果は、前記第2のプログラムコードの評価に要した第2の時間である、
ことを特徴とする情報処理システム。
【請求項4】
請求項3において、
前記第1の時間は、前記第1のプログラムコードの実行に要した時間の最大値または平均値であり、
前記第2の時間は、前記第2のプログラムコードの実行に要した時間の最大値または平均値である、
ことを特徴とする情報処理システム。
【請求項5】
請求項3において、
前記振分装置は、
前記複数のキューのいずれかに格納されているプログラムコードごとに、各プログラムコードに対応する前記第1の時間と前記第2の時間とに基づいて、各プログラムコードの実行に要する時間の予測時間を算出し、
前記複数のキューごとに、各キューに格納されているプログラムコードに対応する前記予測時間の合計時間を算出し、
前記複数のキューのうち、前記合計時間が最も短いキューを前記第1のキューとして特定する、
ことを特徴とする情報処理システム。
【請求項6】
請求項5において、
前記振分装置は、前記複数のキューのいずれかに格納されているプログラムコードごとに、各プログラムコードに対応する前記第1の時間と前記第2の時間とのうちの長い方の時間を、各プログラムコードに対応する前記予測時間として算出する、
ことを特徴とする情報処理システム。
【請求項7】
請求項3において、
前記振分装置は、
前記第1のキューに格納されているプログラムコードごとに、各プログラムコードに対応する前記第1の時間と前記第2の時間とに基づいて、各プログラムコードの実行に要する時間の予測時間を算出し、
前記新たなプログラムコードに対応する前記予測時間と前記新たなプログラムコードの前に格納されている1以上のプログラムコードのそれぞれに対応する前記予測時間との合計時間を算出し、
算出した前記合計時間を含む情報を、前記新たなプログラムコードに関する情報として通知する、
ことを特徴とする情報処理システム。
【請求項8】
請求項1において、
前記通知装置は、前記第1のキューにおいて前記新たなプログラムコードの前に格納されているプログラムコードの数を、前記新たなプログラムコードに関する情報として通知する、
ことを特徴とする情報処理システム。
【請求項9】
請求項1において、
前記通知装置は、複数のテストデータを用いることによる前記新たなプログラムコードの評価が前記複数の評価装置のうちの前記第1のキューに対応する第1の評価装置において行われる場合において、前記複数のテストデータに含まれる特定のテストデータを用いることによる前記新たなプログラムコードの評価が前記第1の評価装置において終了した場合、前記特定のテストデータを用いることによる前記新たなプログラムコードの評価が前記第1の評価装置において終了したことを示す情報を、前記新たなプログラムコードに関する情報として通知する、
ことを特徴とする情報処理システム。
【請求項10】
請求項1において、
前記通知装置は、前記第1のキューにおける各プログラムコードの格納状況を示す情報を前記通知先に通知する、
ことを特徴とする情報処理システム。
【請求項11】
ユーザが作成したプログラムコードの評価をそれぞれ行う複数の評価装置と、前記複数の評価装置のそれぞれに対応する複数のキューと、前記プログラムコードを前記複数のキューのうちのいずれかに振り分ける振分装置と、前記複数のキューのいずれかに格納されている前記プログラムコードに関する情報を前記プログラムコードの送信元に通知する通知装置と、を有する情報処理システムにおける情報処理方法であって、
前記振分装置が、
新たなプログラムコードを受け付けた場合、前記複数のキューのいずれかに格納されているプログラムコードごとに、各プログラムコードに対応する問題について各プログラムコードを作成したユーザが過去に作成した第1のプログラムコードについての前記複数の評価装置による第1の評価結果と、各プログラムコードに対応する問題について各プログラムコードに対応するプログラミング言語を用いて過去に作成された第2のプログラムコードについての前記複数の評価装置による第2の評価結果とを算出し、
前記複数のキューのいずれかに格納されているプログラムコードごとの前記第1の評価結果と前記第2の評価結果とに基づいて、前記新たなプログラムコードを格納する第1のキューを前記複数のキューから特定し、
特定した前記第1のキューに対して前記新たなプログラムコードを格納し、
前記通知装置が、特定した前記第1のキューに格納された前記新たなプログラムコードに関する情報を、前記新たなプログラムコードを生成したユーザに対応する通知先に通知する、
ことを特徴とする情報処理方法。
【請求項12】
新たなプログラムコードを受け付けた場合、ユーザが作成したプログラムコードの評価をそれぞれ行う複数の評価装置のそれぞれに対応する複数のキューのいずれかに格納されているプログラムコードごとに、各プログラムコードに対応する問題について各プログラムコードを作成したユーザが過去に作成した第1のプログラムコードについての前記複数の評価装置による第1の評価結果と、各プログラムコードに対応する問題について各プログラムコードに対応するプログラミング言語を用いて過去に作成された第2のプログラムコードについての前記複数の評価装置による第2の評価結果とを算出する結果算出部と、
前記複数のキューのいずれかに格納されているプログラムコードごとの前記第1の評価結果と前記第2の評価結果とに基づいて、前記新たなプログラムコードを格納する第1のキューを前記複数のキューから特定するキュー特定部と、
特定した前記第1のキューに対して前記新たなプログラムコードを格納するコード格納部と、を有する、
ことを特徴とする振分装置。
【請求項13】
ユーザが作成したプログラムコードの評価をそれぞれ行う複数の評価装置のそれぞれに対応する複数のキューに含まれる第1のキューに格納されているプログラムコードごとに、各プログラムコードに対応する問題について各プログラムコードを作成したユーザが過去に作成した第1のプログラムコードについての前記複数の評価装置による第1の評価結果と、各プログラムコードに対応する問題について各プログラムコードに対応するプログラミング言語を用いて過去に作成された第2のプログラムコードについての前記複数の評価装置による第2の評価結果とを算出する結果算出部と、
前記第1のキューに格納されているプログラムコードごとの前記第1の評価結果と前記第2の評価結果とに基づいて、前記第1のキューに格納されているプログラムコードのうちの特定のプログラムコードに関する情報を生成する情報生成部と、
生成した前記特定のプログラムコードに関する情報を、前記特定のプログラムコードを生成したユーザに対応する通知先に通知する情報通知部と、を有する、
ことを特徴とする通知装置。
【請求項14】
新たなプログラムコードを受け付けた場合、ユーザが作成したプログラムコードの評価をそれぞれ行う複数の評価装置のそれぞれに対応する複数のキューのいずれかに格納されているプログラムコードごとに、各プログラムコードに対応する問題について各プログラムコードを作成したユーザが過去に作成した第1のプログラムコードについての前記複数の評価装置による第1の評価結果と、各プログラムコードに対応する問題について各プログラムコードに対応するプログラミング言語を用いて過去に作成された第2のプログラムコードについての前記複数の評価装置による第2の評価結果とを算出し、
前記複数のキューのいずれかに格納されているプログラムコードごとの前記第1の評価結果と前記第2の評価結果とに基づいて、前記新たなプログラムコードを格納する第1のキューを前記複数のキューから特定し、
特定した前記第1のキューに対して前記新たなプログラムコードを格納する、
処理をコンピュータに実行させることを特徴とする振分プログラム。
【請求項15】
ユーザが作成したプログラムコードの評価をそれぞれ行う複数の評価装置のそれぞれに対応する複数のキューに含まれる第1のキューに格納されているプログラムコードごとに、各プログラムコードに対応する問題について各プログラムコードを作成したユーザが過去に作成した第1のプログラムコードについての前記複数の評価装置による第1の評価結果と、各プログラムコードに対応する問題について各プログラムコードに対応するプログラミング言語を用いて過去に作成された第2のプログラムコードについての前記複数の評価装置による第2の評価結果とを算出し、
前記第1のキューに格納されているプログラムコードごとの前記第1の評価結果と前記第2の評価結果とに基づいて、前記第1のキューに格納されているプログラムコードのうちの特定のプログラムコードに関する情報を生成し、
生成した前記特定のプログラムコードに関する情報を、前記特定のプログラムコードを生成したユーザに対応する通知先に通知する、
処理をコンピュータに実行させることを特徴とする通知プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理システム、情報処理方法、振分装置、通知装置、振分プログラム及び通知プログラムに関する。
【背景技術】
【0002】
近年、ユーザに対するプログラミング教育を支援するツールとして、プログラムコードの評価を自動的に行うことが可能な評価装置が広く利用されている。
【0003】
このような評価装置は、例えば、評価対象のプログラムコードの提出を受け付けると、受け付けたプログラムコードのコンパイル及び実行を行うことによって、そのプログラムコードについての評価を行う。そして、評価装置は、例えば、受け付けたプログラムコードについての評価結果をユーザ(例えば、受け付けたプログラムコードの作成者)に対してフィードバックする。
【0004】
これにより、ユーザは、例えば、評価装置からのフィードバックを参照することで、プログラミング能力の向上を図ることが可能になる(特許文献1乃至2及び非特許文献1乃至2参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】米国特許第10303517号明細書
【特許文献2】中国特許出願公開第109508293号明細書
【非特許文献】
【0006】
【非特許文献1】オンラインジャッジの開発と運用, IPSJ Magazine, Vol.56, No.10, P998-1005,2015.
【非特許文献2】Online Automatic Assessment System for Program Code:Architecture and Experiences,IEA/AIE 2021
【発明の概要】
【発明が解決しようとする課題】
【0007】
ここで、上記のような評価装置は、評価対象のプログラムコードの提出を受け付けた場合、受け付けたプログラムコードについての評価結果のフィードバックを迅速に行うことが好ましい。そのため、評価装置の管理者は、例えば、複数の評価装置を並行に動作させるとともに、評価対象のプログラムコードを複数の評価装置に振り分ける振分装置を動作させる。これにより、例えば、多くのプログラムコードが提出された場合であっても、プログラムコードについての評価結果のフィードバックを迅速に行うことが可能になる。
【0008】
しかしながら、上記のように、プログラムコードの評価を複数の評価装置が分担して行う場合であっても、複数の評価装置に対するプログラムコードの振分方法が適切でない場合、他の評価装置よりも多くのプログラムコードが振り分けられる評価装置が発生し、ユーザに対する評価結果のフィードバックに長い時間を要するケースが発生する。
【0009】
そこで、本発明の目的は、プログラムコードについての評価結果のフィードバックに要する時間を短縮することを可能とする情報処理システム、情報処理方法、振分装置、通知装置、振分プログラム及び通知プログラムを提供することにある。
【課題を解決するための手段】
【0010】
上記目的を達成するための本発明における情報処理システムは、ユーザが作成したプログラムコードの評価をそれぞれ行う複数の評価装置と、前記複数の評価装置のそれぞれに対応する複数のキューと、前記プログラムコードを前記複数のキューのうちのいずれかに振り分ける振分装置と、前記複数のキューのいずれかに格納されている前記プログラムコードに関する情報を前記プログラムコードの送信元に通知する通知装置と、を有する情報処理システムであって、前記振分装置は、新たなプログラムコードを受け付けた場合、前記複数のキューのいずれかに格納されているプログラムコードごとに、各プログラムコードに対応する問題について各プログラムコードを作成したユーザが過去に作成した第1のプログラムコードについての前記複数の評価装置による第1の評価結果と、各プログラムコードに対応する問題について各プログラムコードに対応するプログラミング言語を用いて過去に作成された第2のプログラムコードについての前記複数の評価装置による第2の評価結果とを算出し、前記複数のキューのいずれかに格納されているプログラムコードごとの前記第1の評価結果と前記第2の評価結果とに基づいて、前記新たなプログラムコードを格納する第1のキューを前記複数のキューから特定し、特定した前記第1のキューに対して前記新たなプログラムコードを格納し、前記通知装置は、特定した前記第1のキューに格納された前記新たなプログラムコードに関する情報を、前記新たなプログラムコードを生成したユーザに対応する通知先に通知する。
【発明の効果】
【0011】
本発明における情報処理システム、情報処理方法、振分装置、通知装置、振分プログラム及び通知プログラムによれば、プログラムコードについての評価結果のフィードバックに要する時間を短縮することが可能になる。
【図面の簡単な説明】
【0012】
【
図1】
図1は、第1の実施の形態における情報処理システム10の構成例を示す図である。
【
図2】
図2は、第1の実施の形態における振分装置1の構成例を示す図である。
【
図3】
図3は、第1の実施の形態における振分装置1のハードウエア構成例を示す図である。
【
図4】
図4は、第1の実施の形態における通知装置2のハードウエア構成例を示す図である。
【
図5】
図5は、第1の実施の形態における評価装置3のハードウエア構成例を示す図である。
【
図6】
図6は、第1の実施の形態におけるコード振分処理の概略を説明する図である。
【
図7】
図7は、第1の実施の形態における情報通知処理の概略を説明する図である。
【
図8】
図8は、第1の実施の形態におけるコード振分処理の詳細を説明するフローチャート図である。
【
図9】
図9は、第1の実施の形態における情報通知処理の詳細を説明するフローチャート図である。
【
図10】
図10は、第1の実施の形態における情報通知処理の詳細を説明するフローチャート図である。
【
図11】
図11は、第1の実施の形態における情報通知処理の詳細を説明するフローチャート図である。
【
図12】
図12は、第1の実施の形態における情報通知処理の詳細を説明する図である。
【発明を実施するための形態】
【0013】
以下、図面を参照して本発明の実施の形態について説明する。しかしながら、かかる実施の形態例が、本発明の技術的範囲を限定するものではない。
【0014】
[情報処理システム10の構成]
初めに、第1の実施の形態における情報処理システム10の構成例について説明を行う。
図1は、第1の実施の形態における情報処理システム10の構成例を示す図である。また、
図2は、第1の実施の形態における振分装置1の構成例を示す図である。
【0015】
情報処理システム10は、
図1に示すように、例えば、振分装置1と、通知装置2と、評価装置3a、3b及び3cと、ユーザ端末5a、5b及び5cとを有する。また、振分装置1は、
図2に示すように、各処理を行う処理部1aと、評価装置3a、3b及び3cのそれぞれに対応するキュー4a、4b及び4cとを有する。以下、評価装置3a、3b及び3cを総称して評価装置3とも呼び、キュー4a、4b及び4cを総称してキュー4とも呼び、ユーザ端末5a、5b及び5cを総称してユーザ端末5とも呼ぶ。また、以下、情報処理システム10が3台の評価装置3と3台のユーザ端末5とを有する場合について説明を行うが、情報処理システム10は、これ以外の台数の評価装置3及びユーザ端末5を有するものであってもよい。
【0016】
ユーザ端末5は、例えば、各ユーザが有するPC(Personal Computer)やスマートフォン等のモバイル端末である。そして、ユーザは、例えば、ユーザ端末5を介して、予め指定された問題(以下、単に問題とも呼ぶ)について作成したプログラムコードを振分装置1に対して送信する。
【0017】
振分装置1は、例えば、ユーザ端末5から送信されたプログラムコードを振り分ける評価装置3を決定する。そして、振分装置1は、例えば、決定した評価装置3に対応するキュー4に対して、ユーザ端末5から送信されたプログラムコードを格納する。
【0018】
評価装置3は、例えば、自装置に対応するキュー4に格納されたプログラムコードを格納順に振分装置1から受信する。そして、評価装置3は、例えば、受信したプログラムコードについての評価を行う。具体的に、評価装置3は、例えば、受信したプログラムコードのコンパイル及び実行を行うことによって、受信したプログラムコードについての評価を行う。その後、評価装置3は、例えば、受信したプログラムコードについての評価結果を、受信したプログラムコードを送信したユーザ端末5に対して送信する。プログラムコードについての評価結果は、例えば、プログラムコードの正誤情報やプログラムコードの実行に伴うリソースの使用量(例えば、CPU使用量やメモリ使用量等)についての情報である。
【0019】
通知装置2は、例えば、キュー4に格納された各プログラムコードについての評価が完了するまでに要する残り時間(以下、待ち時間とも呼ぶ)を含む情報を、各プログラムコードを作成したユーザに通知する。具体的に、通知装置2は、例えば、キュー4に格納された各プログラムコードについての評価の待ち時間を含む情報を振分装置1からそれぞれ取得する。そして、通知装置2は、例えば、振分装置1から取得した情報のそれぞれを、各プログラムコードを送信したユーザ端末5に対してそれぞれ送信する。また、通知装置2は、例えば、評価装置3によって評価が行われた各プログラムコードについての評価結果を、各プログラムコードを送信したユーザ端末5に対して送信する。
【0020】
[振分装置1のハードウエア構成]
次に、第1の実施の形態における振分装置1のハードウエア構成例について説明を行う。
図3は、第1の実施の形態における振分装置1のハードウエア構成例を示す図である。
【0021】
振分装置1は、コンピュータ装置であって、例えば、汎用的なPC(Personal Computer)やサーバ装置である。そして、振分装置1は、例えば、ユーザ端末5から送信されたプログラムコードを評価装置3に振り分ける処理(以下、コード振分処理とも呼ぶ)を含む各種の処理を行う。
【0022】
振分装置1は、汎用的なコンピュータ装置のハードウエア構成を有し、例えば、
図3に示すように、プロセッサであるCPU101と、メモリ102と、通信インタフェース103と、記憶媒体104とを有する。各部は、バス105を介して互いに接続される。
【0023】
記憶媒体104は、例えば、コード振分処理を行うためのプログラム(図示しない)を記憶するプログラム格納領域(図示しない)を有する。
【0024】
また、記憶媒体104は、例えば、コード振分処理を行う際に用いられる情報を記憶する記憶部110(以下、記憶領域110とも呼ぶ)を有する。なお、記憶媒体104は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)であってよい。
【0025】
CPU101は、記憶媒体104からメモリ102にロードされたプログラムを実行してコード振分処理を行う。
【0026】
通信インタフェース103は、例えば、評価装置3と通信を行う。また、通信インタフェース103は、例えば、インターネット網等のネットワークNWを介してユーザ端末5と通信を行う。
【0027】
[通知装置2のハードウエア構成]
次に、第1の実施の形態における通知装置2のハードウエア構成例について説明を行う。
図4は、第1の実施の形態における通知装置2のハードウエア構成例を示す図である。
【0028】
通知装置2は、コンピュータ装置であって、例えば、汎用的なPCやサーバ装置である。そして、通知装置2は、例えば、キュー4に格納された各プログラムコードについての評価の進捗状況を示す情報を通知する処理(以下、情報通知処理とも呼ぶ)を含む各種の処理を行う。
【0029】
通知装置2は、汎用的なコンピュータ装置のハードウエア構成を有し、例えば、
図4に示すように、プロセッサであるCPU201と、メモリ202と、通信インタフェース203と、記憶媒体204とを有する。各部は、バス205を介して互いに接続される。
【0030】
記憶媒体204は、例えば、情報通知処理を行うためのプログラム(図示しない)を記憶するプログラム格納領域(図示しない)を有する。
【0031】
また、記憶媒体204は、例えば、情報通知処理を行う際に用いられる情報を記憶する記憶部210(以下、記憶領域210とも呼ぶ)を有する。なお、記憶媒体204は、例えば、HDDやSSDであってよい。
【0032】
CPU201は、記憶媒体204からメモリ202にロードされたプログラムを実行して情報通知処理を行う。
【0033】
通信インタフェース203は、例えば、評価装置3と通信を行う。また、通信インタフェース203は、例えば、インターネット網等のネットワークNWを介してユーザ端末5と通信を行う。
【0034】
[評価装置3のハードウエア構成]
次に、第1の実施の形態における評価装置3のハードウエア構成例について説明を行う。
図5は、第1の実施の形態における評価装置3のハードウエア構成例を示す図である。
【0035】
評価装置3は、コンピュータ装置であって、例えば、汎用的なPCやサーバ装置である。そして、評価装置3は、汎用的なコンピュータ装置のハードウエア構成を有し、例えば、
図5に示すように、プロセッサであるCPU301と、メモリ302と、通信インタフェース303と、記憶媒体304とを有する。各部は、バス305を介して互いに接続される。
【0036】
記憶媒体304は、例えば、各種の処理を行うためのプログラム(図示しない)を記憶するプログラム格納領域(図示しない)を有する。
【0037】
また、記憶媒体304は、例えば、各種の処理を行う際に用いられる情報を記憶する記憶部310(以下、記憶領域310とも呼ぶ)を有する。なお、記憶媒体304は、例えば、HDDやSSDであってよい。
【0038】
CPU301は、記憶媒体304からメモリ302にロードされたプログラムを実行して各種の処理を行う。
【0039】
通信インタフェース303は、例えば、振分装置1及び通知装置2と通信を行う。
【0040】
[第1の実施の形態の概略]
図6は、第1の実施の形態におけるコード振分処理の概略を説明する図である。また、
図7は、第1の実施の形態における情報通知処理の概略を説明する図である。
【0041】
初めに、第1の実施の形態におけるコード振分処理の概略について説明を行う。
【0042】
振分装置1のコード受付部111は、
図6に示すように、例えば、ユーザ端末5から送信されたプログラムコードを受け付ける。
【0043】
振分装置1の時間算出部112(以下、結果算出部112とも呼ぶ)は、例えば、キュー4のいずれかに格納されているプログラムコードごとに、各プログラムコードに対応する問題について各プログラムコードを作成したユーザが過去に作成したプログラムコード(以下、第1のプログラムコードとも呼ぶ)についての評価装置3による評価結果(以下、第1の評価結果とも呼ぶ)を算出する。
【0044】
具体的に、時間算出部112は、例えば、例えば、キュー4のいずれかに格納されているプログラムコードごとに、各プログラムコードに対応する第1のプログラムコードの評価(実行)に要した時間(以下、第1の時間とも呼ぶ)を第1の評価結果として算出する。
【0045】
また、時間算出部112は、例えば、キュー4のいずれかに格納されているプログラムコードごとに、各プログラムコードに対応する問題について各プログラムコードに対応するプログラミング言語を用いて過去に作成されたプログラムコード(以下、第2のプログラムコードとも呼ぶ)についての評価装置3による評価結果(以下、第2の評価結果とも呼ぶ)を算出する。
【0046】
具体的に、時間算出部112は、例えば、例えば、キュー4のいずれかに格納されているプログラムコードごとに、各プログラムコードに対応する第2のプログラムコードの評価(実行)に要した時間(以下、第2の時間とも呼ぶ)を第2の評価結果として算出する。
【0047】
そして、時間算出部112は、例えば、キュー4のいずれかに格納されているプログラムコードごとに、各プログラムコードに対応する第1の時間と第2の時間とのうちの長い方を各プログラムコードの評価(実行)に要する予測時間(以下、単に予測時間とも呼ぶ)として算出する。
【0048】
さらに、時間算出部112は、例えば、キュー4ごとに、各キュー4に格納されているプログラムコードに対応する予測時間の合計時間(以下、第1予測待ち時間とも呼ぶ)を算出する。すなわち、時間算出部112は、例えば、コード受付部111が受け付けたプログラムコードを各キュー4に格納した場合における待ち時間の予測時間を第1予測待ち時間として算出する。
【0049】
また、時間算出部112は、例えば、キュー4のいずれかに格納されているプログラムコードごとに、各プログラムコードに対応する予測時間と各コードの前に格納されている1以上のプログラムコードのそれぞれに対応する予測時間との合計時間(以下、第2予測待ち時間とも呼ぶ)を算出する。すなわち、時間算出部112は、各キュー4に現在格納されている各プログラムコードについての待ち時間の予測時間を第2予測待ち時間として算出する。
【0050】
また、時間算出部112は、例えば、キュー4のいずれかに格納されているプログラムコードごとに、各プログラムコードが格納されているキュー4における格納順(到着順)を特定する。
【0051】
振分装置1のキュー特定部113は、例えば、キュー4のいずれかに格納されているプログラムコードごとの第1の評価結果と第2の評価結果とに基づいて、コード受付部111が受信した新たなプログラムコードを格納するキュー4(以下、第1のキュー4とも呼ぶ)を特定する。
【0052】
具体的に、キュー特定部113は、例えば、時間算出部112が算出した第1予測待ち時間が最も短いキュー4を、コード受付部111が受信したプログラムコードを格納するキュー4(第1のキュー4)として特定する。
【0053】
振分装置1のコード格納部114は、例えば、キュー特定部113が特定したキュー4に対して、コード受付部111が受信した新たなプログラムコード(以下、特定のプログラムコードとも呼ぶ)を格納する。
【0054】
次に、第1の実施の形態における情報通知処理の概略について説明を行う。
【0055】
通知装置2の情報取得部211は、
図7に示すように、例えば、評価中のプログラムコードについての評価の進捗状況を含む情報(以下、評価進捗情報とも呼ぶ)を評価装置3のそれぞれから取得する。評価進捗情報は、例えば、各プログラムコードについての評価が複数のテストデータを用いて行われる場合において、各テストデータを用いた評価が完了するごとに評価装置3から送信される情報である。
【0056】
また、情報取得部211は、例えば、振分装置1(時間算出部112)において算出された第2予測待ち時間を取得する。具体的に、情報取得部211は、例えば、振分装置1から通知された第2予測待ち時間を受信する。
【0057】
通知装置2の情報生成部212は、例えば、キュー4のいずれかに格納されているプログラムコードごとに、情報取得部211が取得した第2予測待ち時間を含む情報(以下、予測待ち時間情報とも呼ぶ)を生成する。
【0058】
通知装置2の情報通知部213は、例えば、評価装置3のそれぞれにおいて評価中のプログラムコードごとに、各プログラムコードについて情報取得部211が取得した評価進捗情報を、各プログラムコードを生成したユーザに対応する通知先に通知する。
【0059】
また、情報通知部213は、例えば、キュー4のいずれかに格納されているプログラムコードごとに、各プログラムコードについて情報生成部212が生成した予測待ち時間情報を、各プログラムコードを生成したユーザに対応する通知先に通知する。
【0060】
すなわち、本実施の形態における振分装置1は、各問題について作成されたプログラムコードのユーザごとの評価結果と、各問題について作成されたプログラムコードのプログラミング言語ごとの評価結果とを用いることによって、キュー4に格納されている各プログラムコードの評価についての待ち時間を予測する。
【0061】
これにより、本実施の形態における振分装置1は、キュー4に格納されている各プログラムコードについての評価の待ち時間を精度良く予測することが可能になる。そのため、振分装置1は、例えば、新たなプログラムコードを受け付けた場合、受け付けた新たなプログラムコードを、予測された待ち時間が最も短いキュー4に対して格納することが可能になる。したがって、振分装置1は、キュー4に格納されている各プログラムコードについての評価の待ち時間を短縮することが可能になる。
【0062】
特に、本実施の形態における情報処理システム10では、評価装置3ごとにキュー4が設けられているため、キュー4のそれぞれには、各キュー4に対応する評価装置3が評価を行うプログラムコードのみが格納される。したがって、本実施の形態における情報処理システム10において、各プログラムコードについての評価を行う評価装置3は、各プログラムコードをキュー4に格納した時点で決定されるものと考えることが可能である。また、各プログラムコードについての評価の待ち時間に影響を与えるプログラムコードは、各プログラムコードと同一のキュー4に格納された他のプログラムコードのみであると判断することが可能である。
【0063】
そのため、本実施の形態における振分装置1は、例えば、キュー4のうちの特定のキュー4に格納されている特定のプログラムコードに対応する待ち時間を予測する場合、特定のキュー4に格納されている各プログラムコードの評価に要する予測時間のみを用いることによって、特定のプログラムコードに対応する待ち時間を精度良く予測することが可能になる。したがって、本実施の形態における振分装置1は、例えば、各プログラムコードが1つのキューに格納されている場合と比較して、各プログラムコードに対応する待ち時間を予測するための処理負荷や、待ち時間の予測結果の変化を通知装置2に通知するための処理負荷を抑制することが可能になる。
【0064】
また、本実施の形態における通知装置2は、例えば、各キュー4に現在格納されている各プログラムコードに対応する評価進捗情報や予測待ち時間情報を、各プログラムコードを作成したユーザに対して随時送信する。
【0065】
これにより、本実施の形態における通知装置2は、例えば、各プログラムコードについての評価が終了したか否かを確認するための問合せ等の発生頻度を抑制することが可能になる。そのため、本実施の形態における通知装置2は、各ユーザによる利便性を高めるとともに、各ユーザからの問合せに伴う振分装置1の処理負荷を軽減させることが可能になる。
【0066】
[第1の実施の形態の詳細]
次に、第1の実施の形態におけるコード振分処理の詳細について説明を行う。
図8は、第1の実施の形態におけるコード振分処理の詳細を説明するフローチャート図である。また、
図9から
図11は、第1の実施の形態における情報通知処理の詳細を説明するフローチャート図である。さらに、
図12は、第1の実施の形態における情報通知処理の詳細を説明する図である。
【0067】
[コード振分処理]
初めに、第1の実施の形態におけるコード振分処理について説明を行う。
【0068】
コード受付部111は、
図8に示すように、例えば、ユーザ端末5から送信された新たなプログラムコードを受け付けるまで待機する(S11のNO)。
【0069】
そして、新たなプログラムコードを受け付けた場合(S11のYES)、時間算出部112は、例えば、キュー4のいずれかに格納されているプログラムコードごとに、各プログラムコードに対応する問題について各プログラムコードを作成したユーザが過去に作成したプログラムコード(第1のプログラムコード)の評価に要した時間(第1の時間)を算出する(S12)。また、時間算出部112は、この場合、例えば、キュー4のいずれかに格納されているプログラムコードごとに、各プログラムコードに対応する問題について各プログラムコードに対応するプログラミング言語を用いて過去に作成されたプログラムコード(第2のプログラムコード)の評価に要した時間(第2の時間)を算出する(S12)。
【0070】
具体的に、時間算出部112は、例えば、キュー4のいずれかに格納されているプログラムコードごとに、第1のプログラムコードの実行に要した時間の最大値または平均値を第1の時間として算出するものであってよい。また、時間算出部112は、例えば、キュー4のいずれかに格納されているプログラムコードごとに、第2のプログラムコードの実行に要した時間の最大値または平均値を第2の時間として算出するものであってもよい。
【0071】
また、時間算出部112は、例えば、キュー4のいずれかに格納されているプログラムコードごとに、ユーザによって直前に作成された第1のプログラムコードの実行に要した時間を第1の時間として算出するものであってよい。また、時間算出部112は、例えば、キュー4のいずれかに格納されているプログラムコードごとに、ユーザによって直前に作成された第2のプログラムコードの実行に要した時間を第2の時間として算出するものであってもよい。
【0072】
さらに具体的に、時間算出部112は、例えば、キュー4のいずれかに格納されているプログラムコードごとに、第1のプログラムコードの実行に要した時間の最大値を第1の時間として算出し、第2のプログラムコードの実行に要した時間の平均値を第2の時間として算出するものであってもよい。
【0073】
続いて、時間算出部112は、例えば、例えば、キュー4のいずれかに格納されているプログラムコードごとに、各プログラムコードに対応する第1の時間と第2の時間とのうちの長い方を各プログラムコードの評価に要する予測時間として算出する(S13)。
【0074】
これにより、振分装置1は、キュー4に格納されている各プログラムコードに対応する予測時間が過少評価されることの防止が可能になる。そのため、振分装置1は、後述するように、キュー4に格納されている各プログラムコードに対応する待ち時間が過少評価されることの防止が可能になる。
【0075】
さらに、時間算出部112は、例えば、キュー4ごとに、各キュー4に格納されているプログラムコードに対応する予測時間の合計時間(第1予測待ち時間)を算出する(S14)。
【0076】
すなわち、時間算出部112は、例えば、S11の処理で受け付けた新たなプログラムコードを各キュー4に格納した場合における第1予測待ち時間をそれぞれ算出する。
【0077】
なお、時間算出部112は、S14の処理において、例えば、キュー4のいずれかに格納されているプログラムコードごとに、各プログラムコードに対応する予測時間と各コードの前に格納されている1以上のプログラムコードのそれぞれに対応する予測時間との合計時間(第2予測待ち時間)を併せて算出する。
【0078】
その後、キュー特定部113は、キュー4のうち、S14の処理で算出した第1予測待ち時間が最も短いキュー4を、コード受付部111が受信したプログラムコードを格納するキュー4(第1のキュー4)として特定する(S15)。
【0079】
そして、コード格納部114は、例えば、S15の処理で特定したキュー4に対して、コード受付部111が受信したプログラムコードを格納する(S16)。
【0080】
これにより、振分装置1は、S11の処理で受け付けた新たなプログラムコードを、第1予測待ち時間が最も短いキュー4に格納することが可能になる。
【0081】
なお、時間算出部112は、例えば、キュー4に格納されているプログラムコードが取り出されるごとに(キュー4に格納されているプログラムコードの評価が評価装置3において終了するごとに)、S14の処理を行うものであってもよい。
【0082】
具体的に、時間算出部112は、この場合、例えば、前回のS14の処理において算出された第1予測待ち時間のうち、プログラムコードが取出されたキュー4に対応する第1予測待ち時間を特定する。そして、時間算出部112は、例えば、特定した第1予測待ち時間から、キュー4から取り出されたプログラムコードに対応する予測時間を減算することによって、プログラムコードが取出されたキュー4に対応する第1予測待ち時間を再算出(更新)する。同様に、時間算出部112は、この場合、前回のS14の処理において算出された第2予測待ち時間のうち、プログラムコードが取出されたキュー4に格納されている各プログラムコードに対応する第2予測待ち時間のそれぞれを特定する。そして、時間算出部112は、例えば、特定した第2予測待ち時間のそれぞれから、キュー4から取り出されたプログラムコードに対応する予測時間をそれぞれ減算することによって、プログラムコードが取出されたキュー4に格納されている各プログラムコードに対応する第2予測待ち時間を再算出(更新)する。
【0083】
また、時間算出部112は、例えば、S16の処理が行われた後、新たなプログラムコードについてのS12からS14の処理を行うものであってもよい。
【0084】
具体的に、時間算出部112は、この場合、例えば、S16の処理が行われた後、新たなプログラムコードについてのS12及びS13の処理を行うことによって、新たなプログラムコードに対応する予測時間を算出する。そして、時間算出部112は、例えば、前回のS14の処理において算出された第1予測待ち時間のうち、新たなプログラムコードの格納が行われたキュー4に対応する第1予測待ち時間を特定する。その後、時間算出部112は、例えば、特定した第1予測待ち時間に対して、新たなプログラムコードについて算出した予測時間を加算することによって、新たなプログラムコードの格納が行われたキュー4に対応する第1予測待ち時間を算出する。
【0085】
さらに、時間算出部112は、例えば、コード受付部111が新たなプログラムコードを受け付けた場合、S12からS14の処理を行わずに、前回のS14の処理において算出された第1予測待ち時間を用いてS15以降の処理を行うものであってもよい。
【0086】
これにより、振分装置1は、例えば、コード振分処理の実行に要する時間を短縮させることが可能になる。
【0087】
[情報通知処理]
次に、第1の実施の形態における情報通知処理について説明を行う。
【0088】
情報生成部212は、
図9に示すように、例えば、第1通知タイミングになるまで待機する(S21のNO)。第1通知タイミングは、例えば、振分装置1のコード受付部111が新たなプログラムを受け付けたタイミングであってよい。また、第1通知タイミングは、例えば、振分装置1のコード受付部111が新たなプログラムを受け付けたタイミングから所定時間が経過するごとのタイミングであってよい。また、第1通知タイミングは、例えば、キュー4からプログラムコードが取出されたタイミング(すなわち、プログラムコードの評価が評価装置3において終了したタイミング)であってよい。さらに、第1通知タイミングは、例えば、振分装置1のコード受付部111が受け付けた新たなプログラムコードがキュー4に格納されたタイミングであってよい。
【0089】
そして、第1通知タイミングになった場合(S21のYES)、情報生成部212は、例えば、キュー4のいずれかに格納されているプログラムコードごとに、振分装置1において特定された格納順を含む情報(以下、格納順情報とも呼ぶ)を生成する(S22)。
【0090】
具体的に、情報取得部211は、例えば、キュー4のいずれかに格納されている各プログラムコードについての格納順を振分装置1からそれぞれ受信する。そして、情報生成部212は、例えば、キュー4のいずれかに格納されているプログラムコードごとに、振分装置1から受信した格納順を含む格納順情報を生成する。
【0091】
その後、情報通知部213は、例えば、キュー4のいずれかに格納されているプログラムコードごとに、S22の処理で生成した格納順情報を通知先に通知する(S23)。
【0092】
具体的に、情報通知部213は、例えば、キュー4のいずれかに格納されているプログラムコードごとに、S22の処理で生成した格納順情報を、各プログラムコードを作成したユーザに対応する通知先(例えば、ユーザ端末5)に送信する。
【0093】
また、情報生成部212は、
図10に示すように、例えば、第2通知タイミングになるまで待機する(S31のNO)。第2通知タイミングは、例えば、第1通知タイミングと同様に、振分装置1のコード受付部111が新たなプログラムを受け付けたタイミングであってよい。また、第2通知タイミングは、例えば、第1通知タイミングと同様に、振分装置1のコード受付部111が新たなプログラムを受け付けたタイミングから所定時間が経過するごとのタイミングであってよい。また、第2通知タイミングは、例えば、第1通知タイミングと同様に、キュー4からプログラムコードが取出されたタイミング(すなわち、プログラムコードの評価が評価装置3において終了したタイミング)であってよい。さらに、第2通知タイミングは、例えば、第1通知タイミングと同様に、振分装置1のコード受付部111が受け付けた新たなプログラムコードがキュー4に格納されたタイミングであってよい。
【0094】
そして、第2通知タイミングになった場合(S31のYES)、情報生成部212は、例えば、キュー4のいずれかに格納されているプログラムコードごとに、振分装置1において算出された第2予測待ち時間を含む待ち時間情報を生成する(S32)。
【0095】
具体的に、情報取得部211は、例えば、キュー4のいずれかに格納されている各プログラムコードについての第2予測待ち時間を振分装置1からそれぞれ受信する。そして、情報生成部212は、例えば、キュー4のいずれかに格納されているプログラムコードごとに、振分装置1から受信した第2予測待ち時間を含む予測待ち時間情報を生成する。
【0096】
そして、情報通知部213は、例えば、キュー4のいずれかに格納されているプログラムコードごとに、S32の処理で生成した予測待ち時間情報を通知先に通知する(S33)。
【0097】
具体的に、情報通知部213は、例えば、キュー4のいずれかに格納されているプログラムコードごとに、S32の処理で生成した予測待ち時間情報を、各プログラムコードを作成したユーザに対応する通知先(例えば、ユーザ端末5)に送信する。
【0098】
また、情報生成部212は、例えば、評価中のプログラムコードについての評価進捗情報を評価装置3から受信するまで待機する(S41のNO)。
【0099】
そして、評価進捗情報を評価装置3から受信した場合(S41のYES)、情報生成部212は、例えば、受信した評価進捗情報を含む情報を生成する(S42)。
【0100】
その後、情報通知部213は、例えば、S42の処理で生成した情報を通知先に通知する(S43)。
【0101】
具体的に、情報通知部213は、例えば、S42の処理で生成した情報を、受信した評価進捗情報に対応するプログラムコードを作成したユーザに対応する通知先(例えば、ユーザ端末5)に送信する。
【0102】
なお、例えば、評価装置3のいずれかがキュー4に格納されているプログラムコードを取得した場合、または、キュー4に格納されているプログラムコードの評価を開始したことを示す情報が評価装置3のいずれかから送信された場合、情報生成部212は、そのプログラムコードの評価が開始したことを示す情報(以下、評価開始情報とも呼ぶ)を生成するものであってもよい。そして、情報通知部213は、例えば、生成した評価開始情報を通知先に送信するものであってもよい。
【0103】
また、例えば、プログラムコードの評価結果を評価装置3のいずれかから受信した場合、情報生成部212は、そのプログラムコードの評価結果を含む情報(以下、評価終了情報とも呼ぶ)を生成するものであってもよい。そして、情報通知部213は、例えば、生成した評価終了情報を通知先に送信するものであってもよい。
【0104】
また、通知装置2は、例えば、キュー4のいずれかに格納されているプログラムコードのうちの一部のプログラムコードについてのみを対象として情報通知処理を行うものであってもよい。
【0105】
さらに、通知装置2(情報通知部213)は、S22の処理で生成した格納順情報と、S32の処理で生成した待ち時間情報とを、ユーザが視覚的に可能な状態の情報に加工してから送信するものであってもよい。すなわち、通知装置2は、キュー4における各プログラムコードの格納状況を示す情報を送信するものであってもよい。以下、加工後の格納順情報及び待ち時間情報の具体例について説明を行う。
【0106】
[加工後の格納順情報及び待ち時間情報]
図12は、加工後の格納順情報及び待ち時間情報をユーザ端末5等の画面SCに表示した場合の具体例を説明する図である。
【0107】
図12に示す画面SCには、プログラムコードを到着順に格納するキュー4aが模式的に表示されている。具体的に、
図12に示す例は、ユーザによって送信された8つのプログラムコードがキュー4aに格納されている状態を示している。すなわち、
図12に示す例では、8つのプログラムコードのそれぞれがキュー4aにおける格納領域4a1、4a2、4a3、4a4、4a5、4a6、4a7及び4a8のそれぞれに格納されている。
【0108】
そして、
図12に示す例では、キュー4aに格納されている8つのプログラムコードのうちの網掛けの格納領域4a4に格納されているプログラムコードが、情報の通知先のユーザに対応するプログラムコードであることを示している。さらに、
図12に示す例では、網掛けの格納領域4a4に格納されているプログラムコードのキュー4aにおける格納順が「4番目」であり、評価結果のフィードバックがあるまでに要する時間(第2予測待ち時間)が「15秒」であることを示す付加情報IF4が表示されている。
【0109】
また、
図12に示す例では、格納領域4a1、4a2、4a3、4a5、4a6、4a7及び4a8のそれぞれに対応する情報として、付加情報IF1、IF2、IF3、IF5、IF6、IF7及びIF8が表示されている。すなわち、
図12に示す画面SCには、情報の通知先のユーザ以外のユーザに対応するプログラムコードについての情報についても併せて表示されている。
【0110】
なお、
図12に示す例では、1つのキュー4であるキュー4aに格納されているプログラムコードの待ち時間情報等を表示する場合について説明を行ったが、複数のキュー4のそれぞれ(例えば、キュー4a、4b及び4cのそれぞれ)に格納されているプログラムコードの待ち時間情報等をキュー4ごとに並べて表示するものであってもよいし、複数のキュー4のそれぞれに格納されているプログラムコードの待ち時間情報等を1つのキュー4(例えば、キュー4a)にマージさせた状態で表示するものであってもよい。
【0111】
このように、本実施の形態における振分装置1は、新たなプログラムコードを受け付けた場合、複数のキュー4のいずれかに格納されているプログラムコードごとに、各プログラムコードに対応する問題について各プログラムコードを作成したユーザが過去に作成した第1のプログラムコードについての複数の評価装置3による第1の評価結果と、各プログラムコードに対応する問題について各プログラムコードに対応するプログラミング言語を用いて過去に作成された第2のプログラムコードについての複数の評価装置3による第2の評価結果とを算出する。そして、振分装置1は、複数のキュー4のいずれかに格納されているプログラムコードごとの第1の評価結果と第2評価とに基づいて、新たなプログラムコードを格納する第1のキュー4を複数のキュー4から特定する。その後、振分装置1は、特定した第1のキュー4に対して新たなプログラムコードを格納する。
【0112】
また、本実施の形態における通知装置2は、特定した第1のキュー4に格納された新たなプログラムコードに関する情報を、新たなプログラムコードを生成したユーザに対応する通知先に通知する。
【0113】
これにより、本実施の形態における振分装置1は、キュー4に格納されている各プログラムコードについての評価の予測時間を精度良く予測することが可能になる。そのため、振分装置1は、新たなプログラムコードを受け付けた場合、受け付けたプログラムコードを待ち時間が最も短いキュー4に対して格納することが可能になり、各プログラムコードについての評価に要する時間(待ち時間)を短縮することが可能になる。
【0114】
また、本実施の形態における通知装置2は、例えば、各プログラムコードについての評価が終了したか否かを確認するための問合せ等の発生頻度を抑制することが可能になる。そのため、本実施の形態における通知装置2は、各ユーザによる利便性を高めるとともに、各ユーザからの問合せに伴う振分装置1の処理負荷を軽減させることが可能になる。
【符号の説明】
【0115】
1:振分装置
2:通知装置
3:評価装置
4:キュー
5:ユーザ端末
10:情報処理システム
101:CPU
102:メモリ
103:通信インタフェース
104:記憶媒体
105:バス
111:コード受付部
112:時間算出部
113:キュー特定部
114:コード格納部
201:CPU
202:メモリ
203:通信インタフェース
204:記憶媒体
205:バス
211:情報取得部
212:時間算出部
213:情報生成部
214:情報通知部
301:CPU
302:メモリ
303:通信インタフェース
304:記憶媒体
305:バス