日本ソフトウェア科学会第 35 回大会 (2018 年度) 講演論文集

プログラミング行動中の思考分析に基づいた初学者支援システムの提案
松井 大成

伊藤 恵

プログラミング教育の現場ではより効果的なプログラミング教育を行うために様々な手法が実践されている．その中でもプログラミング入門教育方法として演習型の授業方式が取り入れられることが多い．しかし，演習型の授業方式は指導者による学習者に対する支援が不足しがちになってしまうという問題がある．プログラミング学習において指導者と学習者による対話は重要な役割を果たしているにも関わらず，学習者全員が対話をすることは困難であるのが現状である．この問題を解決するため，本研究では指導者が学習者の支援のために行なっていることをモデル化し，システムに取り入れることによって，指導者を必要とせずに初学者の自立的な学習を促すシステムの構築を目指す．
本稿では，提案システムの概要を説明し，対話をシステムに取り入れる上で必要になるデータを集める実験について述べる．

In the field of programming education, various methods are practiced for more eﬀective programming education. Among them, the practice type lesson is often adopted as a programming introductory education
method. However, there is a problem that the practice type lesson tends to lack support for the learner by
the teacher. In spite of conversation between teachers and learners is important, it is diﬃcult for all learners
to conversation. In order to solve this problem, we aim to construct a system by modeling what teachers
are doing for supporting learners. And promote autonomous learning of beginners of programming without
requiring teachers. In this paper, we outline the proposing system and describe an experiment to gather
data for systematizing conversation.

課題を学習者が各自で解いていくというものである．

1 はじめに実習によって自分でプログラムを書くことにより，よ近年の情報化社会において，コンピュータやスマーり実践的な能力を育成することができる．

トフォンを利用したサービスはなくてはならないもの

一方，プログラミング教育はマンツーマンによるとなっている．それに伴って，それらを開発する技術指導が効果的であるとされている [1]．演習型の授業の一つであるプログラミング能力の需要は様々な分形式にも教員のほかに TA(Teaching Assistant) を活野で高まってきている．その需要に応じる形で今日で用している場合は多い．コードを書く Driver とそれは，多くの高等教育機関でプログラミング教育が行わを支援する Navigator の 2 人でプログラミングを行れている．一般的なプログラミングの入門教育方法とうペアプログラミングを用いた教育手法も多数提案して，演習型の授業方式が取り入れられている．ここ

されており [2] [3] [4]，その有用性を報告している．までいう演習型の授業方式とは，講義の初めに基本的た，平井らはペアプログラミング中のつまずき解決なプログラムの文法や処理の流れを講義形式で解説の成功時と失敗時にみられる会話の違いを比較する

し，その後，指導者があらかじめ用意しておいた演習研究を行なっている [5]．失敗時は成功時に比べて約

Proposal of Beginner Support System Based on
Thought Analysis During Programming Behavior
Hironari Matsui, 公立はこだて未来大学 システム情報科学部 情報アーキテクチャ学科, School of Systems
Information Science, Future University Hakodate.

9 ％連続発話率が高いことを報告し，指導者による一方的な説明の繰り返しは学習者の混乱を招く原因の一つであると述べている．これらのことから，プログ
ラミング学習中の指導者との対話は学習者にとって，プログラムの構造や処理の理解に重要な役割を果た

エラーをデータベースに蓄積することによってリアしており，学習者と指導者の双方向の理解確認を行う

ルタイムに学習者がつまずいている箇所を特定する．

ことによって，より効果的な学習効果を得ることがでこのフレームワークを用いて学習する学習者と指導きると予想される．

者それぞれの利点として次のことを挙げている．

ところが，演習型の授業方式の問題点として学習学習者者に対する支援が不足しがちになってしまうことが• つまづいたときにヒントや手がかりを得ることあげられる．プログラムの演習課題は一つの課題にができるので，単位時間あたりの問題回答を多く対して複数の回答があることが多く，また，学習者にすることができる

