日本ソフトウェア科学会第 41 回大会 (2024 年度) 講演論文集

生成 AI を活用したプログラミング演習支援のためのバーチャル TA の提案
佐々木 虎太郎伊藤 恵

2022 年頃より生成 AI の活用が社会的に注目され，プログラミング教育においても利用されている．生成 AI を用いたプログラミング支援システムによって，学生だけでなく教員や TA(Teaching Assistant) も恩恵を受けている．
しかし，それらのシステムではプログラムコードを生成し学生に提供されており，学習者の主体性が損なわれている．また，従来のプログラミング教育では，教員や TA は学生ごとにつまずきやすいポイントや理解ができていない概念を特定し，それに基づいた効果的な学生指導を行うのが難しい．本研究ではプログラミング支援システムの効果を高める手段の一つとして生成 AI を活用しバーチャル TA となるシステムを開発することで，教員や TA の業務負担を軽減させ効果的な学生指導を行いやすくすることを目的する．

構築に努める必要がある．

1 はじめに2022 年頃より，生成 AI の活用が社会的に注目さ近年，大学におけるプログラミング教育は大きな変れている．桑田ら [3] は，ChatGPT†1 をプログラミ革を遂げ，多様化している．多くの大学では，プログングに利用する学生の形態を分類した．具体的には，ラミングが必修科目として導入され，情報工学やコ学習者のプログラミング言語やアルゴリズムなどのンピュータサイエンスを専攻しない学生にも基礎的詳細についての知識を必ずしも前提としない「仲介モなプログラミング教育が提供されている．大学や高デル」と，これらの知識を前提とする「支援モデル」

専等ではプログラミングなどの学習のために，PC をに分類している．また，プログラミング演習のエラー使った演習を伴う講義が多く導入されている．この演解消に注目し，ChatGPT による支援の評価を実施し習講義は，多数の学生が個別に異なるタイミングで課た．その結果，多くの場合，ChatGPT は有益な情報題に取り組むため，学生が抱える多様な学習上の問題を提供するが，場合によっては誤った情報を出力するに対して教員がきめ細かく対応することが困難であことが分かった．プログラミングを学習中の学生が利る [7] [2]．そのため授業補助者として大学院生などの用すると誤解を招く可能性があるため，質問の方法なTA(Teaching Assistant) を配置することで，学生のどを工夫する必要がある．

学習状況の把握や個別指導を行う取り組みが多く採

小原ら [5] は，ChatGPT を Google Colab†2 に統用されている [4]．特に，学生の学習能力や進捗状況合したプログラミング演習支援システム KOGI につには個人差があり，全ての学生に対して適切な支援をいて，開発状況と初期の実践の報告を行った．2023

提供することは容易ではない．そのため，TA や教員

年前期のプログラミング演習における事例を紹介し，は常に効率的な指導方法や効果的なサポート体制のKOGI 導入により教員や TA への軽微なエラーに関す

A Proposal for a Virtual Teaching Assistant Utilizing
Generative AI to Support Programming Exercises.
Kotaro Sasaki, 公 立 は こ だ て 未 来 大 学 シ ス テ ム 情 報科学部情報アーキテクチャ学科, School of Systems
Information Science and Department of Media Ar
chitecture, Future University Hakodate.

る問い合わせが大きく減少したことを明らかにした．
近年，生成 AI が急速に進化し，最近では GPT-4o†1 https://openai.com/chatgpt/†2 https://colab.research.google.com/

がリリースされた．Achiam, et al [1] によると GPT-4.0 モデルは GPT-3.5 モデルに比べて試験成績の面前提とせず，ChatGPT と対話しながらプログラムを作成する．

で専門性の高いものに強く，言語による正確さも性

支援モデル 学習者がプログラミング言語やアル能が高い．コードの生成についても GPT-3.5 モデル

ゴリズムなどの知識を前提とし，ChatGPT と対よりも約 10 ％精度が高いため，このモデルを使用し話しながらプログラムを作成する．てプログラムの支援を行うと良い結果がでると思わ「支援モデル」は「現在のプログラミングモデル」の発展であり，プログラミング作成者は ChatGPTれる．
本研究では，システムの効果を高める手段の一つとの誤りに気づいて指摘する必要があると述べられてして生成 AI を活用しバーチャル TA となるシステムいる．さらに，プログラミング演習における Syntaxを開発することで，プログラミング授業における教Error, Name Error, Type Error の解消に注目して員や TA の業務負担を軽減させることを目指す．本稿

