卒業研究のご紹介
2022年版

情報系所属学生

日本語環境ブロックプログラミングと連携した
 ソースコードの穴埋め選択問題生成システム

島岡 慎也長野県
情報学部情報工学科
2022年3月卒業
長野県飯田OIDE長姫高等学校出身

研究の目的

2020年以降小学校、中学校、高等学校にてプログラミング教育必修の全面実施することが文部科学省により決定された。このため、プログラミング教育支援を行うために、ブロックプログラミングによる論理的思考力の訓練とともに、生成したブロックに対応するソースコードを穴埋め問題として提供しコーディング力を実際に体験して理解を深めることで、プログラミングに必要な論理的思考力およびコーディング力を効率的に養成するシステムの実現を目標とする。本研究では、この目標のためにブロックプログラミングと連携したソースコードの穴埋め問題生成システムを提案する。

研究内容や成果等

■ 研究の目的

プログラミング学習において、ブロックプログラミングにより論理的思考を養うことできる。一方、システム開発では、コーディング力が必要とされる。本研究では、プログラミング学習者が、ブロックプログラミングを用いることで論理的思考力を身に着けるとともに、ブロックプログラミングに対応するソースコードを利用してコーディング力を養成するシステムの実現を目標とする。本研究では、この目標のためにブロックプログラミングと連携したソースコードの穴埋め問題生成システムを提案する。提案システムは、穴埋め問題生成処理において、ワンパターンの出題を生成しないように、選択肢の類似性を調整して選択肢の組み合わせを決定する点が特徴である。

■ 提案システム


図1 提案システムのユーザインタフェース

概要

図1は提案システムのユーザインタフェース例を示している。図1では、左側に日本語ブロックプログラミング環境、右側にブロックに対応したソースコードが表示されている。日本語ブロックプログラミング環境を用いる理由は、日本語を母国語とするプログラミング初級者に対して、論理的思考を養うのに適しているからである。ソースコードは、穴埋め選択問題となっている。学習者は、ブロックプログラミング後に、穴埋め選択問題を解くことで、論理的に考えながら、少しずつコーディング力を高めることができる。

穴埋め問題生成手法

穴埋め問題生成手法では、ブロックプログラミング環境で利用できる予約語や演算式記号などの要素を、要素が持つ意味や演算機能の類似性などを基準にしてグループ化(表1)しておき、ソースコード中に含まれる要素を穴埋め箇所とした場合に、グループ中の要素を選択肢として選択問題を生成する。本手法の特徴は、ソースコード中の穴埋め箇所数を変化させるだけでなく、異なるグループの要素を組み合わせることで、ワンパターンの出題にならないように難易度を調整して、穴埋め選択肢問題を生成する点にある。

表1 選択肢グループ例

■ 実験手法と結果

提案する選択肢穴埋め問題生成手法により、適切に問題生成できるかを評価する。実験に利用した問題数は、全体で354問である。難易度は、簡単な問題と難しい問題が89問ずつ、普通の問題が176問である。表1に評価基準を示す。
なお、提案システムのプロトタイプの構築は、HTML/CSSおよびJavaScript言語を用いて、Webシステムとして実装した。ブロックプログラミングのユーザインタフェースの導入にはGoogleが提供するBlocklyライブラリを用いた。
表2の評価基準で評価した結果を図2に示す。図2で、基準4の結果は分散の値となっている。また、実験で実際に生成された問題の例を図3と図4に示す。図3では、同一グループの要素から、選択肢として”if”, “else”, “switch”が生成されており、条件分岐のための予約語という点から類似性が確認できる。図4では、異なるグループの要素から、選択肢として”round”、”if”、”=”が生成されており、前後のコードの文脈から解答の導出が可能である。
図2の評価、および図3と図4の生成例より、異なるグループの要素を組み合わせることで、ワンパターンの出題にならないように難易度を調整して穴埋め選択肢問題を生成できることが確認できる。

図2 評価基準に基づいた評価結果

図3 同じグループから生成された問題例

図4 異なるグループから生成された問題例

表2 評価基準

■ まとめと今後の課題

本研究では、ブロックプログラミングと連携したソースコードの穴埋め問題生成システムを提案した。実験結果より、提案するブロックプログラミングと連携したソースコードの穴埋め問題生成システムを実現する見込みを得ることができた。
今後の課題として、今回は事前に用意したキーワードから問題を生成したため、変数名を選択肢として利用することができない。このため、問題の生成方法の見直しが必要である。さらに、異なるグループにまたがって選択肢を生成する際に、選ばれるキーワードをランダムで抽出した。しかし、キーワードの出現確率に重みを設定するなど、初学者向けのキーワードがより多く出現させるなど、難易度の調整方法の工夫が必要である。提案システムを実用的なシステムとして実現するために、これらの課題について検討していきたい。
指導教員からのコメント データベースシステム研究室教授 鷹野 孝典
小学校のプログラミング教育では論理的思考力を養うことを目的としています。このため、従来のプログラミングとは発想を転換し、できるだけソースコードを書かずに、ブロックなどで表される「プログラムの手順」を繋ぐことでプログラムを完成させる教育方法が導入されています。一方で、高等教育に進むにつれ、きちんとソースコードを書いてプログラムを作成する技能である「コーディング力」も求められます。
島岡さんは、ブロックプログラミングにより論理的思考力を養った学生が、円滑にコーディング力を身に着けていくためのプログラミング学習支援環境の実現を目指して、本システムを提案しました。なお島岡さんの「コーディング力」は非常に高く、優れたプロトタイプシステムを実装しました。また評価実験により、提案システムの有用性を示しました。2021年度3月に開催された教育システム情報学会学生研究発表会での発表も立派でした。
社会人としての今後のご活躍に期待しています。
卒業研究学生からの一言 島岡 慎也

研究活動を振り返り成長したこと

研究活動を通して、完成までに、どのような作業が残っているのか、見通しを考えることが以前より多くなりました。