よって課題の進行速度が異なる．それゆえ，学習者ひ指導者とりひとりに合わせて適切な支援をする必要がある• 簡単なアドバイスやヒントの提示はシステムがが，指導者が学習者の状況を把握するには時間を要行ってくれるため，より複雑な学生のつまずきのするので一人当たりの指導に大きな負担が発生する．

支援に専念することができる

指導者と学習者の対話はプログラミング学習において重要な役割を果たしているにも関わらず，指導者の• TA(Teaching Assistant) などの指導者増員とは異なり，人的コストがかからない数が限られている以上，対話を行えるのは学習者の一• コンパイルエラーの収集，統計の提示までを自部であり，学習者全員が十分な支援を受けることは困動化するので，結果を学習者の支援に即時フィー難であるのが現状である．プログラミングの学習をドバックできる支援するシステムやツールは多数提案されているが，この研究中におけるフレームワークはコンパイルエシステムと学習者の相互的な情報のやりとりを実現

ラーの解消に限定しているが，指導者に負担をかけずしたシステムの提案はほとんどされていない．に学習者にアドバイスやヒントの提示をするシステ

そこで本研究では指導者に大きな負担をかけずに，ムは本研究の目指す形である．

指導者の行なっているアドバイスやヒントの提示といった対話をモデル化し，学習者の自立的な学習を促

2. 2 ペアプログラミング支援

すインタラクティブなプログラミング学習支援システ

長瀧らは遠隔ペアプログラミング支援システム

ムの構築を目指す．

SATORI を作成し，その活用と学習効果を報告して本稿では，2 章でプログラミング学習支援に関するいる [7]．SATORI はソースコードを記述するエディ研究について述べる．3 章では本研究で提案するシス

タ部と文字チャットを行うチャット部の 2 つのインテムの要件を述べる．4 章では本研究で開発する初学ターフェース持ち，学習者のプログラミングと指導者者支援システムについて説明する．5 章ではシステムによる文字によるアドバイスを遠隔で同期的に行う作成のために行う調査の実験について述べる．6 章でものである．このシステムを用いて試験演習を行なっ本稿のまとめと今後の展望について述べる．

た結果，指導者によるアドバイスの必要性を述べる被験者の感想が得られている．

2 関連研究2. 1 指導者の負担を軽減するシステム

3 提案システムの要件

授業中に指導者の負担を軽減するかたちで，学習者いくつかのプログラミング学習を支援するシステを支援するシステムとして，玉田らはアシスタントロム・ツールおよびフレームワークの提案や実践報告でボットを用いたプログラミング教育支援システムを挙げられる課題を元に，本研究では以下の課題の解決提案している [6]．このフレームワークは，学習者がを試みる．

起こすコンパイルエラーを収集・分析し，学習者にわ

課題 1 運用時に指導者の負担が大きいかりやすい形に翻訳して提示する．また，コンパイル

課題 2 学習者が指導者のフィードバックを待つ必要がある
課題 3 システムによる一方的な支援しか行われない
このことから，本研究で提案するシステムの要件として，次のことを挙げる．
要件 1 演習中に指導者の負担を強いることがない語を用いる理由としては，多くの高等教育機関で基本的なプログラミング言語として位置付けられており，オブジェクト指向型のプログラミング言語より，手続き型のプログラミング言語の方が単純なプログラムにおいては記述や理解が容易であると考えたためである．

先に述べた通り，演習型の授業方式は指導者に負担がかかる．指導者による支援を最大限に活かすために

4. 2 提案システムの機能も，システムを用いたときの指導者の負担は小さい必本システムの主な機能はシステムとの擬似的な対要がある．

話によって学習者のプログラミング中のつまずきを解

