第一工科大学研究報告第36号（2024）pp.23-30

大規模言語モデルを利用した非解答型プログラミング学習支援の試行
渋沢良太
第一工科大学 工学部 情報・AI・データサイエンス学科（〒899-4395 鹿児島県霧島市国分中央 1-10-2）

Trial of Programming Learning Support Using
Large Language Model for Non-Answer-Based Approaches
Ryota Shibusawa
1-10-2 Kokubuchuo, Kirishima-City, Kagoshima, 899-4395, Japan

Abstract: Services using Large Language Model (LLM) such as ChatGPT are having a significant impact in various
educational fields. There are concerns that using LLMs can deprive learners of the opportunity to deepen their own
thinking, as they can quickly obtain answers. It has been suggested that LLMs also need roles like that of an advisor
or mentor that do not output answers. In this study, we developed an interactive chatbot, CodeMentorDIT, using
GPTs to support programming learning, and conducted experiments to evaluate its usage. This system does not
immediately output answers; instead, it provides hints to guide users towards answers, presents comments withincode that could be answers, suggests topics for learners to research, offers advice on the use of functions, assists with
the interpretation of errors, and implements encouragement for learners.
Key words: Large Language Model, GPTs, Programming Education

1.

はじめにに，GitHub Copilot などでは，コードの自動補

近年, ChatGPT 等の大規模言語モデルを使っ完が行われ，あまり詳しくプログラミングの細たサービスが，様々な分野の教育現場に大きな部について考えなくても，プログラムを作れる影響を与えている．大規模言語モデル（Large

ようになっており，業務としてのプログラミン

Language Model, LLM）とは，非常に巨大なデグの効率が良くなっている．一方で，教育の場ータセットとディープラーニング技術を用いて面において，これをプログラミングの初学者が構築された言語モデルであり，2024 年 4 月まで学習の際にそのまま使用することは適していなに，GPT, PaLM, LaMDA, Llama, Claude, Grokい．

等が開発されている．LLM を使えば，レポート

このような背景のもと，筆者は LLM を活用し課題の内容を一定以上の品質で作り上げることて，学習者に直接的な答えを与えるのではなができるため，大学等の教育機関では，その使く，彼らが自らの思考を深め，問題解決能力を用を原則禁止する等の処置もなされていた．

養う手助けをすることが重要であると考えた．

LLM の使用を禁止する理由は，LLM の答え

そして，GPTs を使ってプログラミング学習を支が間違っている場合があること，答えをすぐに援する対話型チャットボット CodeMentorDIT知ることができるため，学習者が自らの思考をを開発した．本システムでは，学習者に尋ねら深める機会を奪ってしまうこと等がある．実際れたことに対して答えを教えず，どのようなこ

第一工科大学研究報告

第36号（2024）とを考えれば良いかを返答し，学習者が自分自より，学習者が自ら考えてプログラミングする身で考えてプログラミングすることを支援すように促している．また，答えとなるプログラ

る．これにより，LLM の優れた機能を活かしたムではなく，プログラムのコメントアウトを用まま，LLM の回答が誤っていることや，LLMいて学習者に説明を行う．

が学習者自身が考える機会を奪わず，いつでもGPTs の Instructions には，表 1 の文章を設学習者が質問できるメンターを実装できると考定した．また，Web Browsing, DALL-E Imageえた．

Generation, Code Interpreter はオフにした．

2.

表 1

関連研究

GPTs の Instructions の設定

掛下らの研究[1]では，理工系大学の学生を対Instructions の内容

象に，学生の能力低下や指導支援不足といったCodeMentor は、プログラミングに関連するプログラミング教育の課題を克服するための支質問に対して詳細な説明とアドバイスを提供

援ツール pgtracer が提案されている．pgtracerするアシスタントです。質問者から明示のあは，学習を促進するために穴埋め問題を採用しる場合を除き、サンプルコードを絶対に出力ており，教師が様々な難易度の問題を作成し，しないように注意します。質問に対しては、学生の回答を自動的に採点することができる．

対応の説明とヒントを提供しますが、その回また，学習履歴のデータを収集することで，教答が要件に合っているか、思考を促すような師は指導方法を効果的に調整・改善することが内容になっているか、質問者に答えをそのまできる．

ま出力していないかを確認し、適宜修正して田口らの研究[2]では，学生のプログラミングにから出力します。質問者の理解を確認するた

対する理解度や態度に応じて，最適な演習問題

めに、回答の最後には、「これで説明は理解でを選択する学習支援方法が提案されている．こきましたか？」という確認の文言を入れるよの研究では，この方法を大学の C 言語プログラうにし、さらに理解できていない場合は追加ミングコースに適用したケーススタディについで質問してくださいという指示も含めます。て詳述しており，学生の取り組みと理解度が大幅に向上したことを示している．

3.2

システムによる返答の例

これらの研究と異なり，本研究は演習問題の作本システムの性能を確認するために行った質成や提示を行うのではなく，与えられた問題を問と，システムによる解答を図 1, 図 2, 図 3,解くプロセスにおける自己学習の支援を目的と

図 4 に示す．

している．そのため，上記の関連研究の知見とこれらの質問と返答例で確認できる通り，本シ組み合わせて活用することが可能である．

ステムでは，学習者がプログラムの実装方法をシステムに尋ねた時，プログラムそのものを返3.

開発したシステム

答せず，実装するためのヒントを学習者に提示

3.1

システムの概要している．これにより，学習者自身が考えなが本システムは，学習者の自律的な問題解決能力の育成を目指して設計し，OpenAI の GPTs を用いて実装した．学習者からのプログラミングについての質問に対し，直接答えとなるプログラムを提示せず，ヒントやどのような方略でプログラムを考えたらよいかを提示する．これにらプログラミングすることを支援している．

