• 検索結果がありません。

Webブラウザ上でのプログラミング問題の生成システムの開発

N/A
N/A
Protected

Academic year: 2021

シェア "Webブラウザ上でのプログラミング問題の生成システムの開発"

Copied!
6
0
0

読み込み中.... (全文を見る)

全文

(1)

Web

ブラウザ上でのプログラミング問題の生成システムの

開発

大門 巧

1

大西建輔

2 概要:講義においてプログラミング言語やアルゴリズムの理解度を測定する手段として,教員が作成した テストやオンラインジャッジシステムを用いることが考えられる.教員がテストを作成する場合,筆記式 のテストやコンピュータ上でおこなうテストを作成することになる.筆記式のテストは,公平性やコン ピュータを使用せずにおこなうことができるいう利点をもっている.一方で,出題する問題を熟考する ことや採点に時間を割かれてしまうという問題がある.教員の働き方改革が推進されている現在,問題 作成や採点の効率化を図ることが必要とされている.オンラインジャッジシステムを利用する場合,問 題の出題形式が実装に限定されてしまう問題がある.学習者にとって,学習中のテーマに沿った様々な 問題がランダムに出題されるような状態であることが望ましい.問題作成や採点の効率化を図るために, PythonとJavaScriptの双方に対応したプログラミング問題の自動生成と自動採点が可能なシステムであ る「Waquema」を開発した.本稿はWaquemaの実装とその機能についての詳細を述べる. キーワード:プログラミング教育,問題生成,自動採点

Development of a system for generating programming problems in a

web browser

Takumi Daimon

1

Kensuke Onishi

2

Abstract: Teacher-created tests and online judging systems can be used to measure the understanding of programming languages and algorithms in lectures. When teachers create a test, they are creating a written test or a computer-based test. Written tests have the advantages of fairness and non-computer based testing. On the other hand, they require more time to think over the questions and to grade them. As the reform of the working style of teachers is being promoted, it is necessary to improve the efficiency of question making and grading. There is a problem that the question format is limited to the implementation when using an online judge system. It is desirable for learners to be presented with a variety of random questions related to the theme under study. To solve these problems, we developed Waquema, a system that can automati-cally generate and grade programming problems in both Python and JavaScript. This paper describes the implementation of Waquema and its features in detail.

Keywords: Programming Education, problem generation, automatic grading

1.

はじめに

学習指導要領の改訂に伴い,2022年度より高等学校では 1 東海大学大学院理学研究科数理科学専攻

Tokai University Graduate School of Science Course of Math-ematical Sciences, Kanagawa, 259-1292, Japan

2 東海大学

Tokai University, Kanagawa, 259-1292, Japan

科目として「情報I」と「情報II」が新設される.必修とな る情報Iのコンピュータとプログラミングの単元では,プ ログラミングを学習することになる.新しい学習指導要領 を円滑に実施することを目的として,文部科学省は,高校 の情報教員向けに,「高等学校情報科『情報』教員研修用教 材」[9]を公開している.研修用教材の「第3章コンピュー

(2)

タとプログラミング」の項目では,Python版の資料が公 開されている.またJavaScript版と,VBA版,ドリトル 版,Swift版の資料も公開されている.言語仕様や普及率 の観点から,高等学校における教育用のプログラミング言 語として,PythonとJavaScriptが主流になることが予想 される. 教科としてプログラミングを教える場合,評価をおこな う必要がある.そのため,プログラミング言語やアルゴリ ズムの理解度の測定や問題演習が必要となる.この際,教 員が作成したテストやオンラインジャッジシステムを用い ることが考えられる.教員がテスト問題を作成する場合, 筆記式のテストや学習管理システムを利用し,コンピュー タ上でおこなうテストを作成することになる. 筆記式のテストは,コンピュータを使用せずにおこなう ことができるという利点があるが,教員が出題する問題を 熟考することや採点に時間を割かれてしまう.教員の働き 方改革が推進されている現在,問題作成や採点の効率化を 図ることは喫緊の課題となっている. オンラインジャッジシステムでは作成したプログラムを 提出すると,簡単に問題の正誤判定をおこなうことができ るという利点がある.一方で,オンラインジャッジシステ ムにおいて出題されている問題は,解答例と出力の一致す るプログラムを実装する問題がほとんどである.理解度を 高めようとする学習者にとって,学習中のテーマに沿った 様々な問題がランダムに出題されるような状態であること が望ましい. プログラミング問題の生成・採点を自動でおこなうシス テムは,Java言語を中心としたものが散見され,大学生 や大学教員が自作したシステム[1]が大学を中心に利用さ れているが,学習中のテーマに沿ったランダムな問題が生 成されるシステムは見られない.本研究では,高等学校の 情報I,IIで教育用に用いられる教育用のプログラミング 言語として,PythonとJavaScriptの両方に対応したプロ グラミング問題の自動生成及び自動採点システムである Waquema[12]を開発した.本稿ではWaquemaの実装と その機能についての詳細を述べる.

