北海道地区

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

プログラミング学習支援環境におけるダミーカードセット作成の自動化の思案
An automatic generation of dummy Card Sets
in an Interactive Environment of Programming Learning
前田 晃希*1, 倉山 めぐみ*2
Kouki MAEDA*1, Megumi KURAYAMA*2*1,2 函館工業高等専門学校*1,2 National Institute of Technology, Hakodate College
Email: kouki16135@gmail.com

あらまし：我々は，プログラミング学習支援システムの開発を行っており，学習者が日本語や C 言語が書かれた単文カードを並び替えることで学習を行っている.しかし，現在のシステムで利用する単文カー
ドは解答に必要な単文カードのみのため，より深く考えさせるために，ダミーの単文カードが必要と考える．そこで，本研究ではダミーカードセットを自動生成する方法を提案し，単文ごとにグループ化されたカードセットの生成を行った．
キーワード：プログラミング，C 言語，日本語，カード，ダミーカード，グループ化

1.

しか生成できず，問題をよく読まずとも正解してしまう場合があるという課題がある．利用者により深く学習させるためには，正解カードに類似したダミーカードが必要である．ただし正解に類似したカードを手動で用意するには膨大な時間を必要とし，後から問題を追加することも難しくなってしまう．そのため，「ダミーカードの自動生成」を行うための「問題の特徴の定量化」，「問題同士のネットワーク化」の手法が提案されている[4]．この手法は，正解に類似したカードが含まれる問題をネットワークから割りだし，ダミーカードとして選ばれる単文がどこに位置しているかは開発者が見つけなければならなかった．本研究では，「ダミーカードの自動生成」を行うために「単文ごとの特徴の定量化」，「カードの種類のグループ化」の手法を提案する．

はじめに

現在、プログラミング言語を使ったプログラミン
グを学習しているものの中には，プログラミングに苦手意識を持っているものも多く，一つの原因として，問題の意味は理解できるが，それをプログラム言語で記述することができないことが挙げられる．
そこで，この問題を解決するために，処理が書かれた単文カードを取捨選択し並べることでプログラミングを作成し，システム側からのフィードバックを得ることで学習を進めていく学習支援システムを開発してきた[1][2][3]．既存のシステムでは利用者が C言語と日本語の 1 対 1 対応を理解することで C 言語を記述できるようにしており，利用者にこれを理解させるために以下の手順をとる．まず単文が空欄になった「日本語でのプログラム記述」を穴埋めする学習と「C 言語でのプログラム」を穴埋めする形式の学習を行う．
しかしこのシステムには，選択肢に正解のカード

2.

プログラミング学習支援システム

すでに開発されたシステム[4]は，1 つの問題につき問題画面 1（図 1）と問題画面 2（図 2）に分かれており，それぞれ問題画面 1 では「日本語でのプログラム記述」を日本語で穴埋めする形式の学習を，問題画面 2 では「C 言語でのプログラム」を問題画
面 1 で完成させた「日本語でのプログラム記述」を参考に C 言語で穴埋めする形式の学習を行う．また，問題画面 1 において正解した場合のみ問題画面 2 の演習に取り組むことができ，不正解の場合はそれぞれの問題を正解するまでやり直すことができる．

3.

図１ 問題画面１（先行システム）

ダミーカードの生成方法

利用者に問題をよく読ませ学習を促進させるためには，解答の選択肢にダミーの選択肢を混ぜ，利用者を混乱させることが有効である．ダミーカードには利用者を混乱させる目的の「正解カードと類似したカード」と，それをカモフラージュするための明らかにダミーだとわかる「正解カードと無関係なカード」の 2 種類を用いる．この２種類のカードを用意するために，すべての単文に対して特徴の定量化

図２ 問題画面２（先行システム）9

北海道地区

教育システム情報学会 2020年度学生研究発表会を行い，その情報を基にグループ化したカードを生成することで得られたデータ群を用いる．
「正解と類似したカード」はデータ群から正解カードと同じ種類のカードで，カードの特徴の重複が一番多いカードを引用し，「正解カードと無関係なカード」はデータ群から正解カードと違う種類のカードの中からランダムに抽出する（図 3）
．