渋沢：大規模言語モデルを利用した非解答型プログラミング学習支援の試行

図 1

CodeMentorDIT の返答例 1

第一工科大学研究報告

第36号（2024）

図 2 CodeMentorDIT の返答例 2

渋沢：大規模言語モデルを利用した非解答型プログラミング学習支援の試行

図 3 CodeMentorDIT の返答例 3

第一工科大学研究報告

第36号（2024）

図 4 CodeMentorDIT の返答例 4

習者自身に何を作るかを自由に決定させ，その4.

評価実験作品を Python で実装し，他の学生にプレゼンテ

4.1

実験の内容と手順ーションすることとした．この最終課題の制作

2023 年度後期に開講された，本学の工学部情にあたって，授業の履修者約 50 名のうち，希望報電子システム工学科 1 年生向けの授業,プログ者 13 名に本システムを使用しながら最終課題をラミング入門 2 において，本システムの利用評制作してもらった．その際，教員およびスチュ価を実施した．プログラミング入門 2 の授業内

ーデントアシスタント(SA)は学生からの質問に容を表 2 に示す．第 10 回以前の授業では，本シ直接回答せず，本システムに質問するように促

ステムを利用せず，第 11 回以降の最終課題の制した．また，履修者全員に，課題制作時には作において本システムを学生に利用してもらっWeb ページや書籍に記載されているプログラムた．

例をそのまま使うのは禁止し，本システム以外授業の第 1 回から 10 回では，Python の言語仕の大規模言語モデルも使用させないようにして様および Python を使ったゲームプログラミングもらった．また，すべての授業終了後，学生がの実装について学習を行った．最終課題は，学

渋沢：大規模言語モデルを利用した非解答型プログラミング学習支援の試行

解決できなかった質問は，教員と SA が回答する

授業の最終回の終了時に，本システムを使用した学生 13 名にアンケート調査を実施した．ア

ようにした．

ンケート調査の結果を，図 5, 6, 7, 8, 9 に示す．
表 2 プログラミング入門 2 の内容

回

授業の内容

1

Python の概要

2

基本的な文法，日付等の基本的なライブラリの使用方法

3

変数と計算式，リスト

4

条件分岐と繰り返し

5関数の定義と呼び出し，import

図本システムのアドバイスは，課題解決の図 65 本システムのアドバイスで質問の目的を

6

CUI のすごろくゲームの開発ヒントとして役立ちましたか？
達成できましたか？

7

GUI の基礎 1

8

GUI の基礎 29Stable Diffusion による画像生成

10

Pygame ライブラリの使い方

11-13

最終課題の制作

14-15

最終課題の発表

4.2

実験の結果

図 7 本システムは，あなた自身が考えて課題に学生が最終課題で制作した作品の代表例を表3 に示す．
表 3

No.

取り組むように支援できていましたか？

学生が制作した最終課題の作品例

作品の概要

1

マルバツゲーム(コンピュータ対戦可)2

CUI によるオセロゲーム，コンピュータと対戦が可能

3

性格診断,性格が類似している偉人を表示

4

乱数を引き，30 に到達すると負け

5

マインスイーパー，爆弾をランダム生成

6

電卓，四則演算や簡単な数値処理が可能

7

一時停止，再開機能がついたタイマー

8

落ちていく玉を弾き返し，ブロックを崩していくゲーム

9

漢字の読み当てゲーム

10

３回勝負ができるジャンケンゲーム

11

フラッシュ暗算ゲーム

12

しりとりゲーム

図 8 プログラミングのスキルは向上しましたか？

第一工科大学研究報告

第36号（2024）

提供するより対話的で個別化されたサポートの間に違いがある．
本システムの学習者に対する長期的な影響をさらに調査，異なる学習スタイルやニーズを持つ学習者に適応する方法を検討する必要がある．
AI メンターと人間メンターのハイブリッド型の
図 9

プログラミングの学習方法は理解できましたか？

アンケート調査の結果から，本システムは多メンタリングアプローチを開発,多様な学習者のニーズに応える可能性を探るべきである．
参考文献

くの初心者プログラミング学習者にとって有益[1]掛下哲郎，柳田崚太田，康介．穴埋め問題をな学習支援ツールであることが示されている．

用いたプログラミング教育支援ツール pgtracer の特に，自立した学習の促進や段階的な問題解決開発と評価．情報処理学会論文誌教育とコンピ支援においてその効果が認められた．しかし，

ュータ（TCE），2016，vol．2，no．2，pp．20-すべての学習者が本システムの利用から等しく

36．

恩恵を受けているわけではなく，特に，自分で[2] 田口浩，糸賀裕弥，毛利公一，山本哲男，島情報を検索することを好む学習者や他のツール

川博光．個々の学習者の理解状況と学習意欲にを使用している学習者には，その魅力が限定的合わせたプログラミング教育支援．情報処理学である可能性がある．そのような学習者に対し

会論文誌，2017，vol．48，no．2，pp．958-ては，本システムの利用方法について，より詳968．

細に，時間をかけて説明することで，本システ
ムを使った学習の効果を高められると考えられる．
5.

まとめと今後の課題

本システムは，プログラミング学習者，特に，初心者に対して有益なツールであることが示された．自立した学習の促進，段階的な問題解決の支援，スキルの向上において特に効果が認められた．一部の学習者は本システムの代わりに自ら情報を検索することを好む傾向があり，学習者によって好みや学習スタイルが異なることが明らかになった．
本システムを使用した学習者の中には，AI メンターと人間メンターの両方に肯定的な評価をする者がいたが，使用しなかったグループでは人のメンターの方が高い評価を受けていた．学習者の好みは多様で，AI メンターが提供する迅速でデータ駆動型のサポートと，人のメンターが