2.

関連研究

2.1 プログラミング問題の自動生成に関する研究 喜多村ら[1]は,出題者が与える解答例プログラムに対 して,独自に定義したタグを用いて情報付与をおこない, 解答例プログラムを解析処理し,問題を自動生成する手法 を提案し,MAX/JAVA[4]という既存の学習システムで利 用できることを示した. 内田[3]は,Java言語の空欄補充問題を自動生成するシ ステムである「JavaDrill」を開発した.問題番号,問題名, 問題文,ソースコードをシステムに入力すると,予約語や 演算子の部分に空欄を設定した空欄補充問題を自動生成す る.空欄はランダムな場所に設定される.JavaDrillはプ ログラミング初級者を対象としており,Java言語の文法や 予約語の知識を習得させることで,プログラミング能力の 育成を図ることを目的としている. 有安[4]らは,C言語の空欄補充問題とその解答を自動生 成するシステムを開発した.本システムは,解答のプログ ラムコードと出題傾向を記述したデータを入力とする.出 題傾向に変数,型宣言,関数,条件判定などを記入すること で,問題作成者の意図に合わせて空欄を配置することがで きるという特徴がある.問題作成者の意図に合わせた,演 習問題を大量に作成する工程の効率化を目標としている. 竹内ら[5]は,Haskell言語の空欄補充問題を自動生成す るシステムを開発した.このシステムでは,空欄補充問題 の自動生成と正誤判定が可能である.また,関数や再帰構 造などのプログラミング要素の重要度を考慮した効果的な 穴あけ手法も提案されている. 2.2 プログラミング問題の自動採点に関する研究 Kogureら[6]は,プログラミング学習のモニタリングシ ステムを開発した.このシステムでは,学習者がどのよう な課題に取り組んでいるかを把握することができる.学習 者のプログラムのパフォーマンス情報の分析が自動的にお こなわれるため,教員は学習者に対して適切な指示を与え ることができるという特徴がある. Kitayaら[7]は,Java言語のプログラミングの課題の提 出,採点,結果返却までをウェブ上で行うシステムを開発 した.プログラムの正誤判定は,コンパイラによるチェッ ク,JUnitテスト,出力結果テストにより構成されるため, スコアリング精度が極めて高いという特徴がある. Saikkonenら[8]は,Scheme-roboというプログラミング 演習を評価するためのシステムを開発した.Scheme-robo は,プログラムの手順,構造,実行時間を評価することが できる.プログラムをアルゴリズム的な側面から分析し, プログラムの正しさを評価することができる. また,広く利用されているオンラインジャッジシステム として,AIZU ONLINE JUDGE[10]がある.AIZU

ON-LINE JUDGEは,会津大学が主催するオンラインジャッ

ジシステムである.ウェブサイト上で公開されている問題 を解き,ソースコードを提出するとその正誤が判定される.

(3)

3.

プログラミング課題自動生成システム

1 Waquemaのウェブページ

