中国地区

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

初学者向けプログラミング学習システムにおける学習者支援機能の検討
Examining User Support Functions of Programming Learning System for Novices
買田 康介*1, 大下 昌紀*2, 松本 慎平*1
Kosuke KAIDA*1, Masanori OHSHITA*2, Shimpei MATSUMOTO*1*1
広島工業大学情報学部*1
Faculty of Applied Information Science, Hiroshima Institute of Technology
Email: {bl16023, s.matsumoto.gk}@cc.it-hiroshima.ac.jp*2
広島工業大学大学院工学系研究科*2
Graduate School of Science and Technology, Hiroshima Institute of Technology
Email: md18003@cc.it-hiroshima.ac.jp
あらまし：大学などでプログラミングを不得意とする学習者の支援に資することができ，大学生が受ける授業で手軽に利用可能な C 言語エディタ Hello C の開発が進められている．一般的な C 言語の講義では，多くの場合，Linux などの専門的な環境や，Visual Studio などのリッチな統合開発環境が利用される．しかしながら，これらの環境は，プログラミングを初めて学ぶ学習者や，そもそもコンピュータの基本操作に慣れていない学習者にとっては非常にハードルが高い．よって，Hello C は，プログラミングに十分に慣れていない学習者にとって使いやすいユーザ体験を提供し，初学者のプログラミングに対する抵抗感を低減することを目指している．本稿は，Hello C の有効性について，Hello C サーバの特徴であるラーニングアナリティクス，初学者に有効な Hello C クライアントの UX の観点で議論することを目的とする．
キーワード：プログラミング，C 言語，学習用エディタ，初学者

1.

そこで，大学などでプログラミングを不得意とする学習者の支援に資するため，大学生が受ける授業で手軽に利用可能な C 言語エディタである Hello Cの開発が進められている(3,4)．Hello C は，プログラミングに十分に慣れていない学習者にとって使いやすいユーザ体験を提供できるため，初学者のプログラミングに対する抵抗感の低減に十分に貢献できると考えられる．
本稿は，Hello C の有効性について，HelloC サーバの特徴であるラーニングアナリティクス，初学者に有効な Hello C クライアントの UX の観点で議論することを目的とする．

はじめにプログラミングは，コンピュータサイエンスにおいて最も重要な技能と考えられている．加えて，近年，プログラミング教育の重要性が広く認識されている．実際，日本政府は現在，義務教育のカリキュラムに対してプログラミングの基礎科目を導入することを検討している．しかし，大学でのプログラミング教育では，プログラミングを不得意とする学習者を十分に支援できていない．
大学などでの一般的な C 言語の講義では，多くの場合，Linux などの専門的な環境や，Visual Studio などのリッチな統合開発環境が利用される．しかしながら，これらの環境は，プログラミングに初めて触れる学習者や，そもそもコンピュータの基本操作に慣れていない学習者にとっては非常にハードルが高い(1)．プログラミング初学者の中には，そもそもオペレーティングシステムの操作法，ファイル管理の概念自体を十分に理解できていない学習者や，エディタの使い方をマスターしていない，タイピングに慣れていないといった学習者も多く存在する．このような初学者は，タイプミス等による文法エラーが多発していると言われている．非本質的な箇所での躓きは本質的な学習を阻害し，最終的に，学習意欲の減衰，知識不足を引き起こすと考えられる．
以上に加えて，学習のための準備，すなわち開発環境の構築という点も，従来のプログラミング教育の大きな課題であると考えられている(2)．大学での教育では，毎年多くの学習者がこの非本質的な問題によって混乱し，多くの時間を失っている．この面倒な作業は，プログラミングが困難な学習者のモチベーションを大幅に低下させている可能性が高い．
12.

Hello C

Hello C1は，Windows 用のプログラミング学習に特化した C 言語用開発環境である．Hello C の外観を図 1 に示す．Hello C は，初学者がプログラミング学習を進める過程で，できる限り非本質的な認知負荷を利用者に掛けないよう配慮している．具体的には，簡易プロジェクト管理機能，簡易デバッガ機能，静的解析機能，オートコンプリート機能，構文チェック機能，ソースコード圧縮保存機能，練習問題取得
機 能 な ど を 提 供 し て い る ． Hello C は ， Visual
Basic .NET Framework 4.5 を用いて開発されている．
C 言語のコンパイルは，Windows 用 gcc で行う．
初学者向けのエディタはいくつか存在するが，他にはない独自の機能として練習問題配信及び学習者履歴の送信機能を有しており，これらはサーバサイドアプリケーションである Hello C サーバ(5)によって実現されている．Hello C サーバにより，教授者は学習者の回答状況の確認はもちろんのこと，正誤判定結果や学習者の進捗状況を都度把握できるように

