座学と実験・実習のコラボレーションによるレゴマインドストーム NXT を用いた
低学年ソフトウェア教育
香川高等専門学校
１.まえがき近年，高度情報通信ネットワーク社会に対応するため，情報教育が盛んに行われている．実践的技術者を養成する高等専門学校において，プログラミング技術の習得は重要な要素の一つである．
従来のソフトウェア教育には，テキストをベースとした長時間コンピュータと向き合ったままの学習により，学習意欲が沸かず習熟度が低い学生が多いという問題があった．我々はこの問題に対し，プログラム教育において重要であるのは，低学年時におけるプログラミングへの苦手意識の排除と動機付けであると考え，プログラムの成果が見えやすい教材を利用し，さらに座学と実験・実習の授業の内容や進度について連携を取ることで，学生が楽しみながら学習し，かつ教員側は細やかな指導を行うことのできるソフトウェア教育を導入することを考える．
本論文では，このうち 2 年生を対象にした C 言語
プログラムに関する座学である情報処理Ⅰ，実験・実習である基礎工学実験・実習について，これら２つの講義をコラボレーションし，レゴマインドストーム NXT を用いた低学年ソフトウェア教育の枠組みを作ったので報告する．
２．従来のプログラミング教育の問題点と対策
２．１ プログラミング学習における問題
プログラミング技術の習得には，まず何よりも当該言語の文法を定着させる必要がある．プログラミ
ング言語は大部分の学生は初めて目にする言語であるため，学習内容に困惑し，学習の導入部分において躓いてしまう学生が多く見られる．このように授業の導入部分の授業内容を理解することができない
場合，プログラミングが嫌いになってしまい，ますます学習が進まなくなるというケースが多い．この問題は，授業項目においてプログラミング学習に対する動機付けを行う時間が不十分であり，学生がプログラミングに興味を持つことができないことが原因であると考えられる．また，演習問題で扱う計算問題や画面表示の問題では，得られる達成感が小さいため，プログラムに対する興味が沸かないことが原因であると考えられる．
２．２ 問題に対する対策
前節で述べた問題に対し，本学科では座学と実験・実習のコラボレーションによる C 言語の授業を行うことを考える．対象とするのは，通年の講義である C 言語に関する座学形式の情報処理Ⅰと実験形式の基礎工学実験・実習である．これらの科目にお○藤井宏行，三崎幸典，毛利千里，井上和孝いて，期待される効果を以下に示す．
① プログラム学習への動機付け
前節で述べた問題点の一つとして，演習の問題設定に興味がわかない場合があることを指摘した．多くの教育研究，実施報告で示されているとおり，知識を定着させるにはその手法を頻繁に使用することが重要である．これを実践するためには，学生が興味を持ち，すすんでプログラミングを行うよう，プログラミングの成果を直接見ることのできる教材を用いることを考える．本学科では，1 年次に工学導入教育としてレゴマインドストームを用いたロボットコンテストを行っている．この教材を C 言語学習にも利用することで，学生がプログラミングを行うことの楽しさを経験し，座学・実験共により熱心に取り組むことが期待される．
② 座学と実験実習の関連づけ
本講義においては，座学で学んだことをすぐに実験で実施することで知識の定着をはかる．また，実験・実習の進捗状況により，実験に必要不可欠な知識を学ばせる必要がある場合，その単元に関する座学の講義を前倒しして行うなど，柔軟な体制をとる．
これにより，低学年時に身につけておくべきプログラミング知識の習得に効果があると期待される．
③ プログラミングに慣れ親しむ
本講義の実施対象である２年生以降において，様々な課題に対してプログラム実験を行うことや，より高度な課題に取り組むためには，C 言語の知識はもちろんプログラミングへの“慣れ”が必要である．本講義においては，多くの実習課題を楽しみながら行うことで，このような効果が得られるものと期待される．
３

座学と連携した C 言語学習カリキュラムの導入
本講義では，学生が 1 年生で行った工学導入教育において利用経験のあるレゴマインドストーム NXTを用いた C 言語プログラム実験実習を行うこととした．前期の実習には簡易な実習課題を，後期にロボットコンテストを企画し，より実践的なプログラミング実習が行えるようにする．なお，レゴマインド
ストーム NXT 用の C 言語開発環境およびサンプルプ
ログラムは株式会社アフレル STAR シリーズ組み込みシステム開発実践コースを利用する．
３．１ 実習課題の設定
ここでは，前期を通して行う C 言語プログラミン
グ実習課題について説明する．課題は Step1～Step5の 5 段階からなる．