（図５）
（図６）．
「正解カードと無関係なカード」は役割が違うカードの中からランダムに抽出したカードから引用する．しかし，システムの都合上，「同じ単文」が検索で出てきて場合や「同じ意味の違う単文」を用いても正しくプログラムが動く場合に正しく正誤判定ができないことがある．よって，「同じ単文」「同じ意味の違う単文」同士には同語・同意語であるというフラグを立て，検索する単文と検索結果のカードにこのフラグが立っていた場合，ダミーカードとして引用しないこととする．また優先度の同じ問題が残った場合，表の一番下の問題を選択する．

3.1 単文の特徴の定量化
ダミーカードを生成する際に，カードプールの中から「正解カードと類似したカード」と「正解カードと無関係なカード」の 2 種類のダミーカードを引用している．この時利用したカードプールはプログ
ラミング学習支援システムで問題として利用しているプログラムの文を単文ごとに分け，それらの単文をグループ化したカードとして生成し，まとめることで構築している．このグループ化したカードを生成する際に必要になるのが，単文の特徴の定量化である．特徴の定量化は単文に「printf」や「<=」などの特徴が含まれているかをフラグで管理する．

4.

まとめ

本研究では，プログラミング問題の単文ごとにそれらが持つ特徴を定量化し，そのデータを基にグループ化することで，システムでのダミーカードの自動生成方法を提案した．今後の課題として，「同じ意味の違う関数」のダミーカードが正しく使われているかの検証，学習者が引っ掛かりやすいダミーカードの生成，本提案のシステムへの実装が挙げられる．
謝辞
本研究は，JSPS 科研費 20K12118 の助成を受けたものである
参考文献

3.2 カードのグループ化
カードプールからダミーカードに引用するカードを検索する際，類似しているかどうかの基準として，カードのプログラム上での役割が大まかに同じであれば類似していると考え，「表示している」「入力している」などの役割ごとに種類を分け，グループ化する基準とした．3.1 節で作成したフラグはそのまま属性としてグループ化する際に用いた．

(1) Nao Kono, Hisayoshi Kunimune, Tatsuki Yamamoto,
Masaaki Niimura ： Development and Evaluation of
Functions for Elementary/Secondary Programming
Education: The Visual Programming Environment "AT"，International Journal of e-Education, e-Business,
e-Management and e-Learning ，7(1)，pp.13-23，(2017)(2) 西村宗一郎，花田理，倉山めぐみ，“日本語と C 言語をつなぐプログラミング学習支援システムの提案”，
電子情報通信学会技術研究報告，教育工学，Vol．118，No．294， pp.39-42 (2018)(3) 大坂直輝, 倉山めぐみ, “プログラミング学習支援環
境における正解カード作成手法の提案” 教育システ
ム情報学会 2018 年度学生研究発表会予稿集，pp.7-8(2019)(4) 小林陽昭, 倉山めぐみ, “プログラミング学習支援システムにおける問題のネットワーク化とダミーカード自動生成方法の提案” 教育システム情報学会 2019年度学生研究発表会予稿集，pp．15-16 (2020)．

3.3 ダミーカードの生成3.2 で作成した表データを用いて「正解カードと類似したカード」と「正解カードと無関係なカード」の２種類のダミーカードを生成する．
「正解カードと類似したカード」はまず役割が同じカードを表から探し，その後，役割が同じグループ内のカードの中から特徴が最も近いカードについてフラグを用いて検索する．この時，フラグがすべて一致するカードから優先して選んでいき，余分なフラグが 1 つあるカードを 2 番目，フラグがすべて一致するために一つフラグが足りないカードが 3 番目と，一致するフラグの数が±１個，2 個と増えるたびに選ぶ優先度を下げたうえでダミーカードとして引用する（図４）

図５ 絞り込み項目とその結果 1

図 3 概要のフローチャート

図４ 正解と類似したダミーカードの出力例

図６ 絞り込み項目とその結果２10