E2-4

プログラムトレース課題を自動生成するシステムを用いたトレース学習の実現可能性に関する調査
Investigation of Feasibility of Trace Learning byLearning Support System Capable of Automatically Generating
Program Trace Exercise
茂木 誠拓*1, 立岩 佑一郎*2, 東本 崇仁*3, 赤倉 貴子*4
Tomohiro MOGI*1, Yuichiro TATEIWA*2, Takahito TOMOTO*3, Takako AKAKURA*4*1
千葉工業大学大学院情報科学研究科*1
Graduate School of Information and Computer Science, Chiba Institute of Technology*2
名古屋工業大学大学院工学研究科*2
Graduate School of Engineering, Nagoya Institute of Technology*3
千葉工業大学情報科学部*3
Faculty of Information and Computer Science, Chiba Institute of Technology*4
東京理科大学工学部*4
Faculty of Engineering, Tokyo University of Science
Email: tomo1238hi@gmail.com
あらまし：デバッガを用いることで，実行結果のみを用いた通常のプログラミング学習より効果的な学習を行うことが可能であるが，デバッガを使いこなすことは初学者にとって難しく，トレース学習を実現することも難しい．そこで，トレース課題の自動生成システムを用いることで，デバッグが演習化・可視化され，容易にトレース学習を行えるのではと考えた．本稿では，トレース課題自動生成システムを用いたトレース学習の実現可能性に関する調査の一環として，自動生成が問題なく行われていることを確認する．
キーワード：プログラムトレース課題，自動生成，トレース学習，プログラミング学習

1.

はじめに近年，プログラミング学習は盛んであり，一般的には教授者が課題を提示し，その課題に対応するプログラムを作成するという流れで行われることが多い．しかし，もし誤ったプログラムを作成してしまった場合に，学習者自身で論理エラーの原因を発見し修正することは容易ではない．プログラミング学
習における学習者の活動を図 1 に示す．
通常のプログラミング学習において，学習者は作成したプログラムを実行することで①実行結果を観察し，次に②実行結果と予想される結果（正解）との差分を認識する．もし実行結果が異なっている場
合には，③プログラムを振り返り修正することになるが，実行結果のみの観察でプログラムを正しく修正することは難しい．
そこで，デバッガを用いて学習者のコードをトレースする高度なプログラミング学習（トレース学習）が効果的であると考えられる．この場合通常のプログラミング学習の流れに加え，デバッガを用いて生成された①’実行過程や局所的な結果を観察し，②’予想される実行過程や局所的な結果との差分を認識する．このようにデバッガを用いることで実行結果のみの観察に比べプログラムの修正が容易となり，より効果的な学習を行うことが可能となる．しかしデバッガを効果的に用いるためにも習熟が必要なた
め，特に初学者が実際にこのような学習を行うことは難しい．

よって本研究では，プログラムトレース課題が自動生成可能な学習支援システム（以下，自動生成システム）(1)に着目した．自動生成システムを用いて学習者の作成したプログラムをトレース課題にすることで，①’が演習化され，②’が可視化されるため，デバッガを用いた高度なプログラミング学習を簡単に実現することができる．
本稿では，トレース学習の実現可能性に関する調査の一環として，自動生成システムによる自動生成が問題なく行われていることを確認した．
課題：「a+b c」を出力するプログラムを作成しなさい
例）「a=1,b=2,c=3」→「7」デバッガを用いた高度なプログラミング学習

通常のプログラミング学習③プログラムを振り返り修正

プログラム
int a=1,b=2,c=3;
int ans = a * b;ans = ans + c;
print(ans);
実行①実行結果を観察②実行結果と予想される結果との差分を認識

実行結果
5

予想される結果(正解)7

プログラム
int a=1,b=2,c=3;
int ans = a * b;ans = ans + c;
print(ans);

③

①②

実行
実行結果
5

デバッガを用いて生成①ʼ実行の過程や局所的な結果を観察

デバッグ結果
2: ans=2
3: ans=5

予想される
デバッグ結果予想される結果(正解) 2: ans=6
7
3: ans=7②ʼ 予想される結果との差分を認識

図 1 プログラミング学習における学習者の活動

2.

トレース課題の自動生成システム

本章では，プログラムトレース課題およびその自動生成システムについて説明する．
プログラムトレース課題とは，学習者にプログラムを提示し「どの行がどの順番で実行されるのか」や「変数の値や出力・条件分岐など」を解答させる― 149 ―

教育システム情報学会 JSiSE2023
第48回全国大会 2023/8/29-8/31