ChatGPT による支援の評価を実施した結果，エラーにおいてバーチャル TA とは，プログラミング教育の情報のみでその他プログラムに関する情報の提供の場において教員や TA の役割を補完・支援するものをせずに評価した場合でも概ね正しい指摘が得られである．具体的には，教員や TA の代わりに学生の質ることを確認したが，誤解を招く回答もあり，プログ問に対応することを想定している．さらに，授業中にラミングを学習中の学生が利用すると誤解を招く可TA や教員がプログラムのどこを教えたかをリアルタ能性があることが指摘されている．

イムで収集し，システムが特にどこに力を入れて教えPhung et al. [6] は，GPT-4 を用いて，失敗したテるべきかを学習させる機能を組み込む．この機能によストケースや修正情報を含むプロンプトを使用する

り，システムは学生がつまずきやすいポイントや理解ことで，質の高いプログラミングヒントを生成する手が難しい概念を特定し，それに基づいた効果的な学生法，GPT4Hints-GPT3.5Val を開発した．この手法指導を行うことが可能となる．また，既存のシステム

では，GPT-4 が「チューターモデル」としてヒントをではコードの生成が行われるが，本システムでは回答生成し，その後 GPT-3.5 が「学生モデル」として生を制限し，学生に言葉でのヒントのみを提供するよう成されたヒントの有用性を自動的に評価する．具体的に設計する．これにより，学生は課題解決力を養い，には，Python プログラミング入門の「基本的なアルより深い理解を得ることができる．また，ChatGPTゴリズム」，「データ正規表現」，「データ分析」の異なのモデルは現在の最新モデルの GPT-4o を使用するる領域のデータセットを用いて評価を行った．その結予定である．

果，GPT4Hints-GPT3.5Val は全データセットで一貫して 90 ％以上の精度レベルを達成した．この精度

2 関連研究は，「学生モデル」がヒントを利用してプログラムを修

2. 1 生成 AI のプログラミングエラーへの対応支正できる割合を示しており，GPT-4 による「チュー援に関する研究

ターモデル」が出したヒントを用いて，GPT-3.5 に

桑田ら [3] によると，ChatGPT をプログラミングよる「学生モデル」がそれぞれのデータセットに対しに利用する場合の利用法には，以下の 3 つのモデルて 90 ％以上の確率でプログラムを修正できたことをがある．

示している．

生成 AI を使わない現在のプログラミングモデル
生成 AI を使わず，作成するプログラムの動作を理解していることを前提に，ドキュメントを参照しながらプログラムを作成する．

2. 2 生成 AI を活用したプログラミング演習支援
システムに関する研究
小原ら [5] は，ChatGPT を Google Colab に統合

仲介モデル 学習者のプログラミング言語やアルしたプログラミング演習支援システム KOGI についゴリズムなどの詳細についての知識を必ずしもて，開発状況と初期の実践の報告を行った．KOGI

は，プログラミング学習においてエラー診断とヒント提供を中心に，専門用語の解説からコード修正支援，対話的な UI まで幅広い機能を提供し，Jupyter

Notebook や Google Colab などの環境で実装され，学習者の理解とスキル向上をサポートする AI ツールである．小原らは，担当するプログラミング演習の講義で活用し，ユーザの実行したコード，発生したエラー，ユーザの入力，ChatGPT からの回答を全てログとして記録し，それらを分析し，学生の動向を見た．その結果，学生から TA へ質問される内容が単
純なエラーに対する質問は減り，プログラミングする際のロジックの組み方や考え方への質問に変わった．

図1

システム概要KOGI 導入により軽微なエラーへの問い合わせが大3. 2 システムの機能きく減少したことを明らかにした．

提案システムは以下のような機能を持つ．

1. 問題と模範コードの登録機能

3 提案システム

教員や TA が授業前に問題と模範コードをデー本研究では，プログラミング教育における教員やタベースに登録できる機能．この機能により，授TA を対象に，業務負担の軽減と効果的な学生指導を業で使用する問題と模範コードを一括で管理し，目的とした，生成 AI を活用したバーチャル TA シス

必要に応じて編集，追加，削除が可能である．

テムを提案する．

2. 授業中の指導内容の記録機能
教員や TA が授業中に学生に教えた内容をリア

3. 1 システムの概要