【連絡先】〒769-1192 香川県三豊市詫間町香田 551 香川高等専門学校 電子システム工学科
藤井宏行 TEL:0875-83-8559 e-mail：fujii@es.kagawa-nct.ac.jp【キーワード】レゴ，ロボット，ソフトウェア，実験，座学

Step1.
Step2.

1m 直進し，停止する．
タッチセンサを利用し，障害物への接触を検知して 30cm 後退する．
Step3.
サウンドセンサを利用し，手を叩く音を検知して停止する．
Step4.
超音波センサを利用し，障害物との距離を検知して接触することなく停止する．
Step5.
光センサを利用し，フィールド上の黒色の領域を検知し，その上に停止する．
本課題のうち Step1，Step2 の達成のためには，定められた距離を走行し，停止しなければならない．
そのため，モータを駆動する時間を細かく設定する必要がある．また，Step3～5 の達成のためには，各センサの値を検出し，閾値を設定し，ロボットを停止する必要がある．これらのことから，if 文や while文などの基本的な制御文を学習できると考えられる．
３．２ ロボットコンテストルールの制定
ここでは，後期に取り組むロボットコンテストを通した学習目標と詳細なルールについて説明する．
効率の良い学習を行うため，ルール設定にあたっては，コンテストの困難さがプログラム初心者にとって妥当であるかを事前に指導側が把握しておく必要がある．そこで，本学科 4 年生 2 名の電子工学セミナーにおける研究を通し，カーリングゲームのルールを制定し，検討を行った．
この課題は，NXT をカーリングのストーンに見立て，フィールド(図 1)に描かれた円の中心に近づけることを目標としたゲームである．ここでは，基礎的なプログラミングのみで達成できる個人競技と，学習した制御文等の応用が必要となる団体競技の２種類を用意する．まず，個人競技はスタートゾーンから NXT を動作させ円の中心に近いほど高得点を与える．これを一人三投行い，その総得点を競うルールとする．団体競技では，３人で１チームの対戦方式とする．個人競技と同様にスタートゾーンから一人一投ずつ交互に行う．フィールド内に停止したロボットの位置には水を入れたペットボトルを配置し，競技終了まで残しておくものとする．また，ロボットを使ってペットボトルを移動させることを許すものとする．最後の一人の NXT が停止した状態で，円の中心により近くにロボットを止められたチームに得点の権利を与え，円内に入っているロボットの数を得点とする．これを先後入れ替えて 2 回行い，総得点の高い方を勝者とする．
この課題は，アルゴリズムにセンサ入力による動作変更や，ある機能を任意の時間繰り返しを組み込むことが必要不可欠である．以上のことから受講学生
は if 文や for 文，while 文といった基本的な制御文をより詳細に学習できると考えられる．また，任意の場所への停止とペットボトルの運搬のように複数の機能が必要である．これを確実に実現するためには入念な動作確認が必要である．機能は各学生によって異なるため，テストは自分で計画しなければならず，自らテスト項目を設計できるようになる．

図１ カーリングゲームフィールド図
４．現在の講義状況と今後の課題
平成 23 年度より電子システム工学科 2 年生を対象に C 言語学習の座学として情報処理Ⅰを，実験・実習として基礎工学実験・実習を開講している．現在は，前述した実習課題を実施しており，図２に示すように実習課題を行っている．本講義では，前述の通り，一人一人の製作したロボットが異なるため，プログラムをコピーアンドペーストして課題を達成することは非常に困難である．そのため，互いにプログラムを教え合うことを許可している．このため
図３に示すように，自由な雰囲気のもと学生同士でアドバイスしあいながら積極的に実習を進めることができている．今年度は本講義実施初年度であり，講義内容に改善の余地は大きくある．今後は，学生へのアンケート，座学の成績を分析することでさらに効果の高いソフトウェア教育を目指していく．

図２

実習課題に取り組む学生(2 年生)

図３

基礎工学実験・実習の様子

参考文献
1)岡村健四郎ら：習得スキルに合わせた教材と個別指導を用いた C プログラミング教育の実践と評価, 高専教育,Vol．33， pp．467-472(2010)