(57)【要約】【課題】プログラミング学習時の学習者の弱点を分析できる。【解決手段】分析システム１は、分析装置３０が、学習者によるプログラムの作成過程における編集履歴情報と、前記学習者の脳波の状態を示す脳波情報を取得する取得部３０１と、編集履歴情報と脳波情報とに基づいて、前記プログラムの各構成要素に対する前記学習者の弱点を分析する構成要素分析部３５と、構成要素分析部３５による分析結果を構成情報分析結果として出力する分析結果出力部４１と、有する。【選択図】図１
2019215438.tif 000002
【特許請求の範囲】
【請求項１】
学習者によるプログラムの作成過程における編集履歴情報と、前記学習者の脳波の状態を示す脳波情報とを取得する取得部と、
前記編集履歴情報と前記脳波情報とに基づいて、前記プログラムの各構成要素に対する前記学習者の弱点を分析する分析部と、
前記分析部による分析結果を構成情報分析結果として出力する出力部と、
を有することを特徴とする分析システム。
【請求項２】
学習者によるプログラムの作成過程における編集履歴情報と、前記学習者の脳波の状態を示す脳波情報とを取得する取得部と、
前記編集履歴情報と前記脳波情報とに基づいて、前記プログラムのブロック構造に関する前記学習者の弱点を分析する分析部と、
前記分析部による分析結果をブロック構造試行錯誤分析結果として出力する出力部と、
を有することを特徴とする分析システム。
【請求項３】
学習者によるプログラムの作成過程における編集履歴情報を取得する取得部と、
前記編集履歴情報に基づいて、前記プログラムのエラーに関する前記学習者の弱点を、エラーの種別ごとに分析する分析部と、
前記分析部による分析結果をエラー分析結果として出力する出力部と、
を有することを特徴とする分析システム。
【請求項４】
前記学習者の学習時に、前記編集履歴情報を取得し、前記取得部に該編集履歴情報を出力する編集履歴情報取得部と、
前記学習者の学習時に、前記学習者の脳波情報を取得し、前記取得部へ該脳波情報を提供する脳波情報取得部と、
を有する学習装置をさらに有することを特徴とする請求項１〜３のいずれか一つに記載の分析システム。
【請求項５】
前記取得部が、前記学習装置における前記編集履歴情報取得部から取得した前記編集履歴情報を記憶する編集履歴情報記憶部と、
前記取得部が、前記学習装置における前記脳波情報取得部から取得した前記脳波情報を記憶する脳波情報記憶部と、
を有することを特徴とする請求項４に記載の分析システム。
【請求項６】
分析装置が実行する分析方法であって、
学習者によるプログラムの作成過程における編集履歴情報と、前記学習者の脳波の状態を示す脳波情報とを取得する取得工程と、
前記編集履歴情報と前記脳波情報とに基づいて、前記プログラムの各構成要素に対する学習者の弱点を分析する分析工程と、
分析結果を構成情報分析結果として出力する出力工程と、
を含んだことを特徴とする分析方法。
【請求項７】
前記分析工程は、
前記編集履歴情報を用いて、該編集履歴情報のすべてのレコードについて、構成要素種別を分析する第１の分析工程と、
前記構成要素種別を分析する工程において特定された構成要素種別の開始時間及び終了時間から編集時間を算出する第１の算出工程と、
前記脳波情報を用いて前記開始時間及び終了時間の間の情動状態を分析する第２の分析工程と、
前記編集履歴情報のすべてのレコードにおける前記構成要素種別、前記編集時間及び前記情動状態を基に、前記構成要素種別ごとの総編集時間と平均情動状態とを算出する第２の算出工程と、
各構成要素種別について前記総編集時間が所定時間より長いか否かを判定する第１の判定工程と、
前記第１の判定工程において、前記総編集時間が所定時間より長いと判定された構成要素種別は、前記学習者にとっての弱点であると判定する第２の判定工程と、
前記第１の判定工程において前記総編集時間が所定時間以下であると判定された構成要素種別について、前記平均情動状態が「困難」であるか否かを判定する第３の判定工程と、
前記第３の判定工程において平均情動状態が「困難」であると判定された構成要素種別は、前記学習者にとっての弱点であると判定する第４の判定工程と、
前記第３の判定工程において平均情動状態が「困難」でないと判定された構成要素種別は、前記学習者にとっての弱点ではないと判定する第５の判定工程と、
を含んだことを特徴とする請求項６に記載の分析方法。
【請求項８】
分析装置が実行する分析方法であって、
学習者によるプログラムの作成過程における編集履歴情報と、前記学習者の脳波の状態を示す脳波情報とを取得する取得工程と、
前記編集履歴情報と前記脳波情報とに基づいて、前記プログラムのブロック構造に関する前記学習者の弱点を分析する分析工程と、
分析結果をブロック構造試行錯誤分析結果として出力する出力工程と、
を含んだことを特徴とする分析方法。
【請求項９】
前記分析工程は、
前記編集履歴情報を基に、前記編集履歴情報のすべてのレコードに対して、判定対象の編集履歴が中括弧の入力或いは削除であるか否かを判定する第１の判定工程と、
前記第１の判定工程において前記判定対象の編集履歴が中括弧の入力或いは削除であると判定された場合、前記中括弧が前記プログラムの先頭から何番目の中括弧であるかを算出する第１の算出工程と、
前記判定対象の編集履歴が中括弧の削除であるか否かを判定する第２の判定工程と、
前記第２の判定工程において前記判定対象の編集履歴が中括弧の削除であると判定された場合、前記中括弧が入力されてから削除されるまでの時間を算出する第２の算出工程と、
前記脳波情報を用いて、前記編集履歴情報のすべてのレコードについて情動状態を分析する第１の分析工程と、
前記編集履歴情報のすべてのレコードに対して前記第１の判定工程、前記第２の判定工程及び前記第１の分析工程が終了した後に、すべてのブロック構造の作成から削除までの総編集時間を算出し、すべてのブロック構造の作成から削除までの平均情動状態を算出する第３の算出工程と、
前記ブロック構造の総編集時間が所定時間より長いか否かを判定する第３の判定工程と、
前記第３の判定工程において前記ブロック構造の総編集時間が所定時間より長いと判定された場合、前記学習者は前記ブロック構造が理解できていないと判定する第４の判定工程と、
前記第３の判定工程において前記ブロック構造の総編集時間が所定時間以下であると判定された場合、前記平均情動状態が「困難」であるか否かを判定する第５の判定工程と、
前記第５の判定工程において前記平均情動状態が「困難」であると判定された場合、前記学習者はブロック構造を理解できていないと判定する第６の判定工程と、
前記第５の判定工程において前記平均情動状態が「困難」と判定されない場合、前記学習者はブロック構造を理解できていると判定する第７の判定工程と、
を含んだことを特徴とする請求項８に記載の分析方法。
【請求項１０】
分析装置が実行する分析方法であって、
学習者によるプログラムの作成過程における編集履歴情報を取得する取得工程と、
前記編集履歴情報に基づいて、前記プログラムのエラーに関する前記学習者の弱点を、エラーの種別ごとに分析する分析工程と、
分析結果をエラー分析結果として出力する出力工程と、
を含んだことを特徴とする分析方法。
【請求項１１】
前記分析工程は、
前記編集履歴情報を用いて、前記編集履歴情報のエラーをエラー種別ごとにカウントする工程と、
前記カウントしたエラーについて、一定時間内に同じエラーが繰り返されているか否かをエラー種別ごとに判定する第１の判定工程と、
前記第１の判定工程において同じエラーが繰り返されていると判定されたエラー種別に関し、前記学習者はエラーの意味が理解できていないと判定する第２の判定工程と、
前記第１の判定工程において同じエラーが繰り返されていないと判定されたエラー種別について、特定のエラーの頻度が予め設定された閾値を越えたか否かを判定する第３の判定工程と、
前記第３の判定工程において前記特定のエラーの頻度が予め設定された閾値を越えたと判定されたエラー種別について、前記学習者は該当エラーのケアレスミスが多いと判定する第４の判定工程と、
前記第３の判定工程において前記特定のエラーの頻度が予め設定された閾値を越えていないと判定されたエラー種別について、前記学習者は、該エラー種別のエラーに関しては通常の理解度であると判定する第５の判定工程と、
含んだことを特徴とする請求項１０に記載の分析方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分析システム及び分析方法に関する。
【背景技術】
【０００２】
近年、学習モデルは多様化し、ｅラーニングから、教場授業とｅラーニングを併用するブレンディッドラーニングまで多岐にわたっている。このような教育環境においては、ＬＭＳ（Learning  Management  System：学習支援システム）が利用される。
【０００３】
ＬＭＳは、学習コンテンツの配信や、試験の実施及び採点等の多様な機能を備えている。このＬＭＳによれば、ＬＭＳを経由した学習者の学習活動に関する操作ログ等の様々な履歴や、レポートや評価結果等の記録を収集することが可能である。
【０００４】
例えば、学習者が学習時の編集履歴を参照可能とする技術（非特許文献１参照）が開示されている。また、生体情報として脳波を取得して、教材の難易度を判定する技術も開示されている（特許文献１参照）。
【０００５】
また、プログラミング学習者のプログラムの実行時のエラーメッセージを集計して学習者の弱点を分析する技術（非特許文献２参照）や、最終的な完成形のプログラムを構文解析し、正解プログラムとの差異を明らかにしようとする技術（非特許文献３参照）が開示されている。また、プログラムの作成過程の履歴を取得する環境の構築はしているものの、分析までには至らない報告（非特許文献４参照）や、手作業で分析する技術（非特許文献５参照）が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許出願公開第２００６／０１４７００７号明細書
【非特許文献】
【０００７】
【非特許文献１】荒本道隆，小林学，中澤真，中野美知子，後藤正幸，平澤茂一，“編集履歴可視化システムを用いたLearning  Analytics〜システム構成と実装”，情報処理学会第78回全国大会予稿集，pp.4-527-4-528，横浜，(2016.3)．
【非特許文献２】Toshiyasu  Kato，  Yasushi  Kambayashi  and  Yasushi  Kodama，“Data  Mining  of  Students’  Behaviors  in  Programming  Exercises”，  Smart  Education  and  e-Learning  2016，  pp.121-133，  2016
【非特許文献３】間嶋義喜，大賀賢志，竹内和広，“機能に基づくプログラム構造比較に向けた類似度の策定”，情報処理学会研究報告，CE  138  No.12，  pp.1-6，  2017
【非特許文献４】森一樹，田中昂文，橋浦弘明，櫨山淳雄，古宮誠一，“プログラミング演習支援のための細粒度履歴収集環境の開発”，情報処理学会研究報告，  SE  179  No.16，  pp.1-6，  2013
【非特許文献５】長慎也，長島和平，間辺広樹，兼宗進，並木美太郎，“初学者向けプログラミング授業における活動ログの評価支援機能”，情報処理学会研究報告，  CE  138  No.4，  pp.1-8，  2017
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、従来の技術では、正解プログラムとの比較をする必要や、分析の際に大量のバックトラッキングを行う必要があり、効率的ではなかった。また、従来の技術では、プログラム作成過程での学習者のつまずきや理解不足の要因などの学習者の弱点を、自動的に分析するまでには至っていない。
【０００９】
本発明は、上記に鑑みてなされたものであって、プログラミング学習時の学習者の弱点を分析できる分析システム及び分析方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決し、目的を達成するために、本発明に係る分析システムは、学習者によるプログラムの作成過程における編集履歴情報と、学習者の脳波の状態を示す脳波情報を取得する取得部と、編集履歴情報と脳波情報とに基づいて、プログラムの各構成要素に対する学習者の弱点を分析する分析部と、分析部による分析結果を構成情報分析結果として出力する出力部と、を有することを特徴とする。
【００１１】
また、本発明に係る分析システムは、学習者によるプログラムの作成過程における編集履歴情報と、学習者の脳波の状態を示す脳波情報を取得する取得部と、編集履歴情報と脳波情報とに基づいて、プログラムのブロック構造に関する学習者の弱点を分析する分析部と、分析部による分析結果をブロック構造試行錯誤分析結果として出力する出力部と、を有することを特徴とする。
【００１２】
また、本発明に係る分析システムは、学習者によるプログラムの作成過程における編集履歴情報を取得する取得部と、編集履歴情報に基づいて、プログラムのエラーに関する学習者の弱点を、エラーの種別ごとに分析する分析部と、分析部による分析結果をエラー分析結果として出力する出力部と、を有することを特徴とする。
【発明の効果】
【００１３】
本発明によれば、プログラミング学習時の学習者の弱点を分析できる。
【図面の簡単な説明】
【００１４】
【図１】図１は、実施の形態における分析システムの構成の一例を示す図である。
【図２】図２は、編集履歴情報のデータ構成の一例を示す図である。
【図３】図３は、脳波情報のデータ構成の一例を示す図である。
【図４】図４は、個別構成要素分析結果のデータ構成の一例を示す図である。
【図５】図５は、構成要素分析結果のデータ構成の一例を示す図である。
【図６】図６は、ブロック構造試行錯誤分析結果のデータ構成の一例を示す図である。
【図７】図７は、エラー分析結果のデータ構成の一例を示す図である。
【図８】図８は、編集履歴取得処理の処理手順例を示すシーケンス図である。
【図９】図９は、脳波情報取得処理の処理手順を示すシーケンス図である。
【図１０】図１０は、構成要素分析処理の処理手順を示すシーケンス図である。
【図１１】図１１は、ブロック構造試行錯誤分析処理の処理手順を示すシーケンス図である。
【図１２】図１２は、エラー分析処理の処理手順を示すシーケンス図である。
【図１３】図１３は、分析結果出力処理の処理手順を示すシーケンス図である。
【図１４】図１４は、図１０に示す構成要素分析処理の処理手順を示すフローチャートである。
【図１５】図１５は、図１４に示す構成要素種別分析処理の処理手順を示すフローチャートである。
【図１６】図１６は、図１５に示すブロック構造判定処理の処理手順を示すフローチャートである。
【図１７】図１７は、図１５に示す条件分岐条件式要素判定処理の処理手順を示すフローチャートである。
【図１８】図１８は、図１５に示す条件分岐ブロック判定処理の処理手順を示すフローチャートである。
【図１９】図１９は、図１５に示す演算要素判定処理の処理手順を示すフローチャートである。
【図２０】図２０は、図１５に示す識別子要素判定処理の処理手順を示すフローチャートである。
【図２１】図２１は、図１４に示す情動状態分析処理の処理手順を示すフローチャートである。
【図２２】図２２は、図１１に示すブロック構造試行錯誤分析処理の処理手順を示すフローチャートである。
【図２３】図２３は、図１２に示すエラー分析処理の処理手順を示すフローチャートである。
【図２４】図２４は、プログラムが実行されることにより、学習装置及び分析装置が実現されるコンピュータの一例を示す図である。
【発明を実施するための形態】
【００１５】
以下、図面を参照して、本発明の一実施形態を詳細に説明する。なお、この実施の形態により本発明が限定されるものではない。また、図面の記載において、同一部分には同一の符号を付して示している。
【００１６】
［実施の形態］
［分析システムの構成］
本発明の実施の形態について説明する。図１は、実施の形態における分析システムの構成の一例を示す図である。図１に示すように、実施の形態に係る分析システム１は、学習装置２０と分析装置３０とがネットワーク９０を介して接続された構成を有する。
【００１７】
学習装置２０は、プログラミング学習時の学習者によるプログラム作成過程の編集履歴に関する編集履歴情報を取得する。また、学習装置２０は、プログラミング学習時の学習者の脳波の状態を示す脳波情報を取得する。
【００１８】
分析装置３０は、学習装置２０から編集履歴情報、脳波情報を取得する。分析装置３０は、取得したこれらの情報に基づいて、構成要素分析、ブロック構造試行錯誤分析、エラー分析を行い、プログラミング学習者の弱点を分析する。そして、分析装置３０は、分析結果を学習者等に提供することによって、学習者の効率的な学習を支援する。
【００１９】
［学習装置の構成］
次に、学習装置２０の構成について説明する。学習装置２０は、例えば、ＲＯＭ（Read  Only  Memory）、ＲＡＭ（Random  Access  Memory）、ＣＰＵ（Central  Processing  Unit）等を含むコンピュータ等に所定のプログラムが読み込まれて、ＣＰＵが所定のプログラムを実行することで実現される。図１に示すように、学習装置２０は、編集履歴情報取得部２１及び脳波情報取得部２２を有する。
【００２０】
編集履歴情報取得部２１は、学習者によるプログラムの作成過程における編集履歴情報を取得する。編集履歴情報は、学習者によるプログラムへの入力状況の履歴である。
【００２１】
脳波情報取得部２２は、学習者の脳波の状態を示す脳波情報を取得する。脳波情報には、例えば、α波、β波等の強度が含まれる。また、脳波情報には、脳波のパターン等から導出される脳波集中度や脳波熟考度が含まれる。
【００２２】
［分析装置の構成］
次に、分析装置３０の構成について説明する。分析装置３０は、例えば、ＲＯＭ、ＲＡＭ、ＣＰＵ等を含むコンピュータ等に所定のプログラムが読み込まれて、ＣＰＵが所定のプログラムを実行することで実現される。図１に示すように、分析装置３０は、取得部３０１、編集履歴情報記憶部３３、脳波情報記憶部３４、分析部３０２、構成要素分析結果記憶部３８、ブロック構造試行錯誤分析結果記憶部３９、エラー分析結果記憶部４０及び分析結果出力部４１を有する。
【００２３】
取得部３０１は、学習装置２０から、編集履歴情報と脳波情報とを取得する。取得部３０１は、編集履歴情報取得部３１及び脳波情報取得部３２を有する。編集履歴情報取得部３１は、学習装置２０の編集履歴情報取得部２１から編集履歴情報を取得して編集履歴情報記憶部３３に格納する。脳波情報取得部３２は、学習装置２０の脳波情報取得部２２から脳波情報３４１を取得して脳波情報記憶部３４に格納する。
【００２４】
編集履歴情報記憶部３３は、編集履歴情報を記憶する。図２は、編集履歴情報のデータ構成の一例を示す図である。図２に示すように、編集履歴情報３３１は、ユーザＩＤ、日時、編集状況の情報の項目を有する。ユーザＩＤは、学習者を識別する識別情報である。編集状況は、プログラムのどの位置にどのような文字が入力されたのか、或いは、削除されたのかを示す情報である。なお、編集履歴情報３３１は、編集作業中の各時点の全情報を含んでもよい。また、編集履歴情報３３１は、差分情報でもよい。また、編集履歴情報３３１は、編集状況には、プログラムのビルド時と実行時とのエラーの種別情報も含む。
【００２５】
ここで、図２には、例えば、ユーザＩＤ「００１」の学習者により、２０１６年１０月５日１０時０５分４１秒に、位置１０に「ｆ」が追加された編集が行われたことが例示されている。
【００２６】
脳波情報記憶部３４は、脳波情報を記憶する。図３は、脳波情報のデータ構成の一例を示す図である。図３に示すように、脳波情報３４１は、ユーザＩＤ、日時、α波の値、β波の値、γ波の値、δ波の値、θ波の値、脳波集中度、脳波熟考度の項目を有する。ここで、日時は、脳波情報が収集された日及び時刻を表す。α波、β波、γ波、δ波、及びθ波は、脳波の各成分の強度を表す。脳波集中度及び脳波熟考度は、脳波のパターン等により導出される学習者の教材の学習に対する集中度及び熟考度を表す。図３には、例えば、ユーザＩＤ「ＩＤ００１」の学習者について、２０１６年１０月５日１０時５分４１秒には、脳波集中度８０、脳波熟考度２５であったことが例示されている。
【００２７】
分析部３０２は、編集履歴情報及び脳波情報に基づいて、構成要素分析、ブロック構造試行錯誤分析、エラー分析を行い、プログラミング学習者の弱点を分析する。分析部３０２は、構成要素分析部３５、ブロック構造試行錯誤分析部３６及びエラー分析部３７を有する。
【００２８】
構成要素分析部３５は、編集履歴情報と脳波情報とに基づいて、プログラムの各構成要素に対する学習者の弱点を分析し、分析結果を構成情報分析結果として構成要素分析結果記憶部３８に格納する。構成要素分析部３５は、プログラミング言語の構成要素別に学習者の弱点の分析を行う。
【００２９】
まず、構成要素分析部３５は、編集履歴情報を用いて、該編集履歴情報のすべてのレコードについて、構成要素種別を分析し、特定する。そして、構成要素分析部３５は、特定された構成要素種別の開始時間及び終了時間から編集時間を算出する。続いて、構成要素分析部３５は、脳波情報を用いて、開始時間及び終了時間の間の情動状態を分析する。
【００３０】
そして、構成要素分析部３５は、編集履歴情報のすべてのレコードにおける構成要素種別、編集時間及び情動状態を基に、構成要素種別ごとの総編集時間と平均情動状態とを算出する。構成要素分析部３５は、各構成要素種別について総編集時間が所定時間より長いか否かを判定する。この所定時間は、予め設定された時間である。
【００３１】
構成要素分析部３５は、総編集時間が所定時間より長いと判定した構成要素種別は、学習者にとっての弱点であると判定する。構成要素分析部３５は、総編集時間が所定時間以下であると判定した構成要素種別について、平均情動状態が「困難」であるか否かを判定する。構成要素分析部３５は、平均情動状態が「困難」であると判定した構成要素種別は、学習者にとっての弱点であると判定する。構成要素分析部３５は、平均情動状態が「困難」でないと判定した構成要素種別は、学習者にとっての弱点ではないと判定する。このように、構成要素分析部３５は、構成要素種別ごとに、学習者の弱点であるか否かを分析する。
【００３２】
ブロック構造試行錯誤分析部３６は、編集履歴情報と脳波情報とに基づいて、プログラムのブロック構造に関する学習者の弱点を分析し、分析結果をブロック構造試行錯誤分析結果としてブロック構造試行錯誤分析結果記憶部３９に格納する。ブロック構造試行錯誤分析部３６は、プログラミング言語のブロック構造の生成及び削除の頻度分析を行う。
【００３３】
具体的には、まず、ブロック構造試行錯誤分析部３６は、編集履歴情報を基に、編集履歴情報のすべてのレコードに対して、判定対象の編集履歴が中括弧の入力或いは削除であるか否かを判定する。ブロック構造試行錯誤分析部３６は、判定対象の編集履歴が中括弧の入力或いは削除であると判定した場合、その中括弧がプログラムの先頭から何番目の中括弧であるかを算出する。
【００３４】
そして、ブロック構造試行錯誤分析部３６は、判定対象の編集履歴が中括弧の削除であるか否かを判定する。ブロック構造試行錯誤分析部３６は、判定対象の編集履歴が中括弧の削除であると判定した場合、その中括弧が入力されてから削除されるまでの時間を算出する。
【００３５】
そして、ブロック構造試行錯誤分析部３６は、脳波情報を用いて、編集履歴情報のすべてのレコードについて情動状態を分析する。
【００３６】
続いて、ブロック構造試行錯誤分析部３６は、編集履歴情報のすべてのレコードに対して、判定対象の編集履歴が中括弧の入力或いは削除であるか否かの判定、編集履歴が中括弧の入力或いは削除であるか否かの判定、及び、情動状態分析処理を行った後に、すべてのブロック構造の作成から削除までの総編集時間を算出する。そして、ブロック構造試行錯誤分析部３６は、すべてのブロック構造の作成から削除までの平均情動状態を算出する。続いて、ブロック構造試行錯誤分析部３６は、ブロック構造の総編集時間が所定時間より長いか否かを判定する。
【００３７】
ブロック構造試行錯誤分析部３６は、ブロック構造の総編集時間が所定時間より長いと判定した場合、学習者はブロック構造が理解できていないと判定する。また、ブロック構造試行錯誤分析部３６は、ブロック構造の総編集時間が所定時間以下であると判定した場合、平均情動状態が「困難」であるか否かを判定する。
【００３８】
ブロック構造試行錯誤分析部３６は、平均情動状態「困難」であると判定した場合、学習者はブロック構造を理解できていないと判定する。一方、ブロック構造試行錯誤分析部３６は、平均情動状態が「困難」でない判定した場合、学習者はブロック構造を理解できていると判定する。このように、ブロック構造試行錯誤分析部３６は、プログラムのブロック構造に関する学習者の弱点を分析する。
【００３９】
エラー分析部３７は、編集履歴情報に基づいて、プログラムのエラーに関する学習者の弱点を、エラーの種別ごとに分析し、分析結果をエラー分析結果としてエラー分析結果記憶部４０に格納する。エラー分析部３７は、プログラミング言語の作成時及び実行時のエラーの分析を行う。
【００４０】
具体的には、まず、エラー分析部３７は、編集履歴情報を用いて、編集履歴情報のエラーをエラー種別ごとにカウントする。そして、エラー分析部３７は、カウントしたエラーについて、一定時間内に同じエラーが繰り返しているか否かをエラー種別ごとに判定する。
【００４１】
エラー分析部３７は、同じエラーが繰り返していると判定されたエラー種別に関し、学習者はエラーの意味が理解できていないと判定する。また、エラー分析部３７は、同じエラーが繰り返されていないと判定されたエラー種別について、特定のエラーの頻度が予め設定された閾値を越えたか否かを判定する。エラー分析部３７は、特定のエラーの頻度が予め設定された閾値を越えたと判定したエラー種別について、学習者は該当エラーのケアレスミスが多いと判定する。また、エラー分析部３７は、特定のエラーの頻度が予め設定された閾値を越えていないと判定したエラー種別について、学習者は、このエラー種別のエラーに関しては通常の理解度であると判定する。
【００４２】
構成要素分析結果記憶部３８は、構成要素分析部３５による分析結果を記憶する。具体的には、構成要素分析結果記憶部３８は、個別構成要素分析結果と構成要素分析結果とを記憶する。
【００４３】
図４は、個別構成要素分析結果のデータ構成の一例を示す図である。図４に示すように、個別構成要素分析結果３８０は、ユーザＩＤ、構成要素種別、編集時間及び情動状態の項目を有する。構成要素種別は、編集履歴情報を基に構成要素分析部３５によって分析された編集履歴情報の構成要素の種別である。編集時間は、特定された構成要素種別の開始時間及び終了時間を基に、構成要素分析部３５によって算出された編集時間である。情動状態は、脳波情報を基に構成要素分析部３５によって分析された、開始時間及び終了時間の間の情動についての情動状態である。
【００４４】
図５は、構成要素分析結果のデータ構成の一例を示す図である。図５に示すように、構成要素分析結果３８１は、ユーザＩＤ、構成要素種別及び判定結果の項目を有する。判定結果は、編集時間及び情動状態を基に構成要素分析部３５によって判定された、学習者の各種別の構成要素の理解の有無に関する判定結果である。
【００４５】
ブロック構造試行錯誤分析結果記憶部３９は、ブロック構造試行錯誤分析結果を記憶する。図６は、ブロック構造試行錯誤分析結果のデータ構成の一例を示す図である。図６に示すように、ブロック構造試行錯誤分析結果３９１は、ユーザＩＤ及び判定結果の項目を有する。判定結果は、学習者のブロック構造の理解の有無に関する判定結果である。
【００４６】
エラー分析結果記憶部４０は、エラー分析結果を記憶する。図７は、エラー分析結果のデータ構成の一例を示す図である。図７に示すように、エラー分析結果４０１は、ユーザＩＤ、エラー種別及び判定結果の項目を有する。判定結果は、プログラムのエラーに関する学習者の理解の有無に関する判定結果である。
【００４７】
分析結果出力部４１は、分析部３０２による分析結果を出力する。分析結果出力部４１は、学習者や教師などの外部からの分析結果の提供要求を受けると、分析結果を要求元に出力する。分析結果出力部４１は、構成要素分析結果記憶部３８が記憶する構成要素分析結果３８１、ブロック構造試行錯誤分析結果記憶部３９が記憶するブロック構造試行錯誤分析結果３９１、及び、エラー分析結果記憶部４０が記憶するエラー分析結果４０１を読み込み、ユーザの弱点に関する分析情報として出力する。
【００４８】
［分析処理］
図８〜図２３を参照して、本実施の形態に係る分析装置３０による分析処理について説明する。
【００４９】
図８は、編集履歴取得処理の処理手順例を示すシーケンス図である。分析装置３０では、編集履歴情報取得部３１が、学習装置２０の編集履歴情報取得部２１から、編集履歴情報を取得し（ステップＳ１）、編集履歴情報記憶部３３に編集履歴情報を格納する（ステップＳ２）。
【００５０】
図９は、脳波情報取得処理の処理手順を示すシーケンス図である。分析装置３０では、脳波情報取得部３２が、学習装置２０の脳波情報取得部２２から、脳波情報を取得し（ステップＳ１１）、脳波情報記憶部３４に脳波情報を格納する（ステップＳ１２）。
【００５１】
図１０は、構成要素分析処理の処理手順を示すシーケンス図である。分析装置３０では、構成要素分析部３５が、編集履歴情報記憶部３３に格納されている編集履歴情報３３１と、脳波情報記憶部３４に格納されている脳波情報３４１とを読み込む（ステップＳ２１，Ｓ２２）。そして、構成要素分析部３５は、プログラムの各構成要素に対する学習者の弱点を分析する構成要素分析処理を実行し（ステップＳ３５０）、構成要素分析結果３８１を、構成要素分析結果記憶部３８に格納する（ステップＳ２４）。
【００５２】
図１１は、ブロック構造試行錯誤分析処理の処理手順を示すシーケンス図である。分析装置３０では、ブロック構造試行錯誤分析部３６が、編集履歴情報記憶部３３に格納されている編集履歴情報３３１と、脳波情報記憶部３４に格納されている脳波情報３４１とを読み込む（ステップＳ３１，Ｓ３２）。そして、ブロック構造試行錯誤分析部３６は、プログラムのブロック構造の作成と削除の頻度を分析するブロック構造試行錯誤分析処理を行う（ステップＳ３６０）。続いて、ブロック構造試行錯誤分析部３６は、ブロック構造試行錯誤分析結果３９１を、ブロック構造試行錯誤分析結果記憶部３９に格納する（ステップＳ３４）。
【００５３】
図１２は、エラー分析処理の処理手順を示すシーケンス図である。分析装置３０では、エラー分析部３７が、編集履歴情報記憶部３３に格納されている編集履歴情報３３１を読み込む（ステップＳ４１）。そして、エラー分析部３７は、プログラムのエラーの頻度を分析するエラー分析処理を実行し（ステップＳ３７０）、エラー分析結果４０１を、補助記憶装置１３のエラー分析結果記憶部４０に格納する（ステップＳ４２）。
【００５４】
図１３は、分析結果出力処理の処理手順を示すシーケンス図である。分析結果出力部４１は、学習者や教師などの外部からの分析結果の提供要求を受けると（ステップＳ５１）、構成要素分析結果記憶部３８に格納されている構成要素分析結果３８１と、ブロック構造試行錯誤分析結果記憶部３９に格納されているブロック構造試行錯誤分析結果３９１と、エラー分析結果記憶部４０に格納されているエラー分析結果４０１と、を読み込み（ステップＳ５２，Ｓ５３，Ｓ５４）、分析情報４１１を分析結果の要求者に出力する（ステップＳ５５）。
【００５５】
［構成要素分析処理］
次に、図１０に示す構成要素分析処理（ステップＳ３５０）の処理手順について説明する。図１４は、図１０に示す構成要素分析処理の処理手順を示すフローチャートである。
【００５６】
図１４に示すように、構成要素分析部３５は、読み込んだ編集履歴情報３３１を用いて、編集履歴情報３３１のレコードごとに、構成要素種別分析処理（ステップＳ３５０２）を行い、構成要素種別分析処理（ステップＳ３５０２）によって特定された構成要素種別の開始時間及び終了時間から編集時間を算出する（ステップＳ３５０３）。
【００５７】
構成要素分析部３５は、読み込んだ脳波情報記憶部３４を用いて、構成要素種別の開始時間と終了時間の間の情動について情動状態分析処理（ステップＳ３５０４）を行い、求めた構成要素種別、編集時間及び情動状態を記録する（ステップＳ３５０５）。ステップＳ３５０２〜ステップＳ３５０５の処理は、編集履歴情報３３１のすべてのレコードについて繰り返し実行される（ステップＳ３５０１，Ｓ３５０６）。
【００５８】
そして、構成要素分析部３５は、ステップＳ３５０５で記録した情報を基に、構成要素種別ごとの総編集時間を算出する（ステップＳ３５０７）。そして、構成要素分析部３５は、ステップＳ３５０５で記録した情報を基に、構成要素種別ごとの平均情動状態を算出する（ステップＳ３５０８）。
【００５９】
続いて、構成要素分析部３５は、各構成要素種別について総編集時間が所定時間より長いか否かを判定する（ステップＳ３５０９）。構成要素分析部３５は、総編集時間が所定時間より長いと判定した場合（ステップＳ３５０９：Ｙｅｓ）、その構成要素種別は学習者にとっての弱点であると判定する（ステップＳ３５１０）。一方、構成要素分析部３５は、総編集時間が所定時間以下であると判定した場合（ステップＳ３５０９：Ｎｏ）、平均情動状態が「困難」であるか否かを判定する（ステップＳ３５１１）。
【００６０】
構成要素分析部３５は、平均情動状態が「困難」であると判定した場合（ステップＳ３５１１：Ｙｅｓ）、その構成要素種別は該当学習者にとっての弱点であると判定する（ステップＳ３５１２）。これに対し、構成要素分析部３５は、平均情動状態が「困難」でないと判定した場合（ステップＳ３５１１：Ｎｏ）、その構成要素種別は学習者にとっての弱点ではないと判定する（ステップＳ３５１３）。
【００６１】
［構成要素種別分析処理］
次に、図１４に示す構成要素種別分析処理（ステップＳ３５０２）の処理手順について説明する。図１５は、図１４に示す構成要素種別分析処理の処理手順を示すフローチャートである。
【００６２】
まず、構成要素分析部３５は、判定したい構成要素について、ブロック構造に該当するか否かのブロック構造判定処理（ステップＳ３５０２０１）を行う。そして、構成要素分析部３５は、条件分岐の条件式に該当するか否かの条件分岐条件式要素判定処理（ステップＳ３５０２０２）を行う。
【００６３】
続いて、構成要素分析部３５は、条件分岐のブロックに該当するか否かの条件分岐ブロック判定処理（ステップＳ３５０２０３）を行う。そして、構成要素分析部３５は、繰り返しの条件式に該当するか否かの繰り返し条件式要素判定（ステップＳ３５０２０４）を行う。そして、構成要素分析部３５は、繰り返しのブロックに該当するか否かの繰り返しブロック判定（ステップＳ３５０２０５）を行う。構成要素分析部３５は、演算要素に該当するか否かの演算要素判定処理（ステップＳ３５０２０６）を行う。そして、構成要素分析部３５は、識別子要素に該当するか否かの識別子要素判定処理（ステップＳ３５０２０７）を行う。
【００６４】
この図１５に示す処理を行うことによって、構成要素分析部３５は、判定対象の編集履歴の構成要素を分析する。続いて、構成要素種別分析処理の各処理について詳細に説明する。
【００６５】
［ブロック構造判定処理］
まず、図１５に示すブロック構造判定処理（ステップＳ３５０２０１）の処理手順について説明する。図１６は、図１５に示すブロック構造判定処理の処理手順を示すフローチャートである。
【００６６】
構成要素分析部３５は、判定対象の編集履歴に“｛”が追加されたか否かを判定する（ステップＳ３５０２０１０１）。構成要素分析部３５は、判定対象の編集履歴に“｛”が追加されたと判定した場合（ステップＳ３５０２０１０１：Ｙｅｓ）、ブロック構造として判定する（ステップＳ３５０２０１０４）。これに対し、構成要素分析部３５は、判定対象の編集履歴に“｛”が追加されていないと判定した場合（ステップＳ３５０２０１０１：Ｎｏ）、次に、編集履歴に“｝”が追加されたか否かを判定する（ステップＳ３５０２０１０２）。
【００６７】
構成要素分析部３５は、編集履歴に“｝”が追加されたと判定した場合（ステップＳ３５０２０１０２：Ｙｅｓ）、ブロック構造としてと判定する（ステップＳ３５０２０１０４）。また、構成要素分析部３５は、編集履歴に“｝”が追加されていないと判定した場合（ステップＳ３５０２０１０２：Ｎｏ）、次に、編集履歴に追加または削除された文字が“｛”の右側であるか、または、“｛”と“｝”との内側であるか否かを判定する（ステップＳ３５０２０１０３）。
【００６８】
構成要素分析部３５は、編集履歴に追加または削除された文字が“｛”の右側であるか、または、“｛”と“｝”との内側であると判定した場合（ステップＳ３５０２０１０３：Ｙｅｓ）、ブロック構造として判定する（ステップＳ３５０２０１０４）。一方、構成要素分析部３５は、編集履歴に追加または削除された文字が“｛”の右側でなく、“｛”と“｝”との内側でもないと判定した場合（ステップＳ３５０２０１０３：Ｎｏ）、そのまま処理を終了する。
【００６９】
［条件分岐条件式要素判定処理］
次に、図１５に示す条件分岐条件式要素判定処理（ステップＳ３５０２０２）の処理手順について説明する。図１７は、図１５に示す条件分岐条件式要素判定処理の処理手順を示すフローチャートである。
【００７０】
まず、構成要素分析部３５は、判定対象の編集履歴に“(”が追加され、その直前が“if”であるか否かを判定する（ステップＳ３５０２０２０１）。構成要素分析部３５は、判定対象の編集履歴に“(”が追加され、その直前が“if”であると判定した場合（ステップＳ３５０２０２０１：Ｙｅｓ）、判定対象を条件分岐条件式要素として判定する（ステップＳ３５０２０２０４）。
【００７１】
また、構成要素分析部３５は、判定対象の編集履歴に“(”が追加されず、または、追加された“(”の直前が“if”でないと判定した場合（ステップＳ３５０２０２０１：Ｎｏ）、判定対象の編集履歴に“)”が追加され、対応する括弧が“if(”であるか否かを判定する（ステップＳ３５０２０２０２）。構成要素分析部３５は、判定対象の編集履歴に“)”が追加され、対応する括弧が“if(”であると判定した場合（ステップＳ３５０２０２０２：Ｙｅｓ）、判定対象を条件分岐条件式要素として判定する（ステップＳ３５０２０２０４）。
【００７２】
構成要素分析部３５は、判定対象の編集履歴に“)”が追加されず、または、追加された“)”に対応する括弧が“if(”でないと判定した場合（ステップＳ３５０２０２０２：Ｎｏ）、編集履歴に追加または削除された文字が“if(”の右側であるか、或いは“if(”と“)”との内側であるか否かを判定する（ステップＳ３５０２０２０３）。
【００７３】
構成要素分析部３５は、編集履歴に追加または削除された文字が“if(”の右側であるか、或いは“if(”と“)”との内側である判定した場合（ステップＳ３５０２０２０３：Ｙｅｓ）、判定対象を条件分岐条件式要素として判定する（ステップＳ３５０２０２０４）。また、構成要素分析部３５は、編集履歴に追加または削除された文字が“if(”の右側でなく、また、“if(”と“)”との内側でもないと判定した場合（ステップＳ３５０２０２０３：Ｎｏ）、処理を終了する。
【００７４】
［条件分岐ブロック判定処理］
次に、図１５に示す条件分岐ブロック判定処理（ステップＳ３５０２０３）の処理手順について説明する。図１８は、図１５に示す条件分岐ブロック判定処理の処理手順を示すフローチャートである。
【００７５】
図１８に示すように、構成要素分析部３５は、判定対象の編集履歴が前述のブロック構造判定処理（ステップＳ３５０２０１）においてブロック構造であると判定されており、左側が条件分岐条件式要素であるか否かを判定する（ステップＳ３５０２０３０１）。構成要素分析部３５は、判定対象の編集履歴が前述のブロック構造判定処理においてブロック構造であると判定されており、左側が条件分岐条件式要素であると判定した場合（ステップＳ３５０２０３０１：Ｙｅｓ）、判定対象を条件分岐ブロックとして判定する（ステップＳ３５０２０３０３）。
【００７６】
また、構成要素分析部３５は、判定対象の編集履歴が前述のブロック構造判定処理においてブロック構造であると判定されておらず、または、左側が条件分岐条件式要素でないと判定した場合（ステップＳ３５０２０３０１：Ｎｏ）、判定対象の編集履歴が前述のブロック構造判定処理においてブロック構造であると判定されており、左側が“else”であるか否かを判定する（ステップＳ３５０２０３０２）。
【００７７】
構成要素分析部３５は、判定対象の編集履歴が前述のブロック構造判定処理においてブロック構造であると判定されており、左側が“else”であると判定した場合（ステップＳ３５０２０３０２：Ｙｅｓ）、判定対象を条件分岐ブロックとして判定する（ステップＳ３５０２０３０３）。構成要素分析部３５は、判定対象の編集履歴が前述のブロック構造判定処理においてブロック構造であると判定されておらず、または、左側が“else”でないと判定した場合（ステップＳ３５０２０３０２：Ｎｏ）、処理を終了する。
【００７８】
ここで、図１５に示す繰り返し条件式要素判定処理（ステップＳ３５０２０４）と繰り返しブロック判定処理（ステップＳ３５０２０５）との詳細は、前述の条件分岐条件式要素判定処理（ステップＳ３５０２０２）と条件分岐ブロック判定処理（ステップＳ３５０２０３）との処理と、同様の処理である。
【００７９】
［演算要素判定処理］
次に、図１５に示す演算要素判定処理（ステップＳ３５０２０６）の処理手順について説明する。図１９は、図１５に示す演算要素判定処理の処理手順を示すフローチャートである。
【００８０】
図１９に示すように、構成要素分析部３５は、判定対象の編集履歴に演算子のいずれかの記号が追加されたか否かを判定する（ステップＳ３５０２０６０１）。構成要素分析部３５は、判定対象の編集履歴に演算子のいずれかの記号が追加されていると判定した場合（ステップＳ３５０２０６０１：Ｙｅｓ）、判定対象を演算要素として判定する（ステップＳ３５０２０６０３）。
【００８１】
構成要素分析部３５は、判定対象の編集履歴に演算子のいずれかの記号が追加されていないと判定した場合（ステップＳ３５０２０６０１：Ｎｏ）、判定対象の編集履歴に丸括弧が追加され、かつ、その丸括弧が予約語や関数に対応する括弧ではないかを判定する（ステップＳ３５０２０６０２）。
【００８２】
構成要素分析部３５は、判定対象の編集履歴に丸括弧が追加され、かつ、予約語や関数に対応する括弧ではないと判定した場合（ステップＳ３５０２０６０２：Ｙｅｓ）、判定対象を演算要素として判定する（ステップＳ３５０２０６０３）。また、構成要素分析部３５は判定対象の編集履歴に丸括弧が追加されず、または、追加された丸括弧が予約語や関数に対応する括弧であると判定した場合（ステップＳ３５０２０６０２：Ｎｏ）、処理を了する。
【００８３】
［識別子要素判定処理］
次に、図１５に示す識別子要素判定処理（ステップＳ３５０２０７）の処理手順について説明する。図２０は、図１５に示す識別子要素判定処理の処理手順を示すフローチャートである。
【００８４】
まず、構成要素分析部３５は、判定対象の編集履歴に演算子のいずれかの記号が追加され、その直前が識別子であるか否かを判定する（ステップＳ３５０２０７０１）。構成要素分析部３５は、判定対象の編集履歴に演算子のいずれかの記号が追加され、その直前が識別子であると判定した場合（ステップＳ３５０２０７０１：Ｙｅｓ）、判定対象を識別子要素として判定する（ステップＳ３５０２０７０４）。
【００８５】
構成要素分析部３５は、判定対象の編集履歴に演算子のいずれかの記号が追加されず、または、追加された記号の直前が識別子でないと判定した場合（ステップＳ３５０２０７０１：Ｎｏ）、判定対象の編集履歴に右括弧が追加され、その直前が識別子であるか否かを判定する（ステップＳ３５０２０７０２）。
【００８６】
構成要素分析部３５は、判定対象の編集履歴に右括弧が追加され、その直前が識別子であると判定した場合（ステップＳ３５０２０７０２：Ｙｅｓ）、判定対象を識別子要素として判定する（ステップＳ３５０２０７０４）。
【００８７】
構成要素分析部３５は、判定対象の編集履歴に右括弧が追加されず、または、追加された丸括弧の直前が識別子でないと判定した場合（ステップＳ３５０２０７０２：Ｎｏ）、判定対象の編集履歴にセミコロンやコロンが追加され、その直前が識別子であるか否かを判定する（ステップＳ３５０２０７０３）。構成要素分析部３５は、判定対象の編集履歴にセミコロンやコロンが追加され、その直前が識別子であると判定した場合（ステップＳ３５０２０７０３：Ｙｅｓ）、判定対象を識別子要素として判定する（ステップＳ３５０２０７０４）。構成要素分析部３５は、判定対象の編集履歴にセミコロンやコロンが追加されず、または、追加されたセミコロンやコロンの直前が識別子でないと判定した場合（ステップＳ３５０２０７０３：Ｎｏ）、処理を終了する。
【００８８】
［情動状態分析処理］
次に、図１４に示す情動状態分析処理（ステップＳ３５０４）の処理手順について説明する。図２１は、図１４に示す情動状態分析処理の処理手順を示すフローチャートである。
【００８９】
まず、構成要素分析部３５は、分析対象の時刻における脳波情報が、予め定められた第１の閾値より大きいか否かを判定する（ステップＳ３５０４０１）。構成要素分析部３５は、分析対象の時刻における脳波情報が第１の閾値より大きいと判定した場合（ステップＳ３５０４０１：Ｙｅｓ）、情動状態を「困難」であると判定する（ステップＳ３５０４０３）。
【００９０】
構成要素分析部３５は、分析対象の時刻における脳波情報が第１の閾値以下であると判定した場合（ステップＳ３５０４０１：Ｎｏ）、分析対象の時刻における脳波情報が予め定められた第２の閾値より小さいか否かを判定する（ステップＳ３５０４０２）。
【００９１】
構成要素分析部３５は、分析対象の時刻における脳波情報が第２の閾値より小さいと判定した場合（ステップＳ３５０４０２：Ｙｅｓ）、情動状態を「簡単」であると判定する（ステップＳ３５０４０４）。また、構成要素分析部３５は、分析対象の時刻における脳波情報が予め定められた第２の閾値以上であると判定した場合（ステップＳ３５０４０２：Ｎｏ）、情動状態を「普通」であると判定する（ステップＳ３５０４０５）。
【００９２】
構成要素分析部３５は、図１４〜図２１に示す各処理を実行することによって、図４に例示する個別構成要素分析結果３８０を取得した上で、図５に例示する構成要素分析結果３８１を得る。
【００９３】
［ブロック構造試行錯誤分析処理］
次に、図１１に示すブロック構造試行錯誤分析処理（ステップＳ３６０）の処理手順について説明する。図２２は、図１１に示すブロック構造試行錯誤分析処理の処理手順を示すフローチャートである。
【００９４】
ブロック構造試行錯誤分析部３６は、編集履歴情報記憶部３３に格納されている編集履歴情報３３１を読み込み、編集履歴情報３３１のレコードごとに、判定対象の編集履歴が中括弧の入力或いは削除であるか否かを判定する（ステップＳ３６０２）。ブロック構造試行錯誤分析部３６は、判定対象の編集履歴が中括弧の入力或いは削除であると判定した場合（ステップＳ３６０２：Ｙｅｓ）、その編集履歴の中括弧がプログラムの先頭から何番目の中括弧であるかを算出する（ステップＳ３６０３）。
【００９５】
ブロック構造試行錯誤分析部３６は、判定対象の編集履歴が中括弧の入力或いは削除でないと判定した場合（ステップＳ３６０２：Ｎｏ）、または、ステップＳ３６０３の処理後、判定対象の編集履歴が中括弧の削除であるか否かを判定する（ステップＳ３６０４）。ブロック構造試行錯誤分析部３６は、判定対象の編集履歴が中括弧の削除であると判定した場合（ステップＳ３６０４：Ｙｅｓ）、その中括弧が入力されてから削除されるまでの時間を算出する（ステップＳ３６０５）。
【００９６】
ブロック構造試行錯誤分析部３６は、判定対象の編集履歴が中括弧の削除でないと判定した場合（ステップＳ３６０４：Ｎｏ）、またはステップＳ３６０５処理後、対象であるレコードについて情動状態分析処理（ステップＳ３６０６）を行う。ブロック構造試行錯誤分析部３６は、構成要素分析処理（ステップＳ３５０）における情動状態分析処理（ステップＳ３５０４）と同様の処理手順を実行することによって、情動状態分析処理を行う。ステップＳ３６０２〜ステップＳ３６０６の処理は、編集履歴情報３３１のすべてのレコードについて繰り返し実行される（ステップＳ３６０１，Ｓ３６０７）。
【００９７】
そして、ブロック構造試行錯誤分析部３６は、すべてのブロック構造の作成から削除までの総編集時間を算出する（ステップＳ３６０８）。次に、ブロック構造試行錯誤分析部３６は、すべてのブロック構造の作成から削除までの平均情動状態を算出する（ステップＳ３６０９）。
【００９８】
続いて、ブロック構造試行錯誤分析部３６は、ブロック構造の総編集時間が所定時間より長いか否かを判定する（ステップＳ３６１０）。ブロック構造試行錯誤分析部３６は、ブロック構造の総編集時間が所定時間より長いと判定した場合（ステップＳ３６１０：Ｙｅｓ）、学習者にとってブロック構造が理解できていないと判定する（ステップＳ３６１１）。
【００９９】
また、ブロック構造試行錯誤分析部３６は、ブロック構造の総編集時間が所定時間以下であると判定した場合（ステップＳ３６１０：Ｎｏ）、平均情動状態が「困難」であるか否かを判定する（ステップＳ３６１２）。ブロック構造試行錯誤分析部３６は、平均情動状態が「困難」であると判定した場合（ステップＳ３６１２：Ｙｅｓ）、学習者にとってブロック構造が理解できていないと判定する（ステップＳ３６１１）。一方、ブロック構造試行錯誤分析部３６は、平均情動状態が「困難」でないかと判定した場合（ステップＳ３６１２：Ｎｏ）、学習者にとってブロック構造は理解できていると判定する（ステップＳ３６１３）。
【０１００】
この、ブロック構造試行錯誤分析部３６は、図２２に示すブロック構造試行錯誤分析処理を実行することによって、図６に例示するブロック構造試行錯誤分析結果３９１を得る。
【０１０１】
［エラー分析処理］
次に、図１２に示すエラー分析処理（ステップＳ３７０）の処理手順について説明する。図２３は、図１２に示すエラー分析処理の処理手順を示すフローチャートである。
【０１０２】
エラー分析部３７は、編集履歴情報記憶部３３に格納されている編集履歴情報３３１を読み込み、編集履歴情報３３１のエラーをエラー種別ごとにカウントする（ステップＳ３７０２）。ステップＳ３７０２の処理は、編集履歴情報３３１のすべてのレコードについて繰り返し実行される（ステップＳ３７０１，Ｓ３７０３）。
【０１０３】
エラー分析部３７は、カウントしたエラーについて、エラー種別ごとに一定時間内に同じエラーが繰り返されているか否かを判定する（ステップＳ３７０４）。エラー分析部３７は、一定時間内に同じエラーが繰り返されていると判定した場合（ステップＳ３７０４：Ｙｅｓ）、学習者は、その種別のエラーの意味が理解できていないと判定する（ステップＳ３７０６）。また、エラー分析部３７は、一定時間内に同じエラーが繰り返されていないと判定した場合（ステップＳ３７０４：Ｎｏ）、そのエラー種別について、特定のエラーの頻度が予め設定された閾値を越えたか否かを判定する（ステップＳ３７０５）。
【０１０４】
エラー分析部３７は、特定のエラーの頻度が予め設定された閾値を越えたと判定した場合（ステップＳ３７０５：Ｙｅｓ）、学習者は該当エラーのケアレスミスが多いと判定する（ステップＳ３７０７）。また、エラー分析部３７は、特定のエラーの頻度が予め設定された閾値を越えていないと判定した場合（ステップＳ３７０５：Ｎｏ）、学習者は、このエラー種別のエラーに関しては通常の理解度であると判定する（ステップＳ３７０８）。
【０１０５】
［実施の形態の効果］
このように、実施の形態に係る分析システムでは、分析装置３０は、編集履歴情報と脳波情報とに基づいて、プログラムの各構成要素に対する学習者の弱点を分析する。また、分析装置３０は、編集履歴情報と脳波情報とに基づいて、プログラムのブロック構造に関する学習者の弱点を分析する。そして、分析装置３０は、編集履歴情報に基づいて、プログラムのエラーに関する学習者の弱点を、エラーの種別ごとに分析する。
【０１０６】
したがって、本実施の形態によれば、編集履歴情報と脳波情報とを組み合わせた分析処理を行うことにより、正解プログラムとの比較をする必要がなく、分析の際に大量のバックトラッキングを行うことないため、効率的に分析処理を実行することができる。そして、本実施の形態によれば、図８〜図２２の処理を実行することによって、プログラミング学習過程での学習者のつまずきや理解不足の要因などの学習者の弱点を、自動的に分析し、学習者等に提供することができる。
【０１０７】
［変形例］
例えば、構成要素分析処理（ステップＳ３５０）と、ブロック構造試行錯誤分析処理（ステップＳ３６０）と、エラー分析処理（ステップＳ３７０）とは、逐次的に行う必要はなく、それぞれ独立に行ってもよい。
【０１０８】
また、構成要素分析処理（ステップＳ３５０）と、ブロック構造試行錯誤分析処理（ステップＳ３６０）と、エラー分析処理（ステップＳ３７０）とは、学習時に学習終了後に行う他、逐次的に行ってもよい。
【０１０９】
すなわち、本実施の形態では、構成要素分析処理（ステップＳ３５０）と、ブロック構造試行錯誤分析処理（ステップＳ３６０）と、エラー分析処理（ステップＳ３７０）とは、学習が一度終了した後に、編集履歴情報記憶部３３及び脳波情報記憶部３４に記憶されたデータを基に分析した例を説明した。これに限らず、構成要素分析処理（ステップＳ３５０）と、ブロック構造試行錯誤分析処理（ステップＳ３６０）と、エラー分析処理（ステップＳ３７０）とは、編集履歴情報取得部３１と脳波情報取得部３２から直接データを受信し、学習時にリアルタイムで分析を行ってもよい。その場合、編集履歴情報記憶部３３と脳波情報記憶部３４は不要となる。
【０１１０】
また、本実施の形態では、構成要素分析処理（ステップＳ３５０）と、ブロック構造試行錯誤分析処理（ステップＳ３６０）と、エラー分析処理（ステップＳ３７０）とを、並列に記述している。これに限らず、本実施の形態において実行する処理は、構成要素分析処理（ステップＳ３５０）のみでもよいし、ブロック構造試行錯誤分析処理（ステップＳ３６０）のみでもよいし、エラー分析処理（ステップＳ３７０）のみでもよいし、この３つの処理のいずれかを組み合わせた任意の組み合わせの処理のみでもよい。
【０１１１】
また、本実施の形態では、構成要素種別分析処理（ステップＳ３５０２）として、ブロック構造判定処理（ステップＳ３５０２０１）と、条件分岐条件式要素判定処理（ステップＳ３５０２０２）と、条件分岐ブロック判定処理（ステップＳ３５０２０３）と、繰り返し条件式要素判定処理（ステップＳ３５０２０４）と、繰り返しブロック判定処理（ステップＳ３５０２０５）と、演算要素判定処理（ステップＳ３５０２０６）と、識別子要素判定処理（ステップＳ３５０２０７）と、を含む構成要素分析処理（ステップＳ３５０）及びブロック構造試行錯誤分析処理（ステップＳ３６０）を実行するが、関数ブロックを判定してもよいし、変数や配列の代入や参照などを判定してもよい。分析装置３０は、分析結果を利用する利用者の要求に従って、構成要素の種類を追加や削除を行えばよい。
【０１１２】
また、本実施の形態では、構成要素種別分析処理（ステップＳ３５０２）の各分析において、“｛”や“｝”などの記号をブロックの境界として判定に利用しているが、“｛”や“｝”を使わないプログラミング言語の場合、その言語特有の境界（例えばPython言語におけるインデント）を判定することによって適用が可能である。
【０１１３】
具体的には、構成要素分析部３５は、開始括弧については、スペースキーやタブキーが押された際に、それが行頭か否かをチェックすることによって判定する。そして、構成要素分析部３５は、終了括弧の検出において、リターンキーが押された次の行の行頭がインデントされたか否かを判定する必要があるため、リターンキーが押され、かつ、次のログがスペースやインデントではないというように二つのログをチェックすることで判定を行う。
【０１１４】
また、本実施の形態では、構成要素分析部３５は、情動状態分析処理（ステップＳ３５０４）において、「困難」「簡単」「普通」というように３段階の判定を行っているが、「やや困難」や「やや簡単」などのように必要に応じてより多くの区分で判定してもよい。
【０１１５】
また、構成要素分析部３５は、構成要素分析処理（ステップＳ３５０）の総編集時間が所定時間より長いか否かの判定（ステップＳ３５０９）では、上記のように、予め設定した所定時間を越えているかを判断するほか、学習者全体の平均編集時間に対して標準偏差の２倍以上の時間がかかっている場合というように統計的に判定することもできる。
【０１１６】
また、構成要素分析部３５は、構成要素分析処理（ステップＳ３５０）の情動状態が困難であるか否かの判定（ステップＳ３５１１）において、ある構成要素の総編集時間がある閾値を下回っており、かつ、情動的にも「困難」と判定された場合に「困難」であると判定してもよい。また、構成要素分析部３５は、ステップＳ３５１１において、学習者全体の平均編集時間に対して、対象学習者の編集時間が標準偏差の１倍以上より下回っており、かつ、情動的にも「困難」と判定された場合に「困難」であると判定してもよい。
【０１１７】
また、ブロック構造試行錯誤分析部３６は、ブロック構造機構錯誤分析（ステップＳ３６０）の所定時間より長いか否かの判定（ステップＳ３６１０）において、上記のように、予め設定した値を越えているかを判断するほか、学習者全体の平均編集時間に対して標準偏差の２倍以上の時間がかかっている場合というように統計的に決めることもできる。
【０１１８】
また、ブロック構造試行錯誤分析部３６は、ブロック構造機構錯誤分析処理（ステップＳ３６０）の情動状態が困難であるか否かの判定（ステップＳ３６１２）において、ある構成要素の総編集時間がある閾値を下回っており、かつ、情動的にも「困難」と判定した場合としてもよい。また、ブロック構造機構錯誤分析学習者全体の平均編集時間に対して，対象学習者の編集時間が標準偏差の１倍以上より下回っており、かつ情動的にも「困難」と判定された場合に「困難」であると判定してもよい。
【０１１９】
また、本実施の形態では、エラー分析処理（ステップＳ３７０）の特定のエラーの頻度が閾値を越えたか否かの判定（ステップＳ３７０７）において、閾値を予め設定してもよいし、学習者全体の平均回数からの偏差によって動的に定めてもよい。
【０１２０】
また、本実施の形態では、構成要素分析処理（ステップＳ３５０）において、編集履歴情報３３１の各レコードに対して構成要素を判定するが、各レコードに対して複数の構成要素が判定される場合がある。例えば、構成要素分析部３５は、繰り返しブロックの中に条件分岐ブロックがある場合、該レコードは、繰り返しブロックと条件分岐ブロックの両方の構成要素として判定する。この場合、構成要素分析結果３８１には、複数のレコードとして記録されることになる。
【０１２１】
［システム構成等］
図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部又は任意の一部が、ＣＰＵ及び当該ＣＰＵにて解析実行されるプログラムにて実現され、或いは、ワイヤードロジックによるハードウェアとして実現され得る。本実施の形態に係る学習装置２０及び分析装置３０は、コンピュータとプログラムによっても実現でき、プログラムを記録媒体に記録することも、ネットワークを通して提供することも可能である。
【０１２２】
また、本実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的におこなうこともでき、或いは、手動的に行なわれるものとして説明した処理の全部又は一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【０１２３】
［プログラム］
図２４は、プログラムが実行されることにより、学習装置２０及び分析装置３０が実現されるコンピュータの一例を示す図である。コンピュータ１０００は、例えば、メモリ１０１０、ＣＰＵ１０２０を有する。また、コンピュータ１０００は、ハードディスクドライブインタフェース１０３０、ディスクドライブインタフェース１０４０、シリアルポートインタフェース１０５０、ビデオアダプタ１０６０、ネットワークインタフェース１０７０を有する。これらの各部は、バス１０８０によって接続される。
【０１２４】
メモリ１０１０は、ＲＯＭ１０１１及びＲＡＭ１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１１００に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１１００に挿入される。シリアルポートインタフェース１０５０は、例えばマウス１１１０、キーボード１１２０に接続される。ビデオアダプタ１０６０は、例えばディスプレイ１１３０に接続される。例えば、これらの記憶媒体は、主記憶装置と補助記憶装置に分けられる。主記憶装置はプログラムを記憶する。また、補助記憶装置は、情報の書き込み及び読出しが可能であり、処理の実行によって取得された編集履歴情報、脳波情報、構成要素分析情報、ブロック構造試行錯誤分析結果及びエラー分析結果を記憶する。
【０１２５】
ハードディスクドライブ１０９０は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、学習装置２０及び分析装置３０の各処理を規定するプログラムは、コンピュータ１０００により実行可能なコードが記述されたプログラムモジュール１０９３として実装される。プログラムモジュール１０９３は、例えばハードディスクドライブ１０９０に記憶される。例えば、学習装置２０及び分析装置３０における機能構成と同様の処理を実行するためのプログラムモジュール１０９３が、ハードディスクドライブ１０９０に記憶される。なお、ハードディスクドライブ１０９０は、ＳＳＤ（ステップＳolid  State  Drive）により代替されてもよい。
【０１２６】
また、上述した実施形態の処理で用いられる設定データは、プログラムデータ１０９４として、例えばメモリ１０１０やハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０が、メモリ１０１０やハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出して実行する。
【０１２７】
なお、プログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ１１００等を介してＣＰＵ１０２０によって読み出されてもよい。或いは、プログラムモジュール１０９３及びプログラムデータ１０９４は、ネットワーク（ＬＡＮ、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール１０９３及びプログラムデータ１０９４は、他のコンピュータから、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【０１２８】
以上、本発明者によってなされた発明を適用した実施形態について説明したが、本実施形態による本発明の開示の一部をなす記述及び図面により本発明は限定されることはない。すなわち、本実施形態に基づいて当業者等によりなされる他の実施形態、実施例及び運用技術等はすべて本発明の範疇に含まれる。
【符号の説明】
【０１２９】
１  分析システム
２０  学習装置
２１  編集履歴情報取得部
２２  脳波情報取得部
３０  分析装置
３１  編集履歴情報取得部
３２  脳波情報取得部
３３  編集履歴情報記憶部
３４  脳波情報記憶部
３５  構成要素分析部
３６  ブロック構造試行錯誤分析部
３７  エラー分析部
３８  構成要素分析結果記憶部
３９  ブロック構造試行錯誤分析結果記憶部
４０  エラー分析結果記憶部
４１  分析結果出力部
【図１】
2019215438.tif 000003
【図２】
2019215438.tif 000004
【図３】
2019215438.tif 000005
【図４】
2019215438.tif 000006
【図５】
2019215438.tif 000007
【図６】
2019215438.tif 000008
【図７】
2019215438.tif 000009
【図８】
2019215438.tif 000010
【図９】
2019215438.tif 000011
【図１０】
2019215438.tif 000012
【図１１】
2019215438.tif 000013
【図１２】
2019215438.tif 000014
【図１３】
2019215438.tif 000015
【図１４】
2019215438.tif 000016
【図１５】
2019215438.tif 000017
【図１６】
2019215438.tif 000018
【図１７】
2019215438.tif 000019
【図１８】
2019215438.tif 000020
【図１９】
2019215438.tif 000021
【図２０】
2019215438.tif 000022
【図２１】
2019215438.tif 000023
【図２２】
2019215438.tif 000024
【図２３】
2019215438.tif 000025
【図２４】
2019215438.tif 000026