要件 2 学習者がいつでも支援を受けることができる消するものである．学習者が入力スペース部分にプロ演習型の授業方式では指導者が特定の学習者にかグラムを記述していくと，想定される学習者からの質かりっきりになるということが度々起こる．きめ細か問が対話スペース部分に提示されていく．学習者がつい支援をするならば，学習者が望むタイミングで支援まずきを感じた時，システムが提示した質問と学習者を受けることができるようなシステムである必要がの質問が一致していた場合，システムによる支援が可ある．

能となる．

要件 3 学習者とシステムの間で双方向の情報交換が行われる

質問はあらかじめ設定された特定の文字列が入力されることで提示される．例えば，学習者が「for」とプログラミング学習において対話は重要な役割を記述するとシステムはその文字列に関連付けされた果たす．指導者と学習者の間で行われる対話をシステ

質問を提示する．対話はシステムによる質問と学習者ムによって再現し，これによる擬似的な対話によってによるシステムで用意された回答の選択を交互に行学習効果の向上を狙う．

うことで進行する．この対話で用いられる質問と用意される回答は事前に行う実験データを元に作成する．

4 初学者支援システム

対話はいつでも終了することができるため，学習者は4. 1 提案システムの概要

つまずきを解消した時点で終了することができる．

本研究で想定しているプログラミング学習支援システムを提案する．本システム最大の特徴は学習者と4. 3 提案システムを用いた学習シナリオシステムの擬似的な対話であるが，ここでいう擬似的本システムを使った演習型の授業形式の学習シナな対話とは機械学習などを利用した高度な人工知能リオを示す．まず，学習者は通常通り，指導者に与えを用いたものではなく，決まった質問に決まった答えられた演習課題を行う．このとき学習者は本システムを返すといった簡易的な質問と回答を繰り返すものでの入力スペース部分でプログラミングを行う．学習者ある．

はつまずきを感じた場合，システムから提示されて本システムのインターフェースはプログラムを記述いる質問に一致した質問を選択し，システムとの擬する入力スペース部分とシステムとの対話を行う対似的な対話を始める．対話によってつまずきが解消さ話スペース部分に分かれる．学習者は入力スペース部れた場合，対話を終了し，再びプログラミングを再開分にプログラムを記述することによって，対話スペーする．もし，つまずきを解消できなかった場合や学習ス部分でアドバイスやヒントの提示といった支援を受者の質問とシステムによる質問の提示が一致しなかっける．この対話による学習支援によって学習者のプロた場合は指導者を呼び，直接支援を行なってもらう．

グラミング行動中のつまずきを解消する．
本システムの学習対象言語は C 言語とする．C 言

システム

学習者
for
int:
①特定文字列の入力

配列の初期化の方法がわからないfor:for文のループが終わらない
for文の書き方がわからない…

③提示された質問との一致②文字列に対応する
質問の提示

for文の書き方がわからない

対話の開始

図1

学習者と提案システムの対話が始まるまでの流れ

4. 4 提案システムを用いる利点
本システムを演習型の授業形式に取り入れた場合の利点を述べる．提案システムを演習に用いることによ

5 予備実験
5. 1 目的と対象

り，単純な文法的知識の欠如に対するつまずきならば指導者と学習者の対話のシステム化を目指すため，解消できると考える．これにより，指導者はより解決

実際にプログラム指導の様子を分析する必要がある．に時間のかかるつまずきをしている学習者の支援にそのため，プログラミング行動中の学習者とそれを専念することができる．学習者の視点から考えると，支援する指導者の間にどのような会話や行動が行わ常にシステムが支援を行なってくれているので支援れているかを調査する実験を行う．対象はプログラミを受けたい時に受けることができる．また，対話によ

ング初学者 (以下，学習者)5 名とプログラミング経験

るアドバイスやヒントの提示は直接答えを教えられ者 (以下，指導者)5 名とする．この被験者のうち，学るよりも学習者の自立的な学習を促すことができる．

習者はまだ C 言語をほとんど経験したことがない本

