第4次産業革命により社会におけるソフトウェアが果される役割はより一層重要なものとなった.そこで,情報系学部学科を有する殆どの教育機関において,プログラミング演習やソフトウェア開発演習と言った,プログラムのコーディングやテスト等,ソフトウェア開発に必要な技術を学生が手を動かしながら学ぶ実践的な形式の演習が開講されている.
これら演習において学生のプログラミング行動の分析による支援が行われている.プログラミング行動とは,開発者がソフトウェアを開発するにあたって行ったコーディング,コンパイル,デバッグ,テスト等の内容や対応した成果物,関連する一連のメトリクスを指す.本研究ではプログラミング行動の内,ソースコードの実装が不明確な箇所に対する編集,実行,デバッグのサイクルにあたる探索的行動が行われる粒度に着目した.学生の異なる粒度の探索的行動を収集し分析することで,開発者がソフトウェア開発において躓いている原因の調査やその解決策について広く講じることが可能になる.
本研究ではまず,プログラミング演習においてソースコードの編集履歴に着目し探索的行動(探索的プログラミング)を収集・分析した.さらに,探索的プログラミングが,条件分岐や繰り返し処理など,プログラミングのどの機能に対して行われているか,すなわちプログラミングのどの機能に学生が躓いているのかを自動検出する手法を提案した.実際の演習で得られたデータを分析したところ,特定の課題に躓いている学生だけでなく,その原因の推測や特定の課題に対する学生間のアプローチの違いも発見できた.提案手法では教員に負担を強いることなく教員サイドから学生の探索的プログラミングを検出でき,教員は各学生の理解度や試行錯誤に応じたアドバイスを与えることが可能である.
次に,教育プロジェクトであるCloudSpiralのカリキュラムに組み込まれている,ソフトウェア開発演習においてビルドエラーに着目した探索的行動(ビルド活動)を収集・分析した.2013年度から2015年度のビルドエラーのログを基に,エラーの分類や各種エラーが発生する原因等について調査を行った結果,個人で解決可能なエラーとチームメンバーと協力することで解決可能なエラーを特定した.この結果を基にCloudSpiralの教員が2016年度の同開発演習の改善を行った結果,エラー数の減少やエラー解決時間の減少に繋がった.本研究の結果はソフトウェア開発演習において教員が補填すべき内容を明らかにしただけでなく,学生がビルドエラーを生じたときに詳細なアドバイスを可能にする.