(57)【要約】【課題】  コンピュータ技術習得のための問題数を豊富にし、且つ多種多様な問題を確保する装置等を提供する。【解決手段】  コンピュータの技術の習得を支援するための装置であり、コーディング技術習得のための問題と、その問題の条件を示す問題条件と、その問題の解答例となる第一解答プログラムと、その第一解答プログラムの結果の正当性を判定する判定プログラムとからなる出題情報を出題者から取得する出題情報取得手段と、前記問題条件に基づいて前記第一解答プログラムを実行して第一実行結果を生成する第一実行結果生成手段と、前記第一実行結果と前記判定プログラムに基づいて前記第一解答プログラムの正当性を判定する第一正当性判定手段と、前記第一解答プログラムが正当であると判定された場合、前記問題と前記問題条件とを解答者に出題する出題手段とを備える。【選択図】  図２
2014206619.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ技術の習得を支援するための装置であり、
技術習得のための問題と、その問題の条件を示す問題条件と、その問題の解答例となる第一解答プログラムと、その第一解答プログラムの結果の正当性を判定する判定プログラムとからなる出題情報を出題者から取得する出題情報取得手段と、
前記問題条件に基づいて前記第一解答プログラムを実行して第一実行結果を生成する第一実行結果生成手段と、
前記第一実行結果と前記判定プログラムに基づいて前記第一解答プログラムの正当性を判定する第一正当性判定手段と、
を備えることを特徴とする技術習得支援装置。
【請求項２】
前記第一解答プログラムが正当であると判定された場合、前記問題と前記問題条件とを解答者に出題する出題手段を備えることを特徴とする請求項１記載の技術習得支援装置。
【請求項３】
前記問題に対する第二解答プログラムを解答者から取得する第二解答プログラム取得手段と、
前記問題条件に基づいて前記第二解答プログラムを実行して第二実行結果を生成する第二実行結果生成手段と、
前記第二実行結果と前記判定プログラムに基づいて前記第二解答プログラムの正当性を判定する第二正当性判定手段と、
を備えることを特徴とする請求項１または２記載の技術習得支援装置。
【請求項４】
前記出題情報の中に、解答者の不正を許容してしまう不正許容要因がある場合、前記不正許容要因の修正を可能にする不正許容要因修正手段を備えることを特徴とする請求項１乃至３記載の技術習得支援装置。
【請求項５】
前記問題条件に含まれる変数の値を解答者が予見できないようにする予見防止手段を備えることを特徴とする請求項１乃至３記載の技術習得支援装置。
【請求項６】
前記問題に対する第二解答プログラムを解答者から取得する第二解答プログラム取得手段と、
前記問題条件に基づいて前記第二解答プログラムを実行して第二実行結果を生成する第二実行結果生成手段と、
前記問題条件を前記解答者が編集可能な場合、前記解答者が編集不可能な第二の問題条件を生成する第二問題条件生成手段と、
前記第二問題条件と前記判定プログラムとに基づいて第三実行結果を生成する第三実行結果生成手段と、
前記第二実行結果と前記第三実行結果とに基づいて前記第二解答プログラムの正当性を判定する第三正当性判定手段と、
を備えることを特徴とする請求項１または２記載の技術習得支援装置。
【請求項７】
前記第一解答プログラムと前記第二解答プログラムとで矛盾が生じる場合、前記矛盾を解消する矛盾解消手段を備えることを特徴とする請求項１乃至３記載の技術習得支援装置。
【請求項８】
前記第一解答プログラムに含まれる関数の名称と、前記第二解答プログラムに含まれる関数の名称とが重複することを防止する関数名重複防止手段を備えることを特徴とする請求項１乃至３記載の技術習得支援装置。
【請求項９】
前記第二解答プログラムの作成過程を管理する作成過程管理手段と、
前記作成過程に基づいて前記第二解答プログラムまたはその作成者の評価を行う評価手段と、
を備えることを特徴とする請求項１乃至３記載の技術習得支援装置。
【請求項１０】
前記作成過程には、プログラムの編集時間、または文字列のコピー回数、またはプログラムの編集回数が含まれることを特徴とする請求項９記載の技術習得支援装置。
【請求項１１】
前記第二解答プログラムは複数回実行されることを特徴とする請求項３記載の技術習得支援装置。
【請求項１２】
前記第二解答プログラムを構成する文字列を画像で表した画像データを作成する手段と、
前記画像データを、前記第二解答プログラムの作成者以外の者に開示する画像データ開示手段と、
を備えることを特徴とする請求項３記載の技術習得支援装置。
【請求項１３】
前記第二解答プログラムは、権限が制限された環境において実行されることを特徴とする請求項１乃至３記載の技術習得支援装置。
【請求項１４】
コンピュータを、
コンピュータ技術の習得のための問題と、その問題の条件を示す問題条件と、その問題の解答例となる第一解答プログラムと、その第一解答プログラムの結果の正当性を判定する判定プログラムとからなる出題情報を出題者から取得する出題情報取得手段、
前記問題条件に基づいて前記第一解答プログラムを実行して第一実行結果を生成する第一実行結果生成手段、
前記第一実行結果と前記判定プログラムに基づいて前記第一解答プログラムの正当性を判定する第一正当性判定手段、
として機能させることを特徴とする技術習得支援プログラム。
【請求項１５】
出題情報取得手段が、コンピュータ技術の習得のための問題と、その問題の条件を示す問題条件と、その問題の解答例となる第一解答プログラムと、その第一解答プログラムの結果の正当性を判定する判定プログラムとからなる出題情報を出題者から取得する出題情報取得ステップと、
第一実行結果生成手段が、前記問題条件に基づいて前記第一解答プログラムを実行して第一実行結果を生成する第一実行結果生成ステップと、
第一正当性判定手段が、前記第一実行結果と前記判定プログラムに基づいて前記第一解答プログラムの正当性を判定する第一正当性判定ステップと、
を有することを特徴とする技術習得支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータプログラムに関する技術の習得を支援するための装置・プログラム・方法に関するものである。
【背景技術】
【０００２】
現代はコンピュータの時代であり、コンピュータプログラムに関する技術（特にコーディング技術）を学ぶ人は多い。
コーディング技術の習得方法の１つとして、コーディング技術の上級者が出題した問題を、コーディング技術を学ぶ人が解くという方法がある。例えば、「ランダムに並んでいる数字を昇順に並び替える」という問題を上級者が出題し、コーディング技術習得者（解答者）が、プログラム言語をコーディングしてその問題に解くというものである。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−３６６６６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
現時点では、上記のような方法によりコーディングを学ぶことが一般的である。
しかし、従来のやり方では、一部のコーディング上級者が問題を出すに過ぎないため、問題の数が少なかったり、問題の偏りが生じるなどの不都合があった。即ち、豊富な問題数や多種多様な出題がなされず、効率よくコーディング技術を習得できないという不都合があった。
【０００５】
本発明は、このような課題を解決するためものであり、問題数を豊富にし、且つ多種多様な問題を確保する装置等を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明では、上記問題を解決するため、コンピュータの技術の習得を支援するための装置であり、コーディング技術習得のための問題と、その問題の条件を示す問題条件と、その問題の解答例となる第一解答プログラムと、その第一解答プログラムの結果の正当性を判定する判定プログラムとからなる出題情報を出題者から取得する出題情報取得手段と、前記問題条件に基づいて前記第一解答プログラムを実行して第一実行結果を生成する第一実行結果生成手段と、前記第一実行結果と前記判定プログラムに基づいて前記第一解答プログラムの正当性を判定する第一正当性判定手段とを備える技術習得支援装置が提供される。
【０００７】
また、本発明では、上記問題を解決するため、コンピュータを、コンピュータ技術の習得のための問題と、その問題の条件を示す問題条件と、その問題の解答例となる第一解答プログラムと、その第一解答プログラムの結果の正当性を判定する判定プログラムとからなる出題情報を出題者から取得する出題情報取得手段、前記問題条件に基づいて前記第一解答プログラムを実行して第一実行結果を生成する第一実行結果生成手段、前記第一実行結果と前記判定プログラムに基づいて前記第一解答プログラムの正当性を判定する第一正当性判定手段として機能させることを特徴とする技術習得支援プログラムが提供される。
【０００８】
更に、本発明では、上記問題を解決するため、出題情報取得手段が、コンピュータ技術の習得のための問題と、その問題の条件を示す問題条件と、その問題の解答例となる第一解答プログラムと、その第一解答プログラムの結果の正当性を判定する判定プログラムとからなる出題情報を出題者から取得する出題情報取得ステップと、第一実行結果生成手段が、前記問題条件に基づいて前記第一解答プログラムを実行して第一実行結果を生成する第一実行結果生成ステップと、第一正当性判定手段が、前記第一実行結果と前記判定プログラムに基づいて前記第一解答プログラムの正当性を判定する第一正当性判定ステップとを解答者に出題する出題ステップとを有することを特徴とする技術習得支援方法が提供される。
【発明の効果】
【０００９】
本発明は、誰もがコンピュータプログラムに関する技術（特にコーディング技術）習得のための問題を作成し、それを出題することができる。よって、コーディング技術習得のための問題を多種多様にすることができ、問題の量も豊富にすることができる。
また、コーディング技術を学ぶ者は、問題を解答するだけでなく、出題者になることができる。これにより出題者の立場になってコーディングを考えるようになり、コーディング技術の理解を一層深めることができる。
更に、本発明では、公開前に（解答者に出題する前に）、出題された内容の正当性を検証するので、不当な問題（例えば、解答不能な問題）などが出題されてしまう不都合を回避することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態に係るハードウェア構成の一例を表す図である。
【図２】各装置の機能構成図の一例を表す図である。
【図３】本実施形態で使用されるデータの一例を表す図である。
【図４】問題入力画面の表示例を表す図である。
【図５】解答画面の表示例を表す図である。
【図６】正解通知画面の表示例を表す図である。
【図７】出題処理の概要を表す図である。
【図８】出題処理の詳細フローを表す図である。
【図９】解答処理の概要を表す図である。
【図１０】解答処理の詳細フローを表す図である。
【図１１】変数退避処理の概要を表す図である。
【発明を実施するための形態】
【００１１】
本発明の実施形態を図に基づいて説明する。
図１は、本発明の一実施形態を示したシステム構成図（ハードウェア構成図）である。
このシステムは、サーバ１と、出題者が利用するＰＣ２と、解答者が利用する解答者ＰＣ３と、出題者兼解答者ＰＣ４とからなる。
【００１２】
サーバ１は、情報の入出力を行う入出力部、情報の処理を行う処理部等を備えたコンピュータである。また、サーバ１は、情報の記憶を行う記憶部１１と接続され、情報の記憶・取得を行う。
出題者ＰＣ２・解答者ＰＣ３・出題者兼解答者ＰＣ４は、情報の入出力を行う入出力部、情報の処理を行う処理部、情報の記憶を行う記憶部等を備えたコンピュータである。なお、出題者兼解答者ＰＣ４は、出題者ＰＣ２・解答者ＰＣ３双方の機能を併せ持つものである。
【００１３】
上記の各装置には、本発明を実現するためのコンピュータプログラムや所定のデータが記憶されており、処理部はこのコンピュータプログラムの処理命令に従って所定の処理を行う。また、上記の各装置はインターネット５等の通信手段により情報の送受信が可能となっている。
【００１４】
図２は、本発明の一実施形態を示した機能構成図である。
サーバ１は、問題受付部１２、問題検証部１３、出題部１４、解答受付部１５、解答実行部１６、解答評価部１７、解答開示部１８とを有する。
問題受付部１２は、出題ＰＣ２の出題部２２から出題情報を受け付ける。
問題検証部１３は、問題受付部から出題情報を受付け、出題情報の正当性を検証する。
出題部１４は、正当と判定された問題を解答者ＰＣ３の問題開示部３２に送信する。
解答受付部１５は、解答者ＰＣ３の解答部３３から第二解答プログラムを受信する。
解答実行部１６は、解答受付部１５から第二解答プログラムを受付け、第二解答プログラムを実行する。
解答評価部１７は、解答実行部１６により実行された第二解答プログラムの評価を行う。
解答開示部１８は、第二解答プログラムの作成者以外の者に対し、第二解答プログラムを開示する。
【００１５】
出題者ＰＣ２は、入力部２１に接続され、出題部２２と問題正否受付部２３とを有する。
出題部２２は、入力部２１から出題情報の入力を受付け、これをサーバー１の問題受付部１２に送信する。
問題正否受付部２３は、サーバ１の問題検証部１３から、その問題が正当と判断されたか否かの結果を受信する。
【００１６】
解答者ＰＣ３は、入力部３１に接続され、問題開示部３２と解答部３３と解答正否受付部３４とを有する。
問題開示部３２は、サーバ１の出題部１４から問題を受信し、それを解答者に開示する。
解答部３３は、入力部３１から入力された第二解答プログラムを受付け、それをサーバ１の解答受付部１５に送信する。
解答正否受付部３４は、第二解答プログラムが正解を導き出すことができたか否かをサーバ１の解答評価部１７から受信する。
【００１７】
次に、記憶部１１に記憶されているデータについて説明する。
図３は、本実施形態で使用される問題管理データの構成概略図を表したものである。
このデータは、問題ＩＤに各種データが関連づけられているものである。具体的には、問題ＩＤに、出題者ＩＤ・出題者氏名とが関連づけられている。問題ＩＤとは、出題者が出題する問題毎に割り振られる問題固有の情報であり、ここでは「Ｍ００１」が割り振られているものとする。出題者ＩＤとは、出題者毎に割り振られる出題者固有の情報であり、ここでは「Ｓ００１」が割り振られているものとする。出題者氏名は、出題者の氏名であり例えば「山田太郎」が代入されているものとする。
【００１８】
また、問題ＩＤに、出題情報（問題・問題条件・第一解答プログラム・第一解答プログラムの正当性を判定する判定プログラム・第一解答プログラムの正当性）が関連づけられている。問題とは、問題名・問題の概要・問題の説明とからなるデータであり、その具体例は後述する図４記載の通りである（ただし、これに限るものではない）。問題条件とは、その問題を解くための条件を表すものであり、具体的内容は図４記載の通りである。第一解答プログラムとは、出題者が作成した模範となる解答プログラムである。判定プログラムとは、出題者が作成したプログラムであり、第一解答プログラムの正当性を判定する判定ためのプログラムである。
【００１９】
更に、問題ＩＤに、解答情報（第二解答プログラム・第二解答プログラムの評価・第二解答プログラムを作成するために行ったコピーアンドペーストの回数・第二解答プログラムを完成させるために要した時間・編集回数等）が関連づけられている。第二解答プログラムとは、解答者が作成した解答プログラムである。第二解答プログラムの評価とは、例えば、優れたプログラムであるとか、通常レベルのプログラムであるとか、劣悪なプログラムである等の評価を表すものである。コピーアンドペーストの回数とは、第二解答プログラムを作成するにあたり何回コピーアンドペーストを行ったかをカウントするものであり、これが第二解答プログラムの評価を決める一要素となる。編集時間とは、第二解答プログラムを完成させるために要した時間を意味し、これも第二解答プログラムの評価を決める一要素となる。また、編集回数とは第二解答プログラムを完成させるために行った編集処理の回数を意味し、これも第二解答プログラムの評価を決める一要素となる。
【００２０】
図４〜図６は、本実施形態において出題者ＰＣ３または解答者ＰＣ４の表示部に表示される表示例を表したものである。
図４は、出題画面の表示例である。出題者ＰＣ３の表示部には問題（問題名、問題の概要、問題の説明文）と、問題条件と、正解判定関数（判定プログラム）と、解答例（第一解答プログラム）とが表示されている。これらは出題者が問題を出すために入力した情報である。
【００２１】
図５は、解答画面の表示例である。解答者ＰＣ４の表示部左側には問題の説明文が、右側には解答欄（解答者が第二解答プログラムを入力する欄）とが表示されている。
図６は、解答者が解答欄に第二解答プログラムを入力し、正解を導き出した際の表示例である。変数ａと変数ｂとの和が「３２８」であり、それが正解である旨を解答者に知らせている状態を表した図である。
【００２２】
図７は、本実施形態の出題に関する処理手順の概要を示す図である。
出題者は、問題条件、正解判定関数（判定プログラム）、解答例（第一解答プログラム）とからなる出題情報を作成し、これをサーバ１に送信する。サーバ１は、受信した出題情報に基づいて検証プログラムを作成する。更に、サーバ１は検証プログラムを実行して、第一解答プログラムの正当性を確認し、第一解答プログラムが正当であれば、正当なプログラムとしてシステムに登録し、不当であれば、出題者に修正を求める。
【００２３】
図８（ａ）は、本実施形態の出題処理において、出題者ＰＣ２が行う処理のフローチャートを示す図（図７の詳細を表す図）である。
ＳＴＥＰ１−１は、出題情報作成処理である。出題部２２は、入力部２１から入力された問題条件・正解判定関数（判定プログラム）・解答例（第一解答プログラム）とからなる出題情報を受け付ける。なお、その際、出題部２２は、変数の値をランダムな値として定義することを可能にする。即ち、変数の値が固定値の場合（不正許容要因がある場合）、解答者がそれを予見して出題者の意図に沿わない解答をしてしまうおそれがあり、それを回避するため出題部２２は出題者が変数の値を決める際にランダムな値を選択できるようにする（ランダムな変数を定義可能にすることにより不正許容要因を修正して予見を防止する）。これにより解答者が解答前に変数の値を予見して、出題者の意図に沿わない解答をしてしまうこと（解答者の不正行為）を防止できる。
ＳＴＥＰ１−２は、出題情報送信処理である。出題部２２は、受け付けた出題情報をサーバ１に送信する。
ＳＴＥＰ１−３は、正否通知受信処理である。問題正否受付部２３は、サーバ１から第一解答プログラムに関する正否通知を受信する。即ち、サーバ１は第一解答プログラムの正当性を検証するのであるが、検証の結果、第一解答プログラムが正当である場合、問題正否受付部２３は正当通知を受信し、正当でない場合はエラー通知を受信する。
【００２４】
図８（ｂ）は、本実施形態の出題処理において、サーバ１が行う処理のフローチャートを示す図（図７の詳細を表す図）である。
ＳＴＥＰ２−１は、出題情報受信処理である。問題受付部１２は、出題部２２から送信された出題情報を受信する。
【００２５】
ＳＴＥＰ２−２は、検証プログラムの作成・実行処理である。問題検証部１３は、出題情報に基づいて検証プログラムを作成する。これは第一解答プログラムが正当なプログラムであるか否かを判断するためのプログラムであり、次のような処理を行うプログラムである。
問題検証部１３は、出題情報に含まれる問題条件に基づいて、出題情報に含まれる解答例（第一解答プログラム）を実行する。これにより第一実行結果が算出される。次に、問題検証部１３は、出題情報に含まれる問題条件に基づいて判定プログラムを実行する（問題条件を正解判定関数の引数としその解を得る）。
【００２６】
ＳＴＥＰ２−３は、第一解答プログラムの正否判断処理である。問題検証部１３は、判定プログラムの実行により第一実行結果の正当性（第一解答プログラムの正当性）を判定し、正当である場合はＳＴＥＰ２−４に進み、正当でない場合はＳＴＥＰ２−５に進む。
ＳＴＥＰ２−４は、正当通知処理である。問題検証部１３は、第一解答プログラムが正当である旨を出題者ＰＣ２に送信する。
ＳＴＥＰ２−５は、システム登録処理である。問題検証部１３は、正当と判断された第一解答プログラム及び問題条件を含む出題情報を記憶部１１に記憶する。
ＳＴＥＰ２−６は、問題送信処理である。出題部１４は、第一解答プログラム及び問題条件を解答者ＰＣ３に送信する。
ＳＴＥＰ２−７は、エラー通知処理である。問題検証部１３は、第一解答プログラムが正当でないある旨（不当である旨）を出題者ＰＣ２に送信する。
【００２７】
図９は、本実施形態の解答に関する処理手順の概要を示す図である。
解答者は出題に対する解答（第二解答プログラム）を作成し、これをサーバ１に送信する。サーバ１は、解答者から送信された第二解答プログラムと、出題者から送信された出題情報と、システムによる付加情報とに基づいて評価用プログラムを作成する。サーバ１は、評価用プログラムを複数回実行する。なお、このプログラムはサンドボックス（権限を制限したプロセスやシステムの環境）において実行されるものとする。
【００２８】
サーバ１、評価プログラムの実行により、第二解答プログラムの正当性を確認すると共に、第二プログラムの実行時間等の評価材料を取得する。また、サーバ１は、解答者が第二解答プログラムを作成している際の操作情報（第二解答プログラムを作成するために行ったコピーアンドペーストの回数・第二解答プログラムを完成させるために要した時間・編集回数等）を取得する。サーバ１は、取得した評価材料と操作情報とに基づいて、第二解答プログラム及びその解答者の評価を含む評価情報を作成する。そして、評価情報を出題者、解答者に通知する（出題者には解答者の氏名等のプライベート情報は通知しないようにしてもよい）。また、評価情報はシステム（記憶部１１）に記憶する。更に、第二解答プログラムをその解答者以外の者に開示する際は、第二解答プログラムを構成する文字列をテキストデータとして開示するのではなく、画像データに変換してそれを開示する。これにより、解答の丸写しなどの不正行為を防止することができる。
【００２９】
図１０（ａ）は、本実施形態の解答処理において、解答者ＰＣ３が行う処理のフローチャートを示す図（図９の詳細を表した図）である。
ＳＴＥＰ３−１は、問題受信処理である。問題開示部３２は、第一解答プログラム及び問題条件をサーバ１から受信する。
ＳＴＥＰ３−２は、解答作成処理である。解答部３３は、第二解答プログラムの入力を受け付ける。なお、この第二解答プログラムは、解答者が入力部３１を操作して入力したものである。
ＳＴＥＰ３−３は、解答送信処理である。解答部３３は、第二解答プログラムをサーバ１に送信する。
ＳＴＥＰ３−４は、正否通知受信処理である。解答正否受付部３４は、サーバ１から第二解答プログラムに関する正否通知を受信する。即ち、サーバ１は第二解答プログラムの正当性を検証するのであるが、検証の結果、第二解答プログラムが正当である場合、解答正否受付部３４は正当通知を受信し、正当でない場合はエラー通知を受信する。
【００３０】
図１０（ｂ）は、本実施形態の解答処理において、サーバ１が行う処理のフローチャートを示す図（図９の詳細を表した図）である。
ＳＴＥＰ４−１は、解答の受信処理である。解答受付部１５は、解答部３３から第二解答プログラムを受信する。
ＳＴＥＰ４−２は、評価用プログラム作成・実行処理である。解答実行部１６は、解答者から送信された第二解答プログラムと、出題者から送信された出題情報と、システムによる付加情報とに基づいて評価用プログラムを作成する。
なお、システムによる付加情報とは、例えば次のような情報である。出題者が作成した第一解答プログラムにおいて使用される関数名と、解答者が作成した第二解答プログラムにおいて使用される関数名とが重複してしまう場合がある（両者で矛盾が生じる場合がある）。このような場合、プログラムが意図しない実行結果を算出してしまう。そこで、解答実行部１６は、第一解答プログラムにおいて使用されている関数名または第二解答プログラムにおいて使用されている関数名どちらかをランダムな変数名に変更する。これにより、両者の関数名が重複する可能性が極めて低くなり（矛盾が解消され）、意図しない実行結果を算出する不都合を回避できる。
【００３１】
この後、解答実行部１６は、評価用プログラムを複数回実行する（問題条件に基づいて第二解答プログラムを実行して第二実行結果を生成し、第二実行結果と判定プログラムに基づいて第二解答プログラムの正当性を判定するための処理等を行う）。これにより第二解答プログラムの正当性を判定することができる。また、これにより、第二解答プログラムの実行速度や正確性を、より正確に評価することができる。
なお、このプログラムはサンドボックス（権限を制限したプロセスやシステムの環境）において実行されるものとする。これにより、例えば解答者が悪意のある第二解答プログラム（例えば、サーバ１内のファイルを削除するプログラム）を作成しても、サーバ１が影響を受けることを防止できる。
【００３２】
ＳＴＥＰ４−３は、評価情報作成処理である。解答評価部１７は、評価プログラムの実行により、第二解答プログラムの正当性を確認すると共に、第二プログラムの実行時間等の評価材料（第二解答プログラムの実行時間など）を取得する。また、サーバ１は、解答者が第二解答プログラムを作成している際の作成過程（第二解答プログラムを作成するために行ったコピーアンドペーストの回数・第二解答プログラムを完成させるために要した時間・編集回数等）を取得する。サーバ１は、取得した評価材料と作成過程とに基づいて、第二解答プログラム及びその解答者の評価を含む評価情報を作成する。このように評価情報を作成することにより、優秀なプログラマを発見することができる。
ＳＴＥＰ４−４は、解答の正当性判断処理である。解答評価部１７は、ＳＴＥＰ４−３において、第二解答プログラムが正当と判断されたか否かを判断し、正当と判断された場合はＳＴＥＰ４−５に進み、正当でないと判断された場合はＳＴＥＰ４−６に進む。
ＳＴＥＰ４−５は、正当通知処理である。解答評価部１７は、第二解答プログラムが正当である旨を解答者ＰＣ３及び出題者ＰＣ２に送信する。また、評価情報を記憶部１１に記憶する。
ＳＴＥＰ４−６は、解答開示処理である。解答開示部１８は、第二解答プログラムをその解答者以外の者に開示（送信）する。なお、その際は第二解答プログラムを構成する文字列をテキストデータとして開示するのではなく、画像データに変換してそれを開示する。これにより、解答の丸写しなどの不正行為を防止することができる。
ＳＴＥＰ４−７は、エラー通知処理である。解答評価部１７は、第二解答プログラムが正当でない旨（エラーである旨）を解答者ＰＣ２に送信する。
【００３３】
次に、変数退避による解答誤判定の防止について説明する。
出題情報に含まれる問題条件（条件として定義した内容）を解答者が変更できてしまう場合がある。例えば、固定値が定義できないプログラミング言語あり、且つ、問題条件をプログラミング言語で定義する場合等は、解答者が問題条件を変更できてしまうのである。
しかし、これを許すと出題者の意図通りの問題を作ることが困難になってしまう。そこで、変数退避を行い、出題者の意図に沿ったものとなるようにする。以下、この点について説明する。
【００３４】
図１１は、変数退避による解答誤判定の防止処理の概略を表した図である。
この出題の意図は「ａとｂの足し算を行って欲しい」というものであり、問題の正解条件は「ｃにａとｂの和が代入されている」ことである。
図１１の左欄は変数退避機能がない場合の例であり、この場合の処理は以下のように行われる。
（処理Ａ−１）問題条件として「ａ＝３２」、「ｂ＝６８」が設定されている。
（処理Ｂ−１）適切な解答（第二解答プログラム）は「ｃ＝ａ＋ｂ」であり、第二解答プログラムの実行により得られる答えは「ｃ＝１００」となる。
（処理Ｃ−１）正解判定関数を用いてａとｂの和を得る。正解判定関数により得られる答えは「１００」となる。
（処理Ｄ−１）第二解答プログラムによるＣの値（「１００」）と、正解判定関数による答え（「１００」）を比較する。両者は一致するので、第二解答プログラムは正当（正当な答えを導くことができるプログラム）と判定される。
【００３５】
しかし、変数の変更を解答者に許した場合、解答者は第二解答プログラムを「ｃ＝ａ＋ｂ」ではなく、出題者の意図と違う誤った解答「ａ＝１；ｂ＝１；ｃ＝２」とすることができ、この場合の処理は以下のように行われる。
（処理Ａ−２）問題条件として「ａ＝３２」、「ｂ＝６８」が設定されている。
（処理Ｂ−２）適切な解答（第二解答プログラム）は「ｃ＝ａ＋ｂ」であるが、ここでは解答者が問題条件を変更したので、第二解答プログラムとして「ａ＝１；ｂ＝１；ｃ＝２」が解答される（誤った解答がされる）。
（処理Ｃ−２）正解判定関数を用いてａとｂの和を得る。正解判定関数により得られる答えは「２」となる。
（処理Ｄ−１）第二解答プログラムによるｃの値（「２」）と、正解判定関数による答え（「２」）を比較する。両者は一致するので、第二解答プログラムは正当（正当な答えを導くことができるプログラム）と判定される。
即ち、第二解答プログラム「ａ＝１；ｂ＝１；ｃ＝２」は本来不正解であるのに、それを正解と判定してしまうのである。
【００３６】
そこで、図１１の右欄のように変数退避機能を持たせて、「ａ＝３２」、「ｂ＝６８」を一旦他の変数に退避させる（第二問題条件を生成する）。そして、第二解答プログラム実行後に正解判定関数に「ａ＝３２」、「ｂ＝６８」を引数として解（第三実行結果「１００」）を求めさせる。これにより不適切な解答によるｃの値（「２」）と正解判定関数による答え「１００」とを比較して、不正解と判定する。即ち、退避及び復元処理を行うことにより、誤判定を防止できるのである。
【００３７】
次に、この処理を図１０の処理フローに基づいて説明する。
ＳＴＥＰ４−２において、解答実行部１６は、出題情報に含まれる問題条件を他の変数に退避させる。そして、第二解答プログラム実行後、退避させていた変数を、正解判定関数の引数として解を求める。これにより誤判定を防止できるのである。
【００３８】
なお、この実施形態は本発明の範囲を限定するものではない。本実施形態で説明した各処理はどの装置で行ってもよい。例えば、複数の装置が行う処理を１つの装置で行ってもよい。
また、本実施形態で説明したシステム構成（ハードウェア構成）は一例であり、用途や目的に応じて様々な構成があることは言うまでもない。
更に、上記実施形態では、特定のコーディング技術習得のための問題を例にして説明したが、本発明はこれに限るものではない。プログラム技術を習得するためのものであれば、どのような問題も出題することができる。
【００３９】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、技術習得支援装置が有すべき機能の処理内容を記述した技術習得支援プログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ＨＤＤ、ＦＤ、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録装置には、 ＭＯ（Magneto  Optical disk）などがある。
【００４０】
技術習得支援プログラムを流通させる場合には、たとえば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【００４１】
技術習得支援プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からコーディング技術習得支援プログラムを読み取り、コーディング技術習得支援プログラムに従った処理を実行する。
なお、コンピュータは、可搬型記録媒体から直接技能習得支援プログラムを読み取り、その技能習得支援プログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【００４２】
なお、本発明は、上述の実施の形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変更を加えることができる。
【００４３】
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および
応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
【符号の説明】
【００４４】
１    サーバ
２    出題者ＰＣ
３    解答者ＰＣ
４    出題者兼解答者ＰＣ
５    インターネット
１１  記憶部
１２  問題受付部
１３  問題検証部
１４  出題部
１５  解答受付部
１６  解答実行部
１７  解答評価部
１８  解答開示部
３１  入力部
３２  解答開示部
３３  解答部
３４  解答正否受付部
【図１】
2014206619.tif 000003
【図２】
2014206619.tif 000004
【図３】
2014206619.tif 000005
【図４】
2014206619.tif 000006
【図５】
2014206619.tif 000007
【図６】
2014206619.tif 000008
【図７】
2014206619.tif 000009
【図８】
2014206619.tif 000010
【図９】
2014206619.tif 000011
【図１０】
2014206619.tif 000012
【図１１】
2014206619.tif 000013