中国地区

教育システム情報学会 2022年度学生研究発表会

空欄補填による C プログラミング学習課題の Web システムの開発―

空欄の形式が学習効果に与える影響の分析―

Development of a Web System for C Programming Learning Assignmentswith Fill-in-the-blanks- Analysis of the Impact on Learning Effectiveness Depending on the Form of Blanks 坂手 柊斗*1，重松 大志*2，洲濱 拓弥*1，松本 慎平 1
Shuto SAKATE ，Hiroshi SHIGEMATSU*2，Takumi SUHAMA*1，Shimpei MATSUMOTO*1*1
広島工業大学情報学部*1
Faculty of Applied Information Science，Hiroshima Institute of Technology
Email: {bm20049，bm20062，s.matsumoto.gk}@cc.it-hiroshima.ac.jp*2
広島工業大学大学院工学系研究科*2
Graduate School of Science and Technology，Hiroshima Institute of Technology
Email: md22004@cc.it-hiroshima.ac.jp*1

あらまし：本研究では，C 言語学習の中でも空欄補填に基づく学習課題に焦点を当てる．空欄補填の学習
課題とは，いくつかの入出力例とソースコード中にいくつかの空欄が設けられたプログラムが学習者に与えられ，学習者は入出力例のとおりにプログラムが動作するよう空欄に入る適切な命令を考える課題である．空欄補填による学習課題ではソースコード記述が不要なため，プログラムの内容理解(読解)やアルゴリズム(構造)を考える学習に集中できる．また，空欄補填による学習課題は，理解度を早期に把握する手法として有用だと考えられている．このような理由から，空欄補填の学習課題は，プログラミング教育の現場で多く実践されている．空欄補填問題は，空欄に当てはまるコードを候補の中から選んで回答する多岐選択方式と，学習者自らが処理の流れを考慮し回答する自由記述方式の 2 種類がある．多岐選択方式は採点・評価が容易であるため，出題者にとっては都合が良い．しかし，自由記述方式と比較した際の多肢選択方式の学習効果については十分に示されていない．そこで本研究は，このことを明らかにするための Web システムを開発すること，実験方法を示すことを目的とする．
キーワード：プログラミング，C 言語，空欄補填，多肢選択，自由記述1.

種類がある．自由述方式は，その特性から，より高い学習効果を期待できる．しかし，自由に文字を入力できるため，コードの趣旨を無視した強引な回答や，悪意あるコードの実行などの危険性に対応する必要がある．一方，多岐選択方式はそのような危険性はなく，採点・評価も容易であるため，出題者にとっては都合が良い．しかし，自由記述式問題と比較した際の多肢選択方式の学習効果については十分に示されていない．そこで本研究は，このことを明らかにするための Web システムを開発すること，実験方法を示すことを目的とする．

はじめにプログラミング学習において，空欄補充問題は最も採用される問題形式の一つである．空欄補填の学
習課題とは，いくつかの入出力例とソースコード中にいくつかの空欄が設けられたプログラムが学習者に与えられ，学習者は入出力例のとおりにプログラムが動作するよう空欄に入る適切な命令を考える課題である(1)．空欄補填による学習課題は，理解度を早期に把握する手法として有用だと考えられている．
空欄補填の学習課題は，高等教育機関などのプログラミング学習において広く利用されている．例えば，moodle などの教育支援システムを用いて，プログラムの一部が空欄になった問題を出題して，自動採点を行う空欄補填の学習課題などが実際の教育現場で多く行われている．この方法は採点の手間を軽減することができ，かつ，空欄補充問題は早期に学習者の多様な理解度を見分けることができるため，有効な学習法だと考えられている．このような理由から，空欄補填の学習課題は，プログラミング教育の現場で多く実践されている．
空欄補填問題は，空欄に当てはまるコードを候補の中から選んで回答する多岐選択方式と，学習者自らが処理の流れを考慮し回答する自由記述方式の 2

2.

関連研究

空欄補填学習に関連した研究はこれまで多く行われている．掛下らは空欄補填学習のための支援シス
テムを開発し，実践利用を通じその有用性を明らかにしている(2)．塔は，空欄補充問題を生成するためのグラフ理論に基づく空欄エレメント選択アルゴリズ
ムを提案し，実践利用を通じその学習効果を明らかにしている(3)．
空欄補充問題を生成する手法がいくつか提案されている．柏原らは，プログラムにおける処理の意昧
内容には踏み込まず処理の要所を同定し，形式的に213

中国地区

教育システム情報学会 2022年度学生研究発表会

