北海道地区

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

プログラミング学習支援環境における正解カード作成手法の提案
A Proposal for Correct Cards Creation Method
in Interactive Environment of Programming Learning
大坂 直輝*1，倉山 めぐみ*1
Naoki OSAKA*1，Megumi KURAYAMA*1*1 函館工業高等専門学校*1National Institute of Technology, Hakodate College
Email: 14029@hakodate.kosen-ac.jp
あらまし：先行研究において，我々はカードを利用した C 言語の学習支援システムを開発してきた。しかし既存のシステムでは，問題が 1 問のみで少なく，またカードセットの生成および C 言語から日本語への変換を手動で行わなければならない．よって本研究ではこれらの問題を改善・解決するために，システムへの新たな問題の追加，カードセットにおける正解カードの自動生成，C 言語から日本語へ自動変換するための手法についてそれぞれ提案し，システムに実装する．
キーワード：プログラミング、カード、C 言語、日本語

1.

はじめに

C 言語は現在様々な分野において使用されており，C 言語を扱うことができるプログラミング技術者の需要は高い．
現在多くの学校で行われているプログラミング授業は，講義による「文法学習」と，実際にプログラムを実行させる「演習」の 2 つによって構成されている．しかし，演習においては教員の負担が大きくなってしまうなど，授業構成にはいくつか問題点がある．この問題を解決するために ICT を利用した様々なプログラミング学習支援システムが開発されている（1）（2）（3）（4）（5）．
我々もこの問題を解決するために，カードを利用したプログラミング学習支援システムの開発を行っている．先行研究（6）（7）では，初学者が C 言語のプログラムを記述できるようになるためには，C 言語と日本語の 1 対 1 対応を理解する必要があるとしている．先行システムでは初学者にこれを理解させるために，まず空欄のある「日本語でのプログラム記述」を日本語で穴埋めする形式の学習を行い，正解した場合のみ，空欄のある「C 言語でのプログラム」を「日本語でのプログラム記述」を参考に C 言語で穴埋めする形式の学習を行う．
このシステムの問題点として，「システムが問題を1 問しか持っていない」，「カードセットを手動で作る必要がある」，「C 言語のプログラムから日本語のプログラム記述を，手動で作る必要がある」等が挙げられる．本研究では，これらの問題を改善・解決するためにそれぞれ，「複数の問題を 1 つの Excel ファイルにまとめる」,「プログラム 1 行ごとにフラグを用いて正解カードを自動生成する」,「C 言語から日本語へ自動変換する」という手法を提案し，実際に既存のシステムをこの手法に沿って改良する．

2.

既存のシステム先行研究において開発されたシステムは，画面左7側に表示されるプログラム記述（空欄あり）の空欄を画面右側にある複数のカードから適したカードを空欄にドラッグアンドドロップし空欄を埋め，画面右下の判定ボタンを押すことでシステムが正誤判定を行うというものである．一度空欄に置かれたカードを外す場合もドラッグアンドドロップを行う．
この画面は 1 つの問題につき問題画面 1（図 1）と問題画面 2 に分かれており，それぞれ問題画面 1 では「日本語でのプログラム記述」を日本語で穴埋めする形式の学習を，問題画面 2 では「C 言語でのプログラム」を問題画面 1 で完成させた「日本語でのプログラム記述」を参考に C 言語で穴埋めする形式の学習を行う．また，問題画面 1 において正解した場合にのみ，問題画面 2 の演習に取り組むことができる．

図1

3.

問題画面 1（既存のシステム）

問題点の解決3.1 取り組める問題の追加
既存のシステムでは，問題（C プログラム）が 1
問書かれたテキストファイルから問題を読み出していた．しかし，この仕様ではコースおよび問題数を増やした場合それに応じてテキストファイルの個数が増えるため，全体としてシステムの管理が難しく

北海道地区

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

