中国地区

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

初学者向けプログラミング学習支援システム Hello C を用いたシンタックスエラー修正学習用機能の提案
Proposal of a Function for Syntax Error Collection Learning
using Hello C, a Programming Learning Support System for Novices
大下 昌紀*1, 買田 康介*2, 小川 真輝*2, 松本 慎平*2
Masanori OHSHITA*1, Kosuke KAIDA*2, Masaki OGAWA*2, Shimpei MATSUMOTO*2*1
広島工業大学大学院工学系研究科*1
Graduate School of Science and Technology, Hiroshima Institute of Technology
Email: md18003@cc.it-hiroshima.ac.jp*2
広島工業大学情報学部*2
Faculty of Applied Information Science, Hiroshima Institute of Technology
Email: {bl17032, bl16023, s.matsumoto.gk}@cc.it-hiroshima.ac.jp
あらまし：本研究では，2 つ以上のシンタックスエラー出力を持つソースコードを事前に与え，そのシンタックスエラーを全て修正することを課題とした学習において，シンタックスエラーをスクリプト言語と同様の方式で 1 つずつ表示する場合とそうでない場合との学習効果の差を調査する．これは我々がこれまで開発を進めている初学者向けプログラミング学習支援システム Hello C の主要な機能の一つである．Hello C は，高等教育機関などでコンピュータ操作に不慣れなプログラミング初学者を支援するための C 言語学習に特化した開発環境である．Hello C はプログラミングに十分に慣れていない学習者に使いやすいユーザ体験を提供し，初学者のプログラミングに対する抵抗感を低減することを目指している．よって本研究の目的は，初学者の視点から Hello C を用いたシンタックスエラー修正学習の学習効果を評価することである．実験の結果，Hello C に実装したシンタックスエラー表示機能の有用性を確認した．
キーワード：プログラミング，C 言語，学習用エディタ，シンタックスエラー

1.

はじめに大学など高等教育機関の一般的な C 言語の講義では，多くの場合，Linux などの専門的な環境や，VisualStudio などのリッチな統合開発環境が利用される．
しかしながら，これらの環境は，プログラミングに初めて触れる学習者や，そもそもコンピュータの基本操作に慣れていない学習者にとっては非常にハードルが高い(1)．プログラミング初学者の中には，そもそもオペレーティングシステムの操作法，ファイル管理の概念自体を十分に理解できていない学習者や，エディタの使い方をマスターしていない，タイピングに慣れていないといった学習者も多く存在する．
このような初学者は，タイプミス等による文法エラーが多発していると言われている．非本質的な箇所での躓きは本質的な学習を阻害し，最終的に，学習意欲の減衰，知識不足を引き起こすと考えられる．
以上に加えて，学習のための準備，すなわち開発環境の構築という点も従来のプログラミング教育の大きな課題であると考えられている(2)．大学での C
言語教育では，毎年多くの学習者がこのような非本質的な問題で混乱し，多くの時間を失っている．この面倒な作業は，プログラミングが困難な学習者のモチベーションを低下させている可能性が高い．
そこで，大学などでプログラミングを不得意とする学習者の支援に資するため，大学生が受ける授業で手軽に利用可能な C 言語エディタである Hello Cの開発が進められている(3,4)．Hello C は，プログラミ
1https://helloc.kuroppi.net

189

ングに十分に慣れていない学習者にとって使いやすいユーザ体験を提供できるため，初学者のプログラミングに対する抵抗感の低減に十分に貢献できると考えられる．そこで本稿では，Hello C が有する主要な機能の一つである初学者向けエラー表示機能の有用性の評価を目的とする．具体的には，2 つ以上のシンタックスエラー出力を持つソースコードを事前に与え，そのシンタックスエラーを全て修正することを課題とした学習において，シンタックスエラーをスクリプト言語と同様の方式で 1 つずつ表示する機能を提案し，そうでない場合との学習効果の差を調査する．実験の結果，提案法は初学者のエラー修正能力の向上に有用であることが示唆された．

2.

Hello C

Hello C1は，Windows 用のプログラミング学習に特化した C 言語用開発環境である．Hello C の外観を
図 1 に示す．Hello C は，初学者がプログラミング学習を進める過程で，できる限り非本質的な認知負荷を利用者に掛けないよう配慮している．具体的には，
簡易プロジェクト管理機能，簡易デバッガ機能，静的解析機能，オートコンプリート機能，構文チェック機能，ソースコード圧縮保存機能，練習問題取得
機 能 な ど を 提 供 し て い る ． Hello C は ， Visual
Basic .NET Framework 4.5 を用いて開発されている．
C 言語のコンパイルは，Windows 用 gcc で行う．HelloC の外観を図 1 に示す．