ルタイムでデータベースに保存する機能．これにシステムの全体像を図 1 に示す．図 1 の各部分により，学生がつまずきやすいポイントを特定し，対応する具体的な機能は 3. 2 節で説明する．このシその情報を生成 AI に学習させることができる．

ステムは，OpenAI 社の ChatGPT の API を使用し，3. 学習者向け対話機能最新モデルである GPT-4 を利用する予定である．学

学習者が生成 AI と対話しながら学習を進めるた

習者と生成 AI のやり取りは，Chatbot のような対話めの Chatbot 機能．この Chatbot は，起動時に型で行う．提案システムの動作は以下の通りである．

問題と模範コードのデータベースの値を生成 AI

まず，学習者が支援を必要とする内容を入力する．回に学習させることで，迅速に問題の内容に応じた答となるプログラムコードが生成されないようにす支援を提供できる．かつ，上記 2 の機能で記録さるため，学生が入力したものに「あなたは一流のプロれた指導内容から学生がつまずきやすいポイングラマです．コードは生成しないでください」というトを学習することで，つまずきやすいポイントに文章を自動的に追加し，送信する．また，教員や TA特化した学習支援が可能になる．

は授業中に学生がつまずきやすいポイントや理解が難しい概念を特定するために提案システムを使用し，

3. 3 回答の制限と効果教えた内容をデータベースにリアルタイムで保存し，提案システムでは，学生が入力した質問内容に「あ生成 AI に学習させる．これにより，生成 AI が学生

なたは一流のプログラマです．コードは生成しないでの理解度や学習状況に応じた適切なヒントや指導をください」というプロンプトを自動的に追加すること提供できるようになる．

で，生成 AI が直接的なコードを提供しないように制限している．これにより，学生が課題解決力を養うこ

図3

図2

制限ありの出力結果

制限なしの出力結果とができる．
制限しない場合，生成 AI は学生に直接的なプログラムコードを提供することが多い．これにより，学生は問題解決のための具体的なコードをすぐに得ることができるため，短期的には課題を迅速に解決することができる．しかし，この方法では学生が自ら考えるサ機会が減少し，問題解決のプロセスを十分に経験できイズとパスないため，深い理解や応用力の育成が阻害される可能性がある．学生が生成 AI に依存することで，自己解

図4問題と模範コードの入力画面

決能力や批判的思考力が低下し，長期的な学習効果が減少するリスクがある．
一方で，回答を制限することで，生成 AI は直接的作成・削除 (図 4)．

2. 授業中の指導内容のリアルタイム保存 (図 5)．

なコードを提供せず，代わりに学生に対してヒントや

3. 学習者向け画面の動作確認 (図 6，図 7)．

方向性のみを示すようになる．これにより，学生は自今後の予定としては，バーチャル TA のプロンプトらの考えで問題を解決する必要が生じるため，試行錯生成機能を強化し，実際の授業中に TA がどのよう誤を通じて学習を深めることができると考えられる．に振る舞うかを再現することを目指す．そのために，このプロセスは，学生の論理的思考力や課題解決能力

TA が学生に対してどのように振る舞っているのかをを向上させ，自律的な学習姿勢を育むのに効果的であ把握するためのアンケート調査を実施し，授業中にどる．また，学生が自らの力で解決した経験は，自信をのような内容の質問を受けているのか，質問に対する持つことにもつながり，さらなる学習意欲の向上が期

TA の行動を調査する．また，調査結果を基に，バー待できる．

チャル TA のフィードバック精度を向上させるための実際に，回答を制限しない場合と制限する場合の比機能を追加開発する予定である．

較を行った結果を図 2 と図 3 に示す．

4 演習時の質問対応調査
3. 4 現在の開発状況と今後の開発予定現在，以下の機能が実装されており，Web 上で操作できるようになっている．

1. 問題と模範コードのデータベースの編集・新規

実際の演習で，TA が学生に対してどのように振る舞っているのかを収集するため，プログラミング教育を受講中の学生が，授業中にどのような内容を質問し，そして質問に対する TA がどのような行動をする

4. 3 質問項目
質問項目は以下のように用意した• 氏名• 担当クラス• 対応した課題番号
図5

学生に教えた内容の入力画面• 質問内容• 教えた内容
基本情報を収集するため，氏名と担当クラスを質問項目に入れた．氏名選択欄は，TA の名前を選択式にしており，「その他」の項目を追加することで，教員の図6