https://helloc.kuroppi.net

183

中国地区

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

ログラミング教育におけるラーニングアナリティク
スのツールのひとつとしての有効性を示すため，学習者のコーディング過程データを対象とし，推当て法を行っている学習者を教授者が推測可能とすることは意義のある取り組みと考えられる．
Hello C クライアントは初学者を対象として独自に開発を始めたアプリケーションであるため，初学者に特化した UI/UX，あるいは，初学者の円滑な学習を支援するための補助機能を搭載可能である．そこで，初学者にとって学びやすいと言われているス
クリプト型言語のコンパイルエラー表示方式が C 言語学習においても有効かどうか，また，SIEM 理論(6)に基づき出力結果に応じて正解までの近さをフィードバックとして学習者に返答しそれによる足場かけを行う機能が有効かどうかの 2 点を検証する．前者については，シンタックスエラー修正課題による実験，後者については，I/O エラー修正課題による実験から明らかにできると考えている．

図 1 Hello C の外観なる．Hello C サーバの対象 OS は Ubuntu16.04，Web
サーバソフトウェアとして Apache2.4.29，データベース管理システムとして MySQL10.1.28-MariaDB を用いて構築された LAMP 環境で動作し，開発言語はPHP7.1.11，フレームワークは Cake PHP 3.6 により開発されている．プログラム開発演習の際，学習者はHello C サーバの存在を意識することなく，練習問題とそのテストケースを Hello C のメニューからダウンロードできる．ダウンロード後，学習者は練習問題で指示された要件を満たすような課題作成に取り組む．その際，学習者が Hello C でコンパイルを行う毎に，ソースコードの状態と実行結果(エラー出力)が端末に記録され，課題提出などの際に Hello Cサーバに一括して送信される．この情報を教授者は一元的に把握できるため，授業の進捗計画や学習者の個別対応などといった学習支援が可能となる．
Hello C システムは，練習問題の配信のみならず練習問題の自動採点も可能である．自動採点機能については，Hello C サーバが Hello C に配信したテストケースを用いてクライアント側で正誤判定を行い学習者のソースコードが正しいかをチェックできる．これにより教授者は全ての学習者の提出したソースコードの合否を自ら採点することなく判定することが可能となった．このことは Hello C の他にはない利点であり，Hello C を利用することで，従来は容易ではなかった学習支援が容易に実現可能となった．

3.

4.

おわりに

本稿では，大学生が受ける授業で手軽に利用可能な C 言語エディタ Hello C の有効性について，HelloC サーバの特徴であるラーニングアナリティクス，初学者に有効な Hello C クライアントの UX の観点で議論することを目的とした．

謝辞
本研究は，独立行政法人日本学術振興会科学研究費助成事業(基盤研究(C)16K01147，17K01164)の助成を受けて実施した成果の一部である．ここに記して謝意を表します．
参考文献(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)(5) 槇原絵里奈，井垣宏，吉田則裕，藤原賢二，飯田元，
プログラミング演習における探索的プログラミング
行動の自動検出手法の提案，コンピュータソフトウェ
ア, 35(1),pp.110-116 (2018).
(6) 土肥紳一，宮川治，今野紀子，工学部第二部電気電子工学科におけるプログラミング入門教育の教授の工夫，工学教育, Vol.62, No.3, pp.28-33 (2014).

学習支援機能の検討

複数種類の実装をそれぞれ試行・評価しながら進めていくプログラミングのサイクルは，探索的プログラミングと定義される(5)．探索的プログラミングには，エラー文を確認せず闇雲にプログラミングを行っている学習活動も含まれていると考えられる．
このように，エラー文を確認せず試行を繰り返してしまい，正解に近づけない方法は過去に定義されていないため，本論文ではこれを「推当て法」と定義する．推当て法は，エラー文を確認しないことから，「なぜプログラムが動かないのか」を学習者が十分に追求せず，ただ単純にコード記述作業を行っている可能性が高い．したがって，これは学習活動として不適切であると考えられる．そこで，Hello C のプ

184