中国地区

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

スエラーをすべて修正させるという問題形式とし，群分けには，修正完了までの時間を用いた．なお，この際のエラー修正環境は，一般的なエラー表示形式とした．また，問題数はそれぞれ 6 問ずつとした．

コンパイル＆実行

ファイルビュー

4.2 結果・考察

エディタ

ポストテストの結果，実験群の平均速度は 10 分26 秒，標準偏差は 2 秒となり，統制分の平均速度は13 分 18 秒，標準偏差は 9 秒となった．よって，提案した学習時間は，初学者にとってエラー修正能力の向上に有用であることが示唆された．2 群のテス
トの平均点の差について Welch の t 検定を行った結果，p = .25 となり統計的に有意な差は確認できなかった．十分な数の被験者を集めれば提案法は従来法よりも統計的に早くエラーを修正できる可能性があるため，提案法は有用な可能性が示された．

エラー一覧

図1

3.

Hello C の外観

学習手法

本稿では，初学者のシンタックスエラー修正能力の向上を目的としたシンタックスエラー修正学習手法を提案する．本稿では，シンタックスエラー修正能力を「エラー修正速度」と定義する．提案手法を用いた学習の流れとして，まず初学者にプログラムの問題文，実行結果に加え，ソースコードをテンプレートコードとして提示する．提示するソースコー
ドは，問題文に解答することを目的として記述されたソースコードであるが，2 つ以上のシンタックスエラーが含まれているものとする．初学者は，このソースコードを変更し，シンタックスエラーを修正することで学習に取り組む．一般的な C 言語のコンパイルではエラー箇所はすべて表示されるが，提案システムを用いた学習手法では，エラー箇所を 1 つずつ表示するものとする．このような環境下でエラー修正学習を行うことで，1 つのエラー箇所に学習認知負荷を集中させる狙いがある．このことは，学習者の学習目的を明確化すること，加えて，学習者のエラー修正力を向上させること，の 2 点に有効に働くと考えている．

4.

5.

おわりに

本稿では， Hello C が有する主要な機能の一つである初学者向けエラー表示機能の有用性を評価した．
2 つ以上のシンタックスエラー出力を持つソースコードを事前に与え，そのシンタックスエラーを全て修正することを課題とした学習において，シンタックスエラーをスクリプト言語と同様の方式で 1 つずつ表示する場合とそうでない場合との学習効果の差を調査した結果，C 言語学習においてもスクリプト言語と同様の方式でシンタックスエラーの表示を 1つずつ行うことで初学者にとってエラー修正速度の向上に有用であることが示唆された．つまり，シンタックスエラーを一つずつ表示することは初学者にとってより C 言語を学びやすい UX であることが示唆された．

謝辞
本研究は，独立行政法人日本学術振興会科学研究費助成事業(基盤研究(C)17K01164，No.19K02987)の助成を受けて実施した成果の一部である．ここに記して謝意を表します．

実験

4.1 実験概要
提案手法が学習者のモチベーション低下の抑制に有効であることを確認するため，C 言語初学者 12 名を対象に実験を行った．プレテストにより実験群と統制群に分割し，実験群には提案学習手法による環境下でのシンタックスエラー修正学習を，統制群には，一般的な学習環境下でのシンタックスエラー修正学習を，つまりエラー文がすべて表示される環境下で学習を行った．なお，実験問題数は 3 問とし，学習時間の上限を 30 分とした．学習後，ポストテストから，提案学習手法はシンタックスエラー修正能力の向上につながるかを確認した．なお，プレテス
ト，ポストテストでは，C 言語初学者が C 言語を用いた一般的なコーディング学習中に生じた，シンタックスエラーを含むコードとその学習時の問題，実行結果を被験者に提示し，そのコードのシンタック

参考文献(1) 岡本雅子，ぺた語義：はじめてのプログラミングとつ
まずき，情報処理 56(6), pp.580-583 (2015).
(2) K. Morita and S. Matsumoto, Developing a Cloud-Based
Programming Learning Support Tool - Aiming to the Most
Accessible Development Environment for University
Students -, Proc. of AROB 22nd 2017, GS6-2, pp.143-146(2017).
(3) 買田康介, 大下昌紀, 松本慎平, 大学生のための C 言語エディタの開発, 2017 年度教育システム情報学会学生研究発表会講演論文集, 中国地区, p21, pp.207-208(2018).
(4) M. Oshita, K. Kaida, S. Matsumoto, A Basis Analysis on
Novice Programmers with a Server-Client System for
Learning C Programming Language, Proc. of AROB 24th
2019, GS5-4, pp.134-137 (2019)190