学習者向け画面

教えた内容も収集できるようにした．担当クラスも同様に選択式で，こちらも「その他」の項目を設け，教員や TA の担当外のクラスに対応できるようにしている．また，対応した課題番号も選択式にしており，これは 1 回の演習の複数の課題のうちの何番目かを選ぶ形式である．ここにも「その他」の項目を追加し，授業に関係のない質問に関してはこの項目で選別

図7

問題について聞いた結果できるようにした．質問内容と教えた内容については自由記述とし，アンケートは複数回回答できるようにのかを調べるアンケートを実施した．

している．

4. 1 調査目的

4. 4 結果調査の目的は三つある．一つ目は，授業中に課題 1

本稿の執筆時点では，39 件の回答が集まっている．

から徐々に難しくなっていくが，特にどの段階での質学習者が授業前および授業中に，特にどの段階での問が多いのかを調査する．二つ目は，TA が学生の進質問が多いのかを調査した．結果は表 1 に示す．過半

捗状況や理解度に応じてどのように対応しているのか数以上が課題 1 への質問になり，課題 2 への質問はを調査すること．三つ目は，学生が授業中にどのようその他への質問と変わらない結果から，最初何もわかな内容の質問が多いのかを調査する，アンケートは，らず TA に頼るが，課題 1 をクリアすると課題 2 はGoogle フォームで作成し，回答してもらった．

自力で解けるようになり，最初の理解を深めることで後の課題に大きく影響してくると考えられる．また，

4. 2 対象科目と調査対象者

授業開始するとほとんどの学生は課題 1 から同時にアンケートの対象者は，著作らが所属する大学の学スタートし，この結果からかなりの質問が最初に偏る部 2 年前期必修科目で，Java プログラミングを扱っことが分かり，そうなると TA が全員の質問対応してている情報処理演習 I(2024) の TA を行っている B4

いくと，最初に対応した学生と最後に対応した学生で以上の学生 18 名を対象にする．情報処理演習 I(2024)進捗に差が出てしまうことになってしまうと考えられを受講している学生は 200 名である．今回対象としる．それと共に，TA の業務負担もそこに集中するのている演習科目では全 13 回の授業で，各回に 1 つまではないかと考えられる．

たは複数の課題が出される．これらの課題は段階的にTA が学生の進捗状況や理解度に応じてどのように難易度が上がるように設計されており，学習者は授業対応しているのか，学生が授業中にどのような内容の中に課題 1 から順次取り組んでいく．

質問が多いのかを調査した．質問内容は自由記述で収集し，後に分類を行った．結果は表 2 に示す．質問内

表1

課題内容の分類と合計

容として，「エラー内容の説明」と「アドバイスを求課題 126める」と「その他」に分類した．
「エラー内容の説明」

課題 2

7

は「無限ループが起きてしまう」と具体的な内容でその他

6

質問されていたが，「アドバイスを求める」はかなり合計

39

抽象的で「正規表現の \ が二つある理由はなんですか」と用語の解説を求められている質問もあったが，表2「〜が分からない」と質問されてコードを読んでいく

エラー内容の説明

10とエラーが原因であることが分かり，実質「エラー内アドバイスを求める

23

容の説明」に分類されるものもある．具体的には，学その他

6生が「出力結果が違いその理由がわからない」と質問

合計

39

質問内容の分類と合計

した場合，自分のコードと見比べながら，return の位置と if の条件が足りないことを指摘し，なぜこの表3実装になるのか理由を説明する事例があった．このよ

直接指示

21

うなケースでは，初めは抽象的な質問として「アドバ確認とフィードバック

12イスを求める」に分類されるが，コードの詳細を確認

逆質問と考えさせる方法

2

する過程で具体的なエラー内容の説明に繋がるため，リソース参照

2

実質的には「エラー内容の説明」に分類されることと教員に報告2なる．したがって「アドバイスを求める」という領域

合計

39

教えた内容の分類と合計に「エラー内容の説明」という内容が存在しているということが考えられる．
また，TA の教えた内容についても以下の 5 種類に分類した．

「直接指示」と「確認とフィードバック」と比較して少数ではあるが「逆質問と考えさせる方法」と「リソース参照」という項目がある．
「直接指示」と「確認直接指示 学生に対して具体的な解決方法やコードとフィードバック」は結果的に TA が学生に答えを教の書き方を直接伝えるものであり，例えばエラーえてしまうが，これでは本研究の目的である効果的な内容から問題個所を指摘することが含まれる．

