事例46

実世界のデータを計測し、活用するプログラミング学習活動

~計測と制御を数値でつなぐことを理解し、創造的な「問題解決」へ応用する

愛知教育大学 鎌田敏之先生

世の中には、コンピュータが内蔵された機器や、コンピュータでの処理を前提としてデータを収集し、制御を行う装置やシステムが多々ありますが、その仕組みについて学ぶことはなかなか行われていません。今回紹介するのは、実世界とのインタラクションを行うコンピュータシステムを自らプログラムする活動を通して、情報技術と社会との関係を理解してもらうための教材です。具体的には、センサで感知したデータで装置の動きを制御するプログラムを作成する学習活動から始め、その延長として、身近な現象を対象にした課題を自ら立て、プログラミングによって解決することを狙います。

 

素材としては、比較的安価で使いやすいArduino互換マイコンボードとプログラミング言語ドリトルを使いました。これを、中学校技術の教員免許取得を目指す大学生で試行した実践結果をご紹介します。

データからの問題発見、具体的な解決策の提示まで経験できるプログラミング学習

この教材の開発研究に取り組んだ背景には、次期学習指導要領の改訂で、情報技術を活用した問題の発見・解決、つまりデータの活用と、情報社会と人間の関わりについての理解、さらにデータを根拠として話し合いを行う活動が求められてきていることがあります。

これまでの中学校「技術・家庭科」や高校「情報科」で行われてきたプログラミングでは、プログラムの作成自体が目的になっている場合が多いのですが、この教材では、生徒にとって身近な実世界のデータを計測し、それをプログラミングに取り込むことで、データからの問題発見、制御など具体的な解決策の提示まで経験することを目指しました。

 

さらに、こうしたセンサ部品そのものが見える状態の基板を手に取り、触れ、制御するプログラムを作成することを通して、学習者が身の回りにあるコンピュータが内蔵された機器やシステムに関心を持ち、情報技術が社会の中でどのように活かされているかに対し、意識が高まるかについての調査も試みました。

昨年度の前期(4月~8月)に、大学3年生の学生に対して行った授業では、15回の授業のうち、前半7回でドリトルのプログラミングを学んだ後、後半の8回を使って、左のスライドのような構成で行いました。

 

初回(第8回)で計測、2回目(9回)で制御の基礎を学び、3回目(10回)ではそれらを活用する具体例として、前半の5〜7回目で作成した、画面上でマウスクリックする形のゲームプログラム(ピンポンゲームとシューティングゲーム)を、基板に搭載されたボリュームとスイッチの値を計測し、画面内のキャラクタを移動させたり、シューティングゲームでは弾の発射を行ったりするように改変する学習を行いました。これは、数行のプログラムの改変で、マウス操作であったものが、物理的なゲームコントローラによる操作を実現できてしまう、という刺激を与える時間です。

 

その後、次の1時間(11回)では何を作るかをデザインし、残りの3回で実現まで教員の支援のもとで制作する、という形で実施しました。実際に中学校・高等学校で生徒を対象に授業を実施する際には、最終課題の部分はグループ制作が適切と考えます。

 

プログラムで計測と制御を結び付けるのは「数値」であることを理解する

私見では、これからの情報機器とプログラムの関係を指導する場面では、プログラムにとっては計測と制御、どちらもデジタル化された「数値」にすぎないという認識を重視すべきではないかと考えています。本教材の場合、プログラムが扱うアナログ値は0から255の間の整数、デジタル値では0または1の値となるのですが、計測と制御を結びつけるのは物理的な制約のない、抽象的な数値です。物理的に厳密な制御が必要な場面ではデジタル値を校正された値に読み替える必要がありますが、近年の情報機器、IoT機器の多くには、計測する対象と制御する対象の間の関係を自由に組み替えることで、一見魔法のようなことを実現しているものが見られます。これができるのは、コンピュータのプログラムは数値の処理を行うのみだからです。そこで、今回の試行実践でも、見た人に驚きを与えるような作品を構想させるように誘導していきました。

 

以下に、学生作品の例を2つ紹介します。

 

上の作品ですが、この学生は、作品制作の日に画用紙と水彩絵具を用意してきました。彼女はまず画用紙に水彩で花の絵を描き、次に紙の裏にカーボン入りのインクを筆につけ、花の中央部にあたるところから、紙の端まで筆で塗り、電気がきちんと流れているか、テスターで慎重に抵抗値を測定しながらインクの量を調整しました。そしてワニ口クリップつきケーブルで画用紙をはさみ、基板に接続したのです。紙の表と裏は、小さな穴を開け、銅箔で電気的につなぎました。片方の手に基板に接続したケーブルを持ち、もう一方の手で花の中心に触れると抵抗値の変化で音楽が流れる命令を実行するようになっています。4つの花は4つの異なる入力端子につながっており、それぞれ別のメロディが流れます。

 

下の作品は、息を吹きかけると、LEDの電球がまるでロウソクのように消えかかります。これは、基板に搭載されたマイクロフォンをセンサとしており、息を吹きかけるときのノイズを数値の大きさに置き換えて、LEDに与える電圧を制御しています。息の微妙な変化が明るさの変化と対応するようプログラムを調整することで、本物のロウソクに接しているかのような体験を提供しています。

 

いずれの作品も仕掛けは単純ですが、見た者、実際に体験した者に不思議な感覚を与えるものであり、こうした発想と、それを実現するためにセンサの値をよく観察し、印象を強めるためにプログラムの計算式を試行錯誤する過程を通して、計測と制御におけるプログラムの果たす役割について考察を深めた様子が、提出されたレポートの記述から伺うことができました。

 

自分でプログラミングを行うことで、実世界のシステムの仕組みに視野を広げる

コンピュータ制御された機器について、その内部を知るまでは「エアコンの冷房機能は室温が○℃以上になったらスイッチがONになり、○℃になったらOFFになる」のように想像していることが多いでしょう。しかし実際のエアコンは、室内と室外の温度と湿度をそれぞれ計測し、無駄のない制御ができるよう、気体の物理モデルに基いた精密な計算をプログラムによって行っています。一方、今回の試行実践は実用にはほど遠い、遊びに満ちたプログラム体験でしかありません。これが現実社会に存在し、人のために役立てられている、コンピュータ制御された装置の理解を手助けできるのか、という疑問が残ります。

 

そこで、学生に対して、受講前と受講後に同一質問の記述式によるアンケートを行いました。センサを搭載し、コンピュータ制御された装置にどのようなものがあるか、その仕組みについて段階的に説明させたところ、事前より事後の方が記述の内容が向上していることが明らかになりました。特に、事前では家電機器やスマートフォン、ゲーム機といった範囲の回答や漠然と「乗り物」のような回答にとどまっていた一方で、事後では自動ドア、防犯システムのように、社会に設置されたシステムの回答に大きく切り替わり、視野の拡大と、また仕組みの説明についても、情報技術に関わる語句を正確に用いた記述が増し、体験的な学習が、意識の変容に貢献していると判断しています。

 

今後は、学習過程のなかで、どのような体験が具体的なシステム理解につながる意識のどの部分に影響を与えているのか、定量的な測定を行うため、学習と並行した追跡調査を行いながら、認知形成の過程と構造を明らかにする手法について研究を深めていきたいと考えています。

 

※日本情報科教育学会第9回全国大会(2016年6月)研究発表より