場合，最初の「int」で int 型の何かの宣言であることが分かり，「data」の後ろに配列や関数を表す括弧がないため，変数宣言であると分かる．さらに data の後ろに「=」があることから初期化をしていることが分かるため，結果として「int 型変数 data を宣言し 30を代入する」という日本語が得られる．

なることが考えられる．そこでこれらの問題を，「1つの問題につき 1 つの表データ」の形で対応を付けて Excel ファイルにまとめることを考える．
（図 2）

図 4 CtoJ 変換処理の例

図 2 表データ

このように「C 言語でのプログラム」の 1 行を読み込み分解することで「日本語でのプログラム記述」の 1 行を得る CtoJ 変換処理を導入した．この処理を「C 言語でのプログラム」全体で行うことで，最終的に全体の「日本語でのプログラム記述」を得ることができる．

3.2 正解カードの自動生成
図 2 の表データを用いて，正解カードが自動生成されるようにする．正解カードが生成され，問題画
面 1, 2 全体が表示されるまでの手順は以下のとおりである．
（図 3）① 表のうち「カード化フラグ 1」が 1 となっている行の C プログラムを確認し，問題画面 1 においてカード化する．また，「カード化フラグ 2」が 1 となっている行を確認し，問題画面 2 においてカード化する．
② プログラムのカード化した行を空欄にする．
③ カード化していない行を，問題画面 1 は日本語で，問題画面 2 は C 言語でそれぞれ表示する．
④ 問題文を問題画面 1 において表示する．

4.

参考文献
(1) 今泉俊幸，橋浦弘明，松浦佐江子，古宮誠一：ブロック構造の可視化環境によるプログラミング学習支援，
電子情報通信学会技術研究報告 Vol.109，No.193，pp.45-50，(2009)(2) 伊永洋輔，舩曵信生，中西透，渡邊寛，天野憲樹：ＪＡＶＡプログラミング学習支援システムの穴埋め問
題機能の拡張と授業への適用，電子情報通信学会技術研究報告，Vol.111，No.473，pp.7-12，(2012)(3) 山本耕大，春原将寿，大金克紀，中村勝一，横山節雄，
宮寺庸造：エラー要因事例ベースの動的学習手法を導入した C 言語教育システムの開発と基礎的評価，電子情報通信学会技術研究報告，Vol.108，No.146，pp.6772，(2008)(4) 柏原昭博，久米井邦貴，梅野浩司，豊田順一：プログ
ラム空欄補充問題の作成とその評価，人工知能学会論
文誌，Vol.16，No.4，pp.384-391，(2001)(5) 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, eManagement and e-Learning ，7(1)，13-23，(2017)(6) 西山圭太，倉山めぐみ，“カードを利用したプログラミング学習支援システムの開発”，教育システム情報学会 2014 年度学生研究発表会予稿集，pp.9-10 (2015)(7) 西村宗一郎，花田理，倉山めぐみ，“日本語と C 言語をつなぐプログラミング学習支援システムの提案”，
電子情報通信学会技術研究報告，教育工学，Vol.118,No.294, pp.39-42 (2018)

④
①

③

まとめ

本研究ではシステムへの問題追加，正解カードの自動生成，CtoJ 変換処理の各手法について提案し，実装した．
今後の課題として，CtoJ 変換処理の拡充，ダミーカードの自動生成が挙げられる．

②

図 3 問題画面 1 と表データの対応
3.3 CtoJ 変換処理の導入
本研究において”CtoJ”は”C Language to Japanese”のことを指す．すなわち，「CtoJ 変換処理」とは「C言語から日本語への変換処理」のことである．
既存のシステムでは「C 言語でのプログラム」から「日本語でのプログラム記述」を手動で作成する必要があり，特に C 言語と日本語の 1 対 1 対応が取れている状態にするために，C 言語でのプログラム1 行から，日本語でのプログラム記述の 1 行に変換する必要があった．本研究ではこの 1 行ずつ変換する処理を「CtoJ 変換処理」が行うようにした．
CtoJ 変換処理の流れについて，例を用いて説明する．
「int data = 30;」という C 言語（図 4）があった

8