学生指導が達成されないのではないかと考えられる．

確認とフィードバック 学生のコードを確認し，そしかし，「逆質問と考えさせる方法」と「リソース参の内容をフィードバックするものであり，例えば照」に関しては学生がどこまで理解しているのかを自分が書いたコードを 1 行ずつ丁寧に説明しなTA が理解し，それに合わせた用語やアルゴリズムのがら実装のヒントを与えることが含まれる．

解説をすることによって直接の答えは教えずに，正解逆質問と考えさせる方法 学生に対して質問を投までの過程をヒントとして学生に示し，答えにたどげかけ，自ら考えさせる方法．

りつけるようにしている．
「逆質問と考えさせる方法」

リソース参照 関連資料や参考文献を示すもの．と「リソース参照」が増えることによって効果的な学教員に報告 特定の問題を教員に報告する対応．

生指導が達成されるのではないかと考えられる．こ分類した結果は表 3 に示す．の結果を踏まえて，学生の理解度に応じて適切なヒ分類した結果，「直接指示」と「確認とフィードバッントやリソースを提供できるようにすることを検討ク」の二つの項目が過半数以上を占めた．
「直接指示」

している．具体的には，リソース参照機能を拡充し，と比較して「確認とフィードバック」は，コードレ関連する資料や参考文献を自動的に提案することで，ビューから具体的なアドバイスまで行うため，質問学生が自ら学びを深めるためのサポートを行う．

した一人の学生に対して時間がかかると考えられる．

5 まとめと今後の予定
本研究では，プログラミング教育における教員やTA を対象に，業務負担の軽減と効果的な学生指導を目的とした，生成 AI を活用したバーチャル TA システムの提案を行った．プログラミング教育を受講中の学生が，授業中にどのような内容を質問し，そして質問に対する TA がどのような行動をするのかを調査したアンケートの結果から，授業中に特に多くの質問が集中する段階や，学生がよく質問する内容について明らかになったため，提案システムで学生からの質問内容に応じて過去の授業資料を参照し，第何回の資料を見ればわかるといった具体的なガイドを提供できる機能の開発を進める．今後はこの機能を試作し，評価実験を行うことで，提案システムの効果について検証する予定である．

参 考 文 献[1] Achiam, J., Adler, S., Agarwal, S., Ahmad,L., Akkaya, I., Aleman, F. L., Almeida, D., Altenschmidt, J., Altman, S., Anadkat, S., et al.: Au-tomating Human Tutor-Style Programming Feedback: Leveraging GPT-4 Tutor Model for Hint Generation and GPT-3.5 Student Model for Hint Validation, Proceedings of the 14th Learning Analytics
and Knowledge Conference, March 2024, pp. 12–23.
[2] 加藤利康, 石川孝: プログラミング演習支援システムにおける学習状況把握機能の提案, 情報処理学会研究報
告. コンピュータと教育研究会報告, Vol. 2013, No. 2,2013, pp. 1–8.
[3] 桑田喜隆, 石坂徹, 政谷好伸, 横山重俊, 浜元信州, 谷沢智史: 生成系 AI を活用した Jupyter Notebook のプログラミング演習支援に関する検討, 人工知能学会第二種研究会資料, Tokyo, 人工知能学会, 2023, pp. 06.
[4] 文 部 科 学 省: ティー チ ン グ・ア シ ス タ ン ト に
つ い て, http://www.mext.go.jp/b_menu/shingi/chukyo/chukyo4/003/gijiroku/07011713/001/002.
htm, 2013. Accessed: 2013-11-12.
[5] 小原有以, 佐藤美唯, 倉光君郎: KOGI: ChatGPT をColab に統合したプログラミング演習支援, No Title,2023, pp. 141–148.
[6] Phung, T., Pădurean, V. A., Singh, A., Brooks,C., Cambronero, J., Gulwani, S., ..., and Soares, G.:
Automating human tutor-style programming feedback: Leveraging gpt-4 tutor model for hint generation and gpt-3.5 student model for hint validation, Proceedings of the 14th Learning Analytics andKnowledge Conference, March 2024, pp. 12–23.
[7] 西澤泰彦: 多人数講義における問題点と教育方法, 名古屋高等教育研究, Vol. 6(2006).