難易度が大きく変わるため，教授者は自動生成する空欄の数を設定できる．なお，問題となるコードや，想定される学習者の回答によっては実行時に無限ループとなる事も考えられるため，実行から一定時間が経過時に処理が終わっていなかった場合に強制終了するためのタイムアウト機能を実装している．

図 1 提案システムの構成

4.

実験の概要

5.

おわりにPDG を用いた空欄補填作問学習において，各空欄と記述方式とした問題と多肢選択方式とした問題の学習効果を比較する．対象者は，C 言語プログラミングの基礎を習得している情報学を学ぶ大学３年生，４年生 20 名程度を対象とする．実験では，被験者をA，B２つのグループに分けた上で，それぞれに記述式問題，多岐選択式問題３問に回答させる．出題する問題はどちらも同じコードであり，空欄として設定する場所は，PDG を用いた解析の結果，重要度が高い上位３箇所である．
図 2 提案システムの動作画面空欄を設定する手法を提案している(4)．内田は，キーワードや識別子を自動的に抽出し，空欄に設定する手法を提案している(5)．有安らは，教授者の意図に沿った演習のための空欄補充問題の生成手法を提案している(6)．柏原らは，プログラムにおける処理の流れの要所となる部分を PDG(プログラム依存グラフ)で見付け，その箇所を空欄として設定する方法を提案している(7)．

3.

本研究では，プログラミング教育の現場で多く実践されている空欄補填による学習課題に焦点を当て，多肢選択方式によって設定された空欄の学習効果を明らかにするための Web システム開発を行った．

謝辞
本研究は，独立行政法人日本学術振興会科学研究費助成事業(基盤研究(C)20K0319，22K02815)の助成を受けて実施した成果の一部である．

提案システム本研究では，柏原らによる PDG を用いた方法を参考に，空欄補填問題を自動生成するシステムを構築する．PDG により空欄を設定する事で，コード全体の流れや要所を読み取る，コードの判読能力向上を期待できる．
本研究では，教授者により与えられたコードに対し，重要度が高いと思われる箇所を PDG により同定し，空欄補填問題を生成する．学習者はその空欄を埋めた後,回答ボタンを押下する事で正誤ならびに実行結果またはエラーを表示し，自身の回答が反映されたコードの結果を即座に確認する事が可能にする．以上の要件を満たしたシステムを構築する事を主な取り組みとする．本システムの開発は Laravelと MySQL で行った．図１と２にそれぞれ提案システムの構成と演習時のインタフェース画面を示す．
「生成された問題」の欄に空欄が設定されたコードが示され、教授者が別途用意した問題文に即したプ
ログラムを回答させる．回答後，回答ボタンを押すことで，正誤判定を行える．さらに，PHP の exec 関数により，サーバ上で GCC を呼び出す事で，回答されたコードをコンパイル,実行し，「実行結果」の欄に実行結果を学習者に示す．コンパイルエラーや実行時エラーが発生した際は，同欄にその内容を記載する．また，空欄補填問題は設定する空欄の数により参考文献(1) T. Crow, A. Luxton-Reilly, and B. Wuensche, Intelligent
tutoringsystems for programming education: a systematicreview, Proceedings of the 20th Australasian Computing
Education Conference, ACM, pp. 53-62 (2018).
(2) 掛下哲郎, 柳田崚, 太田康介, 穴埋め問題を用いたプ
ログラミング教育支援ツール pgtracer の開発と評価,
情報処理学会論文誌教育とコンピュータ, Vol. 2, No. 2,
pp.20-36 (2016)(3) 塔娜, Java プログラミング学習支援システムにおける空欄エレメント選択アルゴリズムの提案, 岡山大学博士論文 (2017)(4) 柏原昭博, 久米井邦貴, 梅野浩司, 豊田順一, プログ
ラム空欄補充問題の作成とその評価, 人工知能学会
論文誌, Vol. 16, No. 4, pp. 384-391 (2001)(5) 内田保雄, 初級プログラミング学習のための自動作問システム, 情報処理学会研究報告コンビュータと教育(CE), Vol. 2007, No. 123 (2007-CE-092), pp. 109-113(2007).
(6) 有安浩平, 池田絵里, 岡本辰夫, 園島丈生, 横田一正,
学習者に合わせた C 言語演習穴埋め問題の自動生成,
第 1 回データ工学と情報マネジメントに関するフォーラム(DEIM Forum 2009), Vol. 5, D9-5 (2009).
(7) 柏原昭博, 寺井淳裕, 豊田順一, いかにプログラム空欄補充問題を作るか？, 電子情報通信学会技術研究
報告, Vol. 99, No. 81, pp. 916 (1999).

214