Waquema(Web-aided Question Master)は,入力された ソースコードからプログラミング言語の問題を自動生成 し,図3に示すようなHTMLファイルとして出力するこ とが可能なシステムである.入力となるプログラミング言 語は,PythonとJavaScriptである.Waquemaの画面を 図1,システムの構成を図2に示す.「エクスポート」を押 すと,選択した問題をHTMLファイルとしてダウンロー ドすることができる.「キープした問題」を押すと,生成し た問題を編集することができる.「問題をインポート」を 押すと,過去にWaquemaで生成しローカル環境に保存し た問題を読み込むことができる.「問題を保存」を押すと, 生成した問題をJSON形式でダウンロードすることがで きる.ソースコードを画面中央のエディタに入力し,生成 ボタンを押すと問題が自動生成される.実行ボタンを押す と入力ソースコードを実行することができる.そのため, ソースコードの動作を確認しながら問題を生成することが できる.説明とテストケースは,関数実装問題を生成する 際の必須項目であり,それぞれ専用のダイアログに入力す る.説明には関数の処理内容と引数と戻り値を記述する. テストケースは関数を呼び出す形で1つずつ記述する.説 明は生成される問題の問題文に反映され,テストケースは 採点時の正誤判定に使用される. Waquemaにより出力されたHTMLファイルには,図4 に示すような自動採点機能とフィードバックをおこなう機 能が実装されている.このHTMLは,インターネットに 接続されており,jQuery[11]等のライブラリを参照できる 状態のブラウザ上で動作させることができる.また,出力 されたHTMLファイルは間違い探し問題を除き,問題の正 解情報を保持しない構造になっているだけでなく,難読化 されているため簡単に不正をおこなうことはできない.本 システムでは,正誤判定の際に実行処理を必要とする問題 がある.これらの問題はサンドボックス化された環境で実 行処理がおこなわれる.Pythonの場合はJavaScriptで構 築されたインタープリタ上で実行される.JavaScriptの場 合は,FileReaderやXMLHttpRequestなどの組み込み関 数を無効化した環境で実行される.これにより,ある程度 悪意をもったコードを入力されても,本システムに影響を 与えることはできない.実際に利用をする際には,ダウン ロードしたHTMLファイルを学習支援システム等を使用 して学習者に配布する方法や,出題者が用意したサーバー に配置するなどの利用形態を想定している. 図2 システム図 図3 Waquemaで生成したHTML形式の問題 図4 自動採点された結果

(4)

4.

生成可能な問題

4.1 出力結果を答える4択問題 出力結果を答える4択問題は,4つある選択肢の中から プログラムを実行したときの出力結果として適切なものを 1つ選択する問題である.本システムでは,図5のような 問題を生成する.出力結果を答える4択問題は,入力ソー スコードに出力命令を含む場合にのみ生成される.選択肢 は,出力結果が数値として解釈できる場合は,その数値に 近い値から選択肢を作成する.それ以外の場合は,出力結 果の部分文字列から構成される選択肢を作成する.正誤判 定はソースコードを実行して得られた正解の出力結果と, 解答を比較することによりおこなわれる. 図5 出力結果を答える4択問題 4.2 短冊式問題 本システムでは,図6に示す正しい出力結果が得られる ようにソースコードを並び替える問題と,図7に示すエ ラーが起こらないようにソースコードを並び替える問題の 2種類の短冊式問題を生成することができる.短冊式問題 は,1行ずつ分割された短冊状のソースコードの断片をド ラッグ操作により並び替えることで解答する.図6に示す 問題は,入力ソースコードが出力命令を含む場合に生成さ れる.図7に示す問題は,どのような入力ソースコードの 場合も生成される.正誤判定は並べ替えたソースコードの 実行処理によりおこなわれるため,正解が一意に定まらな い場合も正誤判定をおこなうことが可能である. 図6 正しい出力結果を得られるように並び替える短冊式問題 図7 エラーを起こさないように並び替える短冊式問題 4.3 間違い探し問題 間違い探し問題は,スペルミスを含むプログラムの行番 号を選択する問題である.本システムでは,図8のような 問題を生成する.スペルミスは入力ソースコードに含まれ る予約語の中からランダムに選ばれた1つに付与される. 間違い探し問題は入力ソースコードに予約語が含まれる場 合にのみ生成される.正誤判定は事前に記録しておいた誤 りを付与した行の行番号と解答を比較することによりおこ なわれる. 図8 間違い探し問題