ものであり，フィードバック可能な学習支援システム（以下，旧システム）が開発されている(2)．しかし旧システムは，あらかじめシステム作成者が問題及びフィードバックを作成したものしか扱うことができず，学習者の作成したプログラムに対するトレース学習のツールとして使うことはできない．そこ
で著者らはプログラムトレース課題が自動生成可能なシステムに着目した．自動生成システムでは，プログラムを解析することですぐに，そのプログラムに対応したトレース課題に取り組むことができる．
自動生成システムにおける学習の流れについて説明する（図 2）．学習者はまず，(I)の「プログラム登録」ボタンを押すことでプログラムを登録する画面に遷移する．次に「タイトル」と「プログラム」というテキストボックスにそれぞれ内容を記入し，(II)の「登録」ボタンを押すことによってトレース課題が自動生成される．そして(III)の「演習」ボタンを押すことで，トレース課題に取り組む画面に遷移する．トレース画面ではまず，どの部分が実行されるかを考えクリックする．例えば，図 2 の例における「i=1」が初めに実行されると考えクリックすると，(IV)のように「i に入る値は？」と聞かれるため，キーボードを用いて解答する．このように自動生成シ
ステムでは①’実行過程や局所的な結果の観察を演習化している．また自動生成システムでは，正しくトレースした場合の標準出力や変数の値を「正しい状況」として表示する機能や，もし学習者の回答通りにトレースされた場合の標準出力や変数の値を「あなたの状況」として表示する機能を持っている．
これらのフィードバックによって変数の値が可視化することで②’予想される実行過程や局所的な結果との差分を認識することを支援している．
したがって自動生成システムを用いることで，学習者の作成したプログラムに対するトレース学習が実現できると言える．
(I)

(III)

(IV)

(II)

トの回答を行わせた．事前・事後テストでは，4 種類のテストを実施したが，紙面の都合上，本稿では一部のみ紹介する．各テストでは，5 つの問題を出題し，正解を 1 点として 5 点満点で評価した．シス
テムには，旧実験で使用したものと同様の問題をあらかじめ読み込ませ，学習者にはトレースの部分のみを行わせた．
表 1 にトレーステストの結果を示す．トレーステ
ストとは，学習者にプログラムを与え，実行順序と変数の変化を記述させるテストで，表内の数字は平均点，括弧内の数字は標準偏差を表している．また，
cohen’s d の効果量とその目安も記載している．結果
として，新システムを用いた実験（以下，新実験）
では，事前の平均点が 0.80 点，事後の平均点が 2.20点と 1.40 点の上昇が見られ，効果量は 1.43 と高い学習効果が確認できた．この結果は旧実験 1~3 と比較しても遜色なく，自動生成システムで旧システムと同等のトレース課題が生成できていると言える．

旧実験 1
N=80
旧実験 2N=66
旧実験 3
N=54
新実験
N=54.

おわりに

本稿では，プログラムトレース課題を自動生成するシステムを用いたトレース学習の実現可能性について検討し，評価実験を行った．結果として，自動生成システムでも通常のトレース課題と同等以上の効果がみられたことから，自動生成システムでトレース学習が可能であることが示唆された．
今後の課題として，実際に学習者の作成したプログラムからトレース課題が自動生成できることの確認や，それを用いた評価実験などが挙げられる．
謝辞
本研究の一部は科研費・基盤研究(C)(22K12322)，
基盤研究(B)(21H03565)，基盤研究(B)(20H01730)の助成による．

図 2 自動生成システムのインタフェース3.

表 1 トレーステストの結果
事前
事後
差効果量(d)
0.33
1.12
0.90
0.91(大)(0.78)(1.17)
1.05
1.77
0.72
0.54(中)(1.16)(1.51)
0.82
2.30
1.48
1.55(大)(0.82)(1.08)
0.80
2.20
1.40
1.43(大)(0.75)(1.17)

参考文献

評価実験

自動生成システムで問題なくトレース課題が生成できていることを確認するため，旧システムを用いた評価実験（以下，旧実験）の結果と比較する．
被験者は大学 4 年生 5 名で，40 分間の事前・事後
テストと 60 分間のシステム利用，終了後にアンケー(1) 立岩 佑一郎, 茂木 誠拓, 東本 崇仁, 赤倉 貴子: “プログラムトレース課題の新規導入容易な学習支援システムの開発”, 情報処理学会研究報告(CLE), Vol.39,
pp.1-7 (2023)(2) 東本 崇仁, 赤倉 貴子: 提案するプログラムトレース
課題のための学習支援システムの開発とその実践,
電子情報通信学会論文誌 D, Vol.101, No.6, pp.810–819(2018)― 150 ―