【授業事例15】

普通教科情報におけるプログラミング学習カリキュラムの開発

~ArduinoによるフィジカルコンピューティングとiBook AutherによるiPadデジタルテキストの活用

京都光華中学校/高等学校 竹中章勝先生


竹中章勝先生
竹中章勝先生

プログラミングの学習と聞くだけで、学習前から生徒から「難しそう」という感想が聞かれます。授業を行う側の教員からさえ、「プログラミングは敷居が高そう」という意見を聞くことも多いです。


確かにC言語やBASIC言語等の文字ベースのプログラミング学習は、1文字でも書式と違うコードを書けば、エラーとなって意図した動きをしないことが多く、またそのミスも発見しづらいこともあり「難しい」というイメージを持ってしまいがちです。また、同時に学ぶアルゴリズムについても難しい・わからないというイメージを持ちやすい。実際に生徒アンケートを行ったところ、中学までに何らかのプログラミングの授業を受けているものの、言われたとおりに入力して動作を確認しただけでよくわからなかった、という回答が多いのも事実です。


しかし、少なくとも私の情報の授業の中では、生徒の目は次第に生き生きとしたものに変化していきますし、「考えること」が楽しいと感じて欲しいと思いながら日々授業を進めています。

 

プログラミングとフィジカルコンピューティングを題材にして

この10年の間、「情報A」の授業で「論理的思考力の育成・情報の科学的理解」を進めるためにプログラミングとフィジカルコンピューティングを題材に授業実践を行ってきました。フィジカルコンピューティングとは、コンピュータをもっと身体的なもの=人間の行動やフィジカルに寄り添ったものにすることで、人間とコンピュータの意思疎通を図るというようなことです。そのためにグラフィカルな結果が出るプログラムや台車型ロボット、さらにプログラミング言語で記述し電子部品を制御するArduinoを活用した授業を行うと同時に、タブレットを用いた自作のデジタルテキストを使った授業を実践してきました。その内容について報告したいと思います。

 

(1)物語を作るようにプログラムを作ろう

~e-toysを使ったシミュレーション、台車型ロボットの実践

squeak e-toysは、比較的簡単に扱えるグラフィカルなプログラム環境です。このソフトを用いて、順次・繰り返し・条件分岐の3要素について段階を追って学習を進めてきました。タイル型のコマンドを用いて、画面上に図形を描いたり、オブジェクトを自動制御したりすることでプログラミングを学習した生徒たちはほぼ全員、自力で課題プログラミングを完成させることができました。

私はプログラミングを難しく考えるのでなく、「物語を考えるようにプログラムを作ろう」と常に言っています。たとえば、ここに青い川がある。車が川に落ちないようにするには、センサーが青を感知すれば止まるようにしたい。そこでプログラムを組む前に、生徒に青・赤・黄の信号のプログラムのフローチャートを考えさせます。もし信号が青なら(Trueなら)進む、赤なら(Folse)止まる、という感じで条件分岐を入れるわけです。


ある生徒が「あ、間違えた!」って言うので、私が見たら、なんとネストをしているのです。ネストというのは、複数の命令群をひとまとまりの単位にくくりこんだ入れ子構造のプログラムの構成法です。私は、その時点でネストのことは何にも教えてなかったのに、その生徒は信号のパターンのプログラムを考える中で、自分で簡単にネストを発見したのです。これなども、プログラムを作るというのは頭の中に物語を作るような感覚が大切し、論理的に構成する力がついて行くことを示す例だと思います。

 

他にもこのような課題を提示します。「柵の中に馬がいます。馬が柵の中をぐるぐる歩きながら、しかし柵から出ないようにせよ」というプログラムです。生徒は、「川の前で反転させるだけからそんなの簡単だ」と言ってプログラムを始めます。生徒たちが一通り作成し終えたタイミングで、私は「同じ動きばかりしていては動物らしくないでしょ」と声をかけます。生徒たちが興味を示してきたら、生きものらしく動かせるために乱数について教え、さらに乱数に興味を示したらランダムシードのことを教える。そうやって生徒たちはどんどん「構成すること」に興味を持って乗ってきます。コードの書き方への興味ではないのです。


同様にして、台車型ロボットを用いたフィジカルコンピューティングの実習では、生徒たちはシミュレーションと違って実世界でロボットを動かすために、センサーの重要性を実感していきます。

(2)Arduinoによるフィジカルコンピューティング

Arduinoはイタリアで開発されたC言語的な言語環境を備えたシステムです。コンピュータの入出力ポートに電子部品を接続することで、LEDを点滅させたりするプログラムを作成して制御を行うことができ、よりコンピュータの動きを体験することができます。コンピュータは0と1で動いていることは頭ではみんな知っていますが、なぜそうなっているか、なかなかわからない。それでこういうものを使ってわからせたいと思ったのです。


また光センサーの値を読み取り、光をさえぎるとLEDが点灯するプログラムを生徒自身が作成しました。それによって、暗くなると自動的に点灯する照明の仕組みを体験することができました。


(3)プログラミングが目的ではない、論理的に考える頭を作ることが目的

~デジタルテキストを作成して

近年「デジタルテキスト」や「タブレットの教育利用」が進んできていますが、指導者用デジタルテキストが多く、学習者用のデジタルテキストはまだそう多く出回っていません。そこでArduinoを用いた実習テキストを作成してみました。タブレット端末にはiPadを導入し、iBook authorを利用しました。利点は次のとおりです。


・カラー画像やイラストを多く掲載できる
・動画資料を掲載できる
・インターネット上のコンテンツにリンクを貼ることで、簡便に外部資料を活用できる
・改訂作業が比較的簡単にでき、授業を経た後のフィードバックが容易である
ということです。


さらに電子黒板での全体説明と個々の学習速度にあわせて学べるデジタルテキストを用いることで、生徒たちは、私の板書どおりに書き写すのでなく、関連することをどんどんメモしたり、ブロック化して記述するというふうに変わってきました。

プログラミン学習で、ものの見方が変わってくる?!

私は、プログラミング学習とは、プログラミングすることを通して、思考内容をブロック化し論理的に物事をつなげるような思考を作ることが目的と思っています。頭の中に「メタファー(暗喩・隠喩)」を持つということです。それも教科書だけの世界でなく、自分の日常生活の中からメタファーを持てるようになってほしいですね。授業を終えた後の感想文に「今までにない脳内分泌物が出てくる感じがする」と書いた生徒がいました。


何かわかる気がしませんか? その子はこれまで覚えることを中心に学習してきた。それが自分で動作原理を考えることで、暗くなると自動的に点灯する照明とか手をかざすだけで水が出る蛇口とか、今までは当たり前だったものの制御が気になるようになる。そういうふうに、情報の授業を受けることで、生徒の考え方が変わってきたと感じてくれることが一番うれしいですね。

 

※本記事は、全国高等学校情報教育研究会 第6回全国大会(2013年8月9日・10日、京都大学にて)でお話しされた内容です。