対話の相手がシステムになることにより対話の主導学の 1 年次の学生であり，指導者は本学の講義を通権が常に学習者にあるため，対話の中で起こる指導者して，C 言語を一通り学習した 4 年次以降の学生での一方的な説明による学習者の混乱などの問題は起ある．

きることが少なくなると考えられる．学習者の中には支援を受けたいが，周りの目を気にして指導者を呼ぶ

5. 2 実験内容ことを敬遠する人もいる．そういった場合でも本シス

実験参加者にはこちらで作成したプログラミング

テムならば気兼ねなく利用し，つまずきを解消するこの演習課題を提示する．この演習課題は C 言語を使とができる．以上の利点から本システムを用いること用するものとする．C 言語を用いる理由は，より提によって学習者全体の学習効率をあげることができる

案システムに近い環境で行うためであることと，本と予想する．

学の必修科目であり，上級生がある程度指導できるレベルにあると考えたためである．まず，学習者には演イプによってシステムによる擬似的な対話がプログラ

習課題を行ってもらう．学習者にはわからない箇所がミング学習において有効であるかどうかを実験によっあったり，アドバイスが欲しい場合は適宜，指導者にて明らかにする．

質問をしてもらうよう教授する．また，指導者が学習者の様子を観察していて気になる点がある場合は指参 考 文 献

導者からアドバイスを行っても良いこととする．これ[ 1 ] 都倉 信樹: 情報処理専門教育について：情報処理教育における実験・演習, 情報処理学会研究報告, Vol.32,No.10(1991), pp.1101-1108[ 2 ] 佐々木 孝輔, 林 勇吾, 井上 智雄: テキストチャットによるペアプログラミング学習システム：学習者同士のインタラクションに着目した検討, 情報処理,
Vol.2014-HCI-157, No.53(2014), pp.1-8[ 3 ] 熊谷 英紀, 山田 敬三, 田中 充, 佐々木 淳: ペアプロ
グラミング手法を活用したプログラミング教育方法の提案, 情報処理学会全国大会講演論文集, Vol.71, ソフト
ウェア科学・工学, pp.335-336(2009)[ 4 ] 中村 一星, 松本 章代: 教育支援を目標とした遠隔ペアプログラミング環境の構築, 情報処理学会全国大会講演論文集, Vol.72, ソフトウェア科学・工学,
pp.511-512(2010)[ 5 ] 平井 祐樹, 井上 智雄: ペアプログラミング学習における状態の推定ーつまづきの解決の成功と失敗に見られる会話の違い, 情報処理学会論文誌, Vol.53, No.1(2012),
pp.72-80[ 6 ] 玉田 春昭, 荻野 晃大, 上田 博唯: アシスタントロボットを用いたプログラミング教育支援システムの構
築, 映像情報メディア学会報告, Vol.34, No.25(2010),
pp.143-148[ 7 ] 長瀧 寛之, 北村 英純, 永井 孝幸, 都倉 信樹: 遠隔ペ
アプログラミング支援システム SATORI の開発とプログラミング教育への適用, 工学・工業教育研究講演会講演論文集, Vol.52, pp.445-446(2004)

らの様子を画面録画と発話の録音を用いて記録する．
その後，指導者と学習者にはインタビューを行い，学習者の感想や指導者の指導内容の意図などのヒアリングを行う．発話データやヒアリング内容の分析方法として，発話データを質問，同意，納得などの分類を行うことによって，問題のつまずきから解決までの教授プロセスを定義することを試みる．

6 終わりに本稿では，プログラミングの一般的な教授方法である演習型の授業形式の問題点を論じ，システムと学習者による対話が行われるシステムの概要を提案した．
また，システムの構築に必要なデータを集める実験方法を検討した．今後の展望として，本稿で述べた予備実験を決行し，問題点の改善をしながらある程度結果の理論的飽和が見られるまでデータの収集を行う．
その後，集めたデータの分析結果を用いてシステムのプロトタイプ構築を目指す．また，作成したプロトタ