(5)

4.4 関数実装問題 関数実装問題は,問題文で指示された関数を作成する問 題である.本システムでは,図9のような問題を生成す る.関数実装問題は,入力ソースコードにテストケースと プログラムの説明が設定されている場合のみ生成される. 正誤判定はテストケースを用いた実行処理によりおこなわ れる.すべてのテストケースをクリアした場合は正解,1 つ以上の正解と誤りを含む場合は部分点,すべてのテスト ケースに対して不正解の場合は不正解と判定される.解答 のソースコードが無限ループを含む場合や,一定時間以上 応答が無い場合は不正解と判定される. 図9 関数実装問題 4.5 変数の値を記述する問題 変数の値を記述する問題は,プログラム終了時の変数の 値を記述する問題である.本システムでは,図10,図11 のような問題を生成する.全記述式問題は,入力ソース コードが変数を含む場合にのみ生成される.解答エリアに 出力結果を入力することで解答する.図11の場合は,12 行目の変数xが関数外で定義されていないためエラーが起 きる.そのような場合は「エラーが起きる」を選択する. 正誤判定は問題文のソースコードを実行して得られた出力 結果と解答を比較することによりおこなわれる. 図10 変数の値を記述する問題(エラーが起きない場合) 図11 変数の値を記述する問題(エラーが起きる場合) 4.6 予約語選択問題 予約語選択問題は,空欄に記述して文法エラーとならな い予約語を選択肢の中からすべて選択する問題である.本 システムでは,図12のような問題を生成する.予約語選 択問題は,入力ソースコードが予約語を含む場合にのみ生 成される.正誤判定は,選択肢のそれぞれの予約語の場合 について,空欄を予約語で置き換えたプログラムを実行し, 文法エラーを起こさない選択肢を取得し,解答の選択肢と 比較することによりおこなわれる. 図12 予約語選択問題

5.

問題生成の手法

開発したシステムにおける問題生成の手法を図13に示 す.システムは,PythonまたはJavaScriptのソースコー ドを入力とする.前処理段階では,字句解析によりソース コードからトークン列を生成し仮実行をおこなう.仮実行 時にエラーが発生した場合はエラーレポートをおこない問 題は生成しない.問題生成では,入力ソースコードと出力 の状態に応じて生成する問題を決定する.短冊式問題(4.2 節の図7)はどのような入力ソースコードの場合も必ず生 成される.出力がある場合は,出力結果についての短冊式 問題(4.2節の図6)と,出力結果を答える4択問題(4.1節) を生成する.入力ソースコードに予約語が含まれる場合 は,予約語選択問題(4.6節)と間違い探し問題(4.3節)を 生成する.ソースコードに対して,説明とテストケースが 設定されていた場合は関数実装問題を生成する.入力ソー スコードが変数を含む場合は,変数の値問題(4.5節)を生

(6)

成する.問題生成のプログラムは,一部を除き,JavaScript とPythonのどちらの言語にも共通して使用できるように 設計した.そのため,対応言語を増やす場合も柔軟に対応 できる. 図13 問題生成の手法

6.

議論

本システムでは5種類の問題の自動生成・自動採点をお こなうことができる.出力結果を答える4択問題,変数の 値を記述する問題は,学習者がプログラムの動作を把握す る能力,関数実装問題は,仕様を満たすプログラムを作成 する能力,短冊式問題,間違い探し問題,予約語選択問題 は,プログラミング言語の文法や記法を身につけることが 期待できる.一方で,本システムにより生成された問題が, 「プログラミング言語の学習上意味のある問題であるか」を 示すデータはまだ得られていない.また,本システムは教 師の負担を軽減することを目標として開発されたシステム であるが,本システムを使用することで,「どれだけ教師の 負担を軽減することができるか」を,まだ実際に検証でき ていない.今後は,評価実験により検証する予定である.

