はじめに
中村研究室M2の関口祐豊です。
自分は2025年3月2〜4日の3日間にわたって一橋講堂で開催されたインタラクション2025に参加してきました。
自分は現地で「PP-Checker 1.5: LLMとの協働により標準出力を含むプログラムを評価する半自動採点システム」というタイトルでデモ発表をさせていただきました。
今回の学会では、多くの研究者との議論や意見交換を通じて、今後の研究の発展に向けた新たな視点を得ることができました。
研究内容
背景
プログラミング教育において、採点業務は教員やTAの大きな負担となっています。学生数が増えると、課題を迅速に採点するのは難しくなり、フィードバックが遅れがちです。また、学生さんは課題として設定されている仕様を読み飛ばしていたり、その仕様を満たしているかを確認していなかったりするため、その課題の差し戻しに時間がかかったりしています。
そうした課題を解決するため、これまで我々はLLM を活用しつつも具体的な正答は提示せずにフィードバックを提供する半自動採点システムPP-Checkerを実現してきました。
PP-Checkerの挙動
課題提出画面(学生)
課題採点画面(TA・教員)
PP-Checker は、プログラムの構文やエラーを検出し、適切なフィードバックを提供することで、学生のに迅速なフィードバックを返しつつ、TA・教員の採点業務の負担を軽減することを目的としています。
しかし、プログラムが構文的には正しいものの、期待される標準出力を生成しない場合や、ランダム性を伴う出力の場合に、適切なフィードバックを返せていないという問題がありました。
そこで今回の研究では、PP-Checkerをアップデートし、プログラムの構文や整合性のみを評価していた仕組みに加えて標準出力の実行結果も評価に組み込むPP-Checker 1.5を提案しました。
提案手法
履修者が PP-Checker 上に Web ブラウザからプログラムを提出したタイミングで、履修者の Web ブラウザ上で実行し、その実行で得られた標準出力の結果を取得するとともに、その標準出力も含めたプロンプトを設計することで採点に活かす手法を提案しました。これにより、プログラムの出力結果も LLM が考慮するようになり、採点精度の向上が期待できます。また、実行時間がかかるような最適化されていないプログラムの場合(非効率な素数の判定など)は、履修者のコンピュータ上のブラウザで実行に時間がかかるだけで無限ループなどを組み込んでしまっていても、サーバには負荷をかけないという利点があります。
実験結果
本システムを明治大学のプログラミング演習Ⅰにおける13個の標準出力を含む課題に対して検証を行いました。その結果、
✅ 採点精度が9.3%向上
✅ 一意解のない出力を含む課題でも高精度な採点が可能
✅ 学生のフィードバックを活かした柔軟な採点が実現
特に、従来手法では対応が難しかった確率的な出力や長大な出力を伴う課題において、顕著な改善が見られました。
実運用
実際に明治大学のプログラミング演習Ⅱ(秋学期) にPP-Checker 1.5を導入し、学生の提出課題に対する採点を支援しました。
運用事例
1. DicePrime(サイコロを振って素数の確率を求める課題)
- LLMが、出力された確率が妥当な範囲(13~14%)に収まっているかを評価
- 出力形式が正しくない場合、自動でフィードバックを提供
2. GENOME(DNA配列の出現パターンを解析する課題)
- 出力される塩基の統計が正しいかどうかをLLMがチェック
- 結果の並び順が異なっていても、意味的に同じ場合は正しく採点
今後の展望
- 他のプログラミング言語への対応拡張
- プログラムの視覚的出力を考慮した評価
- 他科目(レポート課題など)への発展
ポスター
書誌情報
感想
インタラクション2025 は、多くの刺激的な研究と出会える素晴らしい場でした!今回の発表を通じて得られたフィードバックをもとに、さらに研究を進めていきたいと思います。
また、今回関わっていただいた皆様本当にありがとうございました。2日目の非公式懇親会では、美味しいビールと一緒に多くの研究者と交流することができ、今後の研究のヒントになる貴重な時間を過ごせました!
最後になりますが、本研究の実験に協力してくれた明治大学の皆さん、そして発表を聞いてくださった皆さん、本当にありがとうございました!