卒業研究のご紹介
2022年版

情報系所属学生

プログラミング教育を目的としたコーディングシーケンス共有システムの開発と活用

爲近 瑛太神奈川県
情報学部情報工学科
2022年3月卒業
神奈川県立麻生総合高等学校出身

研究の目的

問題と解答例からなる一般的なプログラミング学習だけではプログラミング熟練者のようなプログラムを記述することは困難です。プログラムの記述過程にはバグの直し方やクラスや関数を記述する順番など様々な情報があります。しかし解答例である完成したプログラムにはそのような情報は残りません。そこで、この書き方を学ぶことを目的に、コーディング時の打鍵情報を簡単に記録、再生、共有をするシステムを開発し、他の学生のものも含めた様々な記述過程を視聴していただく実験を行いました。

研究内容や成果等

■ はじめに

一般的な授業で行われるプログラミング教育だけでは、プログラミング熟練者のようなコーディングスキルを身につけることは困難である。
主な理由として、デバッガやformatterなど開発環境に含まれるコーディングに関わる機能の使用など、実技にかかわる部分を授業の評価対象にすることが難しいことが挙げられる。
開発環境に注目すると、熟練者は、IDE(統合開発環境)の補完機能やformatter、linter、デバッガなど各種ツールを駆使して開発を行う。一方、一般的なプログラミング教育では、言語の文法についての学習が主である。
そのため、それに付随するツールについての説明は少ない。
これらを踏まえてこれまでの先行研究では、コーディングを録画、再生するシステムを開発し、熟練者のコーディングを観察し、そのノウハウを簡単に学べるシステムの改善を継続的に進めてきた。
本研究では、安定性向上のため実装方法を改め、録画データをネット経由で簡単に共有できるシステムを開発した。熟練者のコーディングの様子を観察するだけでなく、学生同士でのコーディングの観察が、プログラミングスキル向上に寄与するか評価実験により判断することを目的とした。

図1 システム構成図

■ システム概要

システム構成図を図1に示す。システムの再生画面を図2に示す。システムの検索画面を図3に示す。本システムは、エディタの内部バッファの情報を時系列情報と共に記録、再生することができるシステムである。
本システムの利点として、動画を再生するような操作感でコーディングの様子を再生できることや、動画と比べてデータのサイズが小さいこと、再生途中のソースコードをコピーすることができ、自分の環境で実際に動かしてみるなどが可能なことがあげられる。

図 2 動作画面例1再生画面

図3 動作画面例2検索画面

■ 実験

2021年12月から週1回3週に渡り、神奈川工科大学の「JAVA言語Ⅱ」を履修している学生を対象に、コーディングの録画と共有を行い、アンケートを実施した。初回の実験では5分間本システムを使い実際に当日の演習の中で使用する問題を1問練習で録画した。2回目は、10分間、当日の演習の中で使用する問題を1問録画した。3回目は録画した学生の中から優秀と思われる学生の録画を視聴してもらいアンケートに答えてもらった。
優秀だと考えるコーディングシーケンスデータは、①工夫が見られること、②ミスが少ないことを目安に選定した。

■ 結果

3回目のアンケートのうち「プログラミングを行う目的」を図4に、「他者のコーディングの観察はプログラミング学習に役立つか」という質問の回答を図5に示す。

図4 プログラミング活動

図5 本システムの学習効果について

■ 考察とまとめ

図4より、授業課題でプログラムを書く人が44 人いる。これはアンケートの回答数と一致するため、全員が授業課題でプログラムを書いていることがわかる。また、それ以外の活動に注目すると、授業プロジェクトや趣味でプログラムを書いている人が2割いることがわかった。
図5より「とてもそう思う」、「ややそう思う」を合わせると、学習効果があると考えるものは93%であった。また、その理由について以下の回答を得た。
  • 他人のプログラミング手順を見ることで自分が行うときとの比較をし、効率の良い手順を考えられる。
  • 完成したコードを見るより動画の方が処理を追いやすい気がした。
  • 自分が課題を解いた方法とは別の方法で同じ処理ができることがわかった。
このような結果から、学生同士がコーディングの様子を共有することでも、コーディングに対する気づきを得ることが可能であることがわかった。
反対に「あまりそうは思わない」と答えた理由については、以下の回答を得た。
  • 動画を見るだけでは役に立つのは難しいと思った。プログラムの入力者がどういう理由でプログラムの記述をしたのかがわかれば学びやすくなると感じた。
このような回答から、単に動画を見るだけではコードを書いた人の意図を想像して見る必要があり意図を伝えるのが難しいことがわかった。
今後の課題として意図を伝えるため、再生時に教員による解説を加えることや、コメント機能を開発し、視聴者への質問に記録者が答えられる環境を作るなどの工夫をあわせて行う必要があることがわかった。
指導教員からのコメント 対話型システム研究室教授 納富 一宏
近年、プログラミング教育への関心が高まっています。プログラマなどIT技術者を目指す場合、実践的なプログラミング教育が必要となります。一般的なプログラミング教育では、プログラミング言語の文法知識や基本的なアルゴリズムの表現方法を中心に学びますが、これまではプログラミング時の操作やプログラムの記述過程の記録・評価が困難であり、完成されたソースプログラムのみを用いた評価が中心でした。この研究では、プログラム作成(コーディング)の操作過程をすべて記録し、その記録データを用いて編集操作を再現する技術を開発しています。これによりプログラミングの様子を観察・分析したり、他人との情報共有によりプログラミングについて議論したりすることができるようになります。アクティブラーニングや反転授業と呼ばれる教育への応用や、ソフトウェア開発におけるコードレビューやペアプログラミングという開発への応用などが期待されます。
卒業研究学生からの一言 爲近 瑛太

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

私が成長できたと思うことは「文章作成能力」です。私は卒業研究をする前までは3000字程度のレポートしか書いたことがなかったので数多くの文字を書くことにより長文の文章作成能力をかなり伸ばすことができました。

未来の卒研生(高校生)へのメッセージ

大学では様々なことが経験できる機会があります。 100名近い学生の中で発表をすること、他の大学の学生たちと協力してスマホアプリの作成、学会発表など。 恐れないで手を挙げてみたり、1、2年次から研究室に遊びに行ってみたり、少し勇気を出してみると普段はできないことが経験できます。何に対しても積極的に挑戦してください。