7.

おわりに

本研究では,入力されたソースコードから問題の自動生 成,自動採点をおこなうHTMLファイルを生成するシス テムを実装した.JavaScriptとPythonに対応している点 や,問題の採点,フィードバックをすべてユーザーの端末 でおこなうHTMLファイルを生成することができる点は Waquema独自の特徴である.今後は,生成されたHTML ファイルをウェブページとして簡単に公開する仕組みや, 解答データや学習者の管理をおこなうことができる仕組み をシステムに組み込むことを計画している.また,生成さ れる問題のバリエーションを増やすことや,問題の質を向 上させることも現在の課題となっている.入力されるソー スコードを多面的な角度から分析し,人間が手作業で作成 した問題に近い形の問題が生成できるだけでなく,学生の 能力を育成するような問題が作成できるように,Waquema を改良していきたい. 参考文献 [1] 喜多村 和誠,玉木久夫.タグ付き解答例プログラムから のプログラミング問題コンテンツの自動生成.情報処理学 会 コンピュータと教育研究会,CE(122),pp.1-8,2013. [2] 山下 美穂.Web上のJavaプログラミング学習支援シス テムMAX/JAVAの構築,明治大学大学院理工学研究科 2012年度修士論文,2013. [3] 内田保雄.初級プログラミング学習のための自動作問シ ステム.情報処理学会研究報告,CE(92),pp.109-113, 2007. [4] 有安浩平,池田絵里,岡本辰夫,國島丈生,横田一正.学 習者に合わせたC言語演習穴埋め問題の自動生成.DEIM Forum 2009. [5] 竹内亮太郎,大久保弘崇,粕谷英人,山本晋一郎.空欄補 充問題の自動生成によるHaskellプログラミング学習支 援環境,情報処理学会研究報告,pp.1-8,2011. [6] Satoru Kogure,Riki Nakamura,Kanae Makino,Koichi

Yamashita,Tatsuhiro Konishi,Yukihiro Itoh. Monitor-ing system for the effective instruction based on the semi-automatic evaluation of programs during programming classroom lectures.Research and Practice in Technol-ogy Enhanced Learning,pp.1-12,2005.

[7] Hiroki Kitaya,Ushio Inoue.An Online Automated Scor-ing System for Java ProgrammScor-ing Assignments Interna-tional Journal of Information and Education Technol-ogy,Vol.6-No.4,2016.

[8] Riku Saikkonen,Lauri Malmi,Korhonen.Fully au-tomatic assessment of programming exercises.ACM Sigcse Bulletin,ACM,33(3) pp.133-136,2001.

[9] 文部科学省:高等学校情報科「情報」教員研修用教材,入手先

⟨https://www.mext.go.jp/a

menu/shotou/zyouhou/det-ail/1416756.htm⟩ (accessed 2020-9-19).

[10] AIZU ONLINE JUDGE,AIZU Competive Programming Club (ICPCPC),Database Systems Lab.(online),入 手先⟨http://judge.u-aizu.ac.jp/onlinejudge/⟩ (accessed 2020-9-19).

[11] jQuery,入手先⟨https://jquery.com/⟩(accessed 2020-11-13).

[12] Waquema,Takumi Daimon’s web page,入 手 先

図 1 Waquema のウェブページ

参照

関連したドキュメント

2021] .さらに対応するプログラミング言語も作

(4) 現地参加者からの質問は、従来通り講演会場内設置のマイクを使用した音声による質問となり ます。WEB 参加者からの質問は、Zoom

自発的な文の生成の場合には、何らかの方法で numeration formation が 行われて、Lexicon の中の語彙から numeration

ピアノの学習を取り入れる際に必ず提起される

は,医師による生命に対する犯罪が問題である。医師の職責から派生する このような関係は,それ自体としては

自然言語というのは、生得 な文法 があるということです。 生まれつき に、人 に わっている 力を って乳幼児が獲得できる言語だという え です。 語の それ自 も、 から

難病対策は、特定疾患の問題、小児慢性 特定疾患の問題、介護の問題、就労の問題