G3-2

プログラミング学習のための自主学習支援システムに関する研究
Development of Self-learning support system for programing
田中龍之介*1，尋木信一*2
Ryunosuke TANAKAI*1， Shinichi TAZUNEKI*2*1 有明工業高等専門学校生産情報システム工学専攻*1 National Institute of Technology， Ariake College， Advanced Production and Information Systems
Engineering Course*2 有明工業高等専門学校創造工学科*2 National Institute of Technology， Ariake College， Department of Creative Engineering
Email: e51222@ga.ariake-nct.ac.jp
あらまし： 本稿では，プログラミングを学ぶ際の自主学習に注目した学習支援システムについて述べる.
プログラムの作成過程を「設計」と「開発」の 2 段階と捉え，それぞれの過程を支援するシステムを構築した.具体的には，プログラムの処理の流れを視覚的に編集することができるエディタと開発時の疑問を質問することができるチャットボットで自主学習を支援する.このシステムを用いることで，プログラミング自主学習環境改善が期待できる.
キーワード：Chatbot，ICT 教育，学習支援システム，プログラミング

1.

はじめに近年，プログラミングの必修化などに伴いプログラミング学習者が増加している.プログラミングの授業の多くは，演習型の授業形式をとっている.この演習型の授業形式というのは，指導者が単純なコードを解説し演習問題の出題を行う，学習者が課題を作成するというものである.この演習型授業形式の問題点として，指導者の不足や学習者の理解度や思考の違いなどが挙げられる.指導者の不足については一人の指導者に対して，40 人以上の学習者を監督しているといった現状である.また，プログラミング学習にはマンツーマンでの学習が効果的である(1).指
導者が不足している現状では，時間的制約や場所的制約を受けてしまうため自主学習が必須であると考える.よって本研究では，学習者の自主学習を支援するシステム開発・運用を目的とする.

2.

プログラミング学習支援

2.1 プログラミングの思考過程
我々は，プログラミング時の思考過程は 3 段階に分けられる(2)と考える.そのプロセスを図に表したのが図 1 である.一般的にプログラマは 3 段階の過程を踏んでプログラムを作成すると仮定する.思考過程
第 1 段階は「分析」である.この「分析」では，学習者が与えられた課題をプログラムまで実現可能な最小構成要素までに分解を行う段階である.この思考過程では，自然言語で与えられた問題の枠組みを正確に捉え分解するといった能力が必要である.この能力を「問題の細分化能力」と名付ける.思考過程第2 段階は「構築」である.この思考過程では，前段階で処理した最小構成要素をプログラム的に意味のある順序に構成する段階である.この思考過程では，実世界とプログラムとのギャップを含めて思考する必要がある.この能力を「プログラミング的思考」と名付ける.思考過程第 3 段階は「開発」である.この思考過程では，前段階の最小構成要素をプログラムに変換する段階である.この思考過程では，コードを能力が必要である.よって必要能力は「コーディング能力」となる.この 3 段階を経て学習者は課題を作成する.
それぞれの思考過程では必要とされる能力が異なるため，各思考過程で必要な能力を育てる事によりプログラミング能力は向上すると考える.
2.2 具体的な支援
本研究では思考過程を図 1 の赤線で分割し二つのアプローチから支援システムを構築し，総合的にプログラミング能力の向上を目指す.思考過程前半部
分「分析」「構築」間を「Mind」で，思考過程後半部分「開発」を「Reina」で支援する.

3.

開発

3.1 Mind
今回開発した「Mind」は，思考過程前半を支援す
る Editor である．設計フェーズを支援するシステムの要件について述べる.
・並び替えを容易に行うことができる・自然言語の分解を視覚的に表現・開発言語を限定しない

図 1.思考過程― 227 ―教育システム情報学会 JSiSE2019
第44回全国大会 2019/9/11-9/13

上記の条件を満たした Editor を開発することで，思考過程前半部分で必要な能力を養うことができると考える.
「Mind」の画面を図 2 に示す.「Mind」は 3 つの画面で構成されている.1 つ目は，画面右側①の新規入力画面である.「Mind」では，構成要素は円で表現している.この円には，それぞれに title 属性と memo属性があり新規入力部①で入力された各属性が円に保存される.2 つ目は，画面左側②，③の編集画面である.円を選択すると編集部②に各属性が表示される.編集画面では，更新もしくは消去が選択できる.
ボタン郡③はシステムボタンである.ここでは，内容の保存，保存データの開示，新規データの作成を選択できる.3 つ目は，画面中央④，⑤の表示画面である.画面中央④は，親要素表示部である.親要素表示部は上部の階層表示と円と線の表示部で構成される.
階層表示は，親要素の現在の階層を表示する.新規画
面で追加した円は親要素に表示される.円をダブルクリックすることで画面中央⑤の子要素表示部を表示することができる.子要素表示部にも親要素表示部と同様に円を追加することができる.子要素内の円をダブルクリックで選択することで，子要素が親要素になり，子要素を作成する.子要素内で子要素を作成することで階層が一段深くなる.これによって自然言語の分解が行える.また，円は選択ドラッグすることで移動ができる.また，二つの円を選択することで円間に線を作ることができる.この線は円間の関連性や流れを表現している.これによって並び替えを感覚的に行うことができる.表示部には常に 2 階層分の構成要素しか表示しないため，考える際には集中して分解を行うことができる.
「Mind」のシステム構成を図 3 に示す.「Mind」
は「Processing」で開発を行っている.作成したデータは，Text の独自形式で保存される.これによって，他の学習者，もしくは指導者が作成したデータを開くことができる.「Mind」の使用の提案としては，学習者が自主学習として用いることもできるが，指導者が予めデータを用意しておくことで授業を展開していくこともできる.例としては，指導者が作成した虫食い状態の「Mind」ファイルを配布し，学習者が完成させることで演習を行う手法が挙げられる.

図 2.Mind 初期画面

図 3.システム構築図
3.2 Reina
今回作成した「Reina」は，思考過程後半を支援する「LINE BOT」(3)を用いた Bot システムである．開発フェーズを支援するシステム要件について述べる.
・いつでも支援を受けることができる
・複数人から同時に支援を受けることができる・先生的動作を受動的に行う
上記の条件を満たすためには独立した対話システムが最適であると考える.
「Reina」のシステム構築図を図 3 に示す.今回のシステムは「Heroku」(4)とデータベースで構築されている.現段階のシステムでは，学習者との対話によってサンプルを作り出す「サンプルコードリプライ」機能とエラーに対するアドバイスを送信する機能がある.これにより，単純なつまずきを即時に解消することができ，「コーディング能力」を支援することができる.

4.

おわりに
本研究では，プログラミングの思考過程を分割し，2つのアプローチによる支援により総合的にプログラミングの自主学習支援システムの開発を行った.
「Mind」では，円と線による単純構造と階層表現により，階層的思考と順序的思考を視覚化するシステムを構成した.「Reina」では，疑似教員として Chatbotを 用 い た 対 話 シ ス テ ム を 構 築 し た .現 段 階 で は ，「Mind」は学習者の使用によるフィードバック ，「Reina」はデータの充実により支援の強化が考えられる.
今後の展開として，「Mind」は学習者間のデータの共有を可能にすることにより，学習者の自主学習を促すことができると考える.「Reina」は問題提案機能などの実装によりユーザに寄り添った支援が行えると考える.
参考文献(1) 都倉信樹：情報処理教育について：情報処理教育における実験・演習，情報処理学会教育報告 Vol32，
No.10(1991)， pp.1101-1108(2) 田中龍之介，”ICT を活用したプログラミング学習支援に関する研究”，2018，卒業論文(3) “Line Developer”，https://developers.line.biz/ja/(4) “Heroku”，https://jp.heroku.com/― 228 ―