事例230

専門科目「情報学基礎」におけるRaspberry Pi 実習の取組

京都市立西京高校 中村央志先生

ご本人提供
ご本人提供

私は西京高校で数学科と情報科を担当し、ここ何年かは情報科を担当しています。本校では、専門科目として「情報学基礎」を置いており、現在はこれが「情報」Ⅰの代替科目です。今回のRaspberry Piの発表に関しては、全高情研のライトニング動画(※)をご覧になってからお読みいただきたいと思います。

 

https://www.youtube.com/watch?v=H1_PT-HoM48

 

「情報学基礎」の内容

 

本校の「情報学基礎」という授業の内容の抜粋が下図です。「情報の定義」は、東京大学名誉教授の西垣通先生の「基礎情報学」の内容を行っています。ここでは、「情報というのは主観的なもので、そのまま相手には伝えられない」ということを確認しています。

 

最近、ピクトグラムやピクトグラミングなどを使ったデザイン系の授業が盛んですが、個人ごと、あるいは国や民族などによって色の見方や感じ方が異なりますので、そういったことを前提に授業をされてるのかな、ということを心配しています。

 

プレゼンテーションの実習では、自分の主張を適切に相手に伝えるという経験をさせています。

 

11月頃からプログラミングを行います。本校ではScratch、ExcelのVBA、そしてフィジカルコンピューピングとして今回紹介するRaspberry Piを扱っています。Raspberry Piについては1コマ(2時間)で紹介をするという形で取り組んでいます。

 

本実習の目的はライトニング動画で紹介したとおり、モノとデバイスをプログラミングで制御することを通して、世の中のモノがどのように動いているか、ということに関する基本的な視点を養いたいということです。基板の配線の様子や本体の起動については、ライトニング動画で紹介しておりますので、そちらをご覧ください。

 

 

中学校技術科「計測と制御」の学習内容がきちんと習得されていない懸念

 

内容に入る前に、新入生のプログラミング教育の現状として、今年の新入生にどのようなことを習ってきているかということについてアンケートを行いました。

 

本校は、内部進学生が3クラス、約120名、外部進学生が約160名程度います。

 

内部進学生に関しては、外部団体が学校に来て、センサカーを用いたプログラミングの授業を行っており、中学校技術科の「計測と制御」に当たる部分を学んでいますが、外部進学生については多くの生徒が「習った」と回答していません。

 

 

下図がその内訳です。外部進学生151名のうち、「プログラミングを習った」と答えた生徒は76名、半分しかいないということです。

 

さらに、センサカーなどのいわゆる車やロボットに触ったという人はその半分。そしてmicro:bitに至っては2%程度という状況でした。

 

ただ、センサカーやロボット、micro:bitについては、テキスト解答からの抽出なので、実際はもう少し多いかもしれませんが、それでも半分は超えないという回答結果となっています。

 

 

この結果から見えてくることとして、一つは、生徒がそもそも学んだことを覚えていない、ということが考えられます。これは、いわゆる体験型の授業でよくあることですが、生徒が訳もわからないまま手続きだけを体験するという活動だったため、記憶に残っていないということが考えられます。

 

また、「プログラミングを習った」と答えた生徒が50%程度で、これは技術科の授業で適切に行われていない可能性がある、と考えています。「計測と制御」を習ったと答えた生徒は、さらにその半分程度ですので、高校できちんと押さえとかないと、今後「計測と制御」に関して経験する機会がないのではないかと危惧しています。

 

 

この結果から、「情報Ⅰ」のプログラミング教育の状況としては、生徒が高校入学までに学んだ状況というのはかなり差がある、あるいは習っていない生徒もいるかもしれないということです。ですので、それを踏まえた授業内容の検討が必要で、現段階では、高度な内容を授業で扱うのはなかなか難しいのではないかと考えています。

 

ただ、今後生徒の状況を見ていかなければならないのは、2020年から小学校のプログラミング教育が始まっているので、今後は小中学校でmicro:bitなどを触ったことがある人が増えるかもしれません。また、新課程の中学校技術科教科書を使うのは現在の中学校2年生からなので、教科書が変わったタイミングとなる2年後ぐらいからは、また状況が変わって来るかもしれません。

 

 

ブレッドボードに配線してLEDを光らせることで、生徒自身が五感で感じ取れるプログラミングを目指す

 

本実習の動機は、先ほどセンサカーやロボットの話をしましたが、これらはロボットなど別の何かが黒い線の有無や明るさといった情報を受け取って、そのセンサの値を制御に利用するというプログラミングが大多数です。

 

このRaspberry Piの実習では、生徒の実感を得るためにも、生徒自身が五感で感じ取れるような取り組みにしたい、ということが本実習の動機になります。

 

 

実際に授業の様子をご紹介します。デバイスについては動画でお見せしたとおりで、このように配線のための部品がいろいろあります。

 

実習の流れとしては、1クラス40人を、1つの班を4人程度、10班に分けます。

 

班のメンバーを、本体担当と基盤担当の2つの担当に分けて、それぞれの担当にマニュアルを渡しておきます。ワークシートは別途全員に配っておきます。

 

 

本体担当は、Raspberry Piの本体を起動してログインします。基盤担当は、ブレッドボードにLEDを差して光らせる配線の準備をします。そして、両方の準備ができたらブレッドボードを本体に接続してスイッチを押して、色がつくかを確認します。

 

 

LEDが光ると、生徒が非常に盛り上がります。ここがフィジカルコンピューティングの醍醐味といった感じで、生徒もとても楽しそうです。

 

こちらが本体マニュアルの抜粋で、Raspberry Piを起動したりログインしたり、という手順が示してあります。

 

最初は、意図的に文字列で入力して入るようにさせて、「それはCUI(Character User Interface)環境といいます」といったことを説明しましたが、今年使っている教科書には、CUIや GUIについて記載がないので、今年の実習ではどうしようかな、と考えています。

 

※クリックすると拡大します。

 

基板のマニュアルについては完成の配線図が示されていて、生徒はこの通りに配線して組み立てていきます。

 

※クリックすると拡大します。

 

その後、実際の回路図を見せます。3つのスイッチのそれぞれを押すと、赤、緑、青のいずれかのLEDが点くことを示してあります。ここは、小学校3年の理科の豆電球のところや、中学2年の理科の電気回路といった既習事項と対応させて、理解させています。

 

※クリックすると拡大します。

 

3つのLEDのON/OFFとデジタル情報の対応付け

 

スイッチを押してLEDが点灯することを確認したところで、今度は「情報Ⅰ」との対応になります。

 

ワークシートの表に、スイッチを押す→「1」と記入します。これは電気が流れる(教科書では「5Vの電圧が流れる」とされています)ことを表します。スイッチを押さない→電気が流れない場合は「0」という形で、スイッチのON・OFFと1・0の対応付け、さらに光の三原色を加えて対応させる、ということを行います。

 

さらに、スイッチの1・0を左から3つくっつけて2進数で表し、それを10進数で表すとどうなるか、ということも行って、数値と文字の表現も併せて考えさせます。

 

※クリックすると拡大します。

 

先ほどのワークシートの答えが下図です。

 

3つのスイッチを全て押すと、LEDの色は白になります。2進数でいえば、111で、これを10進数に変換すると7になります青、緑、赤には表のようにスイッチが対応しているので、3のスイッチだけ押すと青が光り、2のスイッチだけ押せば緑が光ります。

 

そして3のスイッチ=青を押すと、2進数では「001」、それを10進数に変換すると「1」ということになります。同様に、緑はどうなるか、赤がどうなるか…を数字と結び付けることを行います。

 

 

スイッチの制御で、LEDがどのように点灯するかがわかったら、今度はScratchでプログラムの制御に変えていきます。

 

本体担当は、startx というLINUXのコマンドを入れてRaspberry Piのグラフィック環境を立ち上げて、Scratchのプログラムを起動します。

 

基板担当は、Scratchのプログラムによる制御に変えるための配線を3本追加します。そして両方の準備ができたらScratchのプログラムを実行します。

 

 

こちらのスライドのように、Scratchのネコが「green」と言うと、実際にLEDも緑が点灯する、というものです。配線を3本追加することで、それぞれのケーブルで電気を流す、ということをプログラムが行います。

 

※クリックすると拡大します。

 

「スイッチを押せば電気が流れる」→「プログラムによって電気の流れが制御される」の置き換え

 

ここで、「スイッチを押せば電気が流れる」から「プログラムによって電気の流れが制御される」という形に変わるところが重要なポイントになります。

 

「プログラムが動いた。光っている、すごい!」だけで終わらせず、プログラムのアルゴリズムをきちんと理解するように、実際にどのようなプログラムであるか、ワークシートを通して理解させます。

まずは、電気を流すのに出力と入力があることを確認し、プログラムに基づいてフローチャートを書いてみよう、というワークシートの問に取り組みます。

 

※クリックすると拡大します。

 

プログラムについては、赤丸でくくったところを、LEDの点灯パターンを1から7の乱数にします。これは、先ほどのチェックポイント1でボタンを押す数に対応しています。LEDの点灯パターンで「1」が乱数で出てきたら、赤と緑は出力しないけれど青は出力することで青が点灯します。パターンが「2」であれば緑だけ出すので緑が光るということになっています。さらに1.5秒ごとに、それを繰り返し続けるというプログラムになっています。

 

※クリックすると拡大します。

 

このようにして、1から7までは何色が点灯するかというパターンはわかっていますので、次に、そのうちのいくつかについてわざとブロックを消して未完成の状態にしておいてます。実行すると、ここでは7色光るはずなのに、光らない、という状態ですね。これをチェックポイント1の結果を使って修正します。

 

プログラムに詳しい生徒は、3つのピンのON・OFFと、乱数の場合分けで0,1,2ってあるし、8通りあるんやろと思ってみたら、なんか欠けてた場合があるぞ、という気づき方をする生徒もいるのですが、いずれかの方法によって、未完成のプログラムを完成させる、ということを行っています。これは、できない班があるのではないか、と思っていましたら、どの班も結構しっかり考えられて安心しました。このように、皆でワークシートと回路とプログラムをにらめっこしながら作業を進めていく感じで行いました。

 

※クリックすると拡大します。

 

フィジカルコンピューティングの良さを実感する

 

その後、どのように電気が制御されるかというアルゴリズムが理解できて、全部の色が点くようになったタイミングで、もう1つスイッチを追加します。

 

このスイッチは、長押しするとフルカラーのLEDが点灯しなくなります。プログラムの左側のように、このスイッチを押されているときは、いわゆる、「high」の状態になり、そのときはLEDのパターンは

「0」となって電気が流れないことになり、LEDが点かなくなるという状況になることを確認させます。

 

スイッチによって、点いた点かなくなったりする状況が生まれるということを確認したところで、それをセンサに差し替えさせます。

 

※クリックすると拡大します。

 

※クリックすると拡大します。

 

そうすると、センサを差した瞬間にLEDが点かなくなります。このとき、どのような物理現象がスイッチとして機能していると思うか、ということをクイズ形式で考えさせます。

 

この答えは照度センサです。明るいと抵抗が小さいので「high」の状態になる、つまり、先ほどお話ししたスイッチの長押しと同じ状態ということです。部屋が明るい状態のときは、乱数とLEDの点灯を実行されませんが、暗くなると抵抗が大きくなってスイッチを押した状態になる、ということを考えさせます。

 

このようにして、実際に教室を暗くするとLEDが光る、ということを実際に確かめます。プログラムがわかっている生徒は、もともと1.5秒待ってLEDが光る設定になっているのを、0.5秒待つように変えたりしています。そうすると、点灯が非常に早くなります。うまくできない班はサポートに入って、センサによってLEDのON/OFFがうまくできるようにしています。

 

※クリックすると拡大します。

 

教室を暗くして照度センサの働きを確認した後で伝えているのは、自分たちの身の回りには、照度センサ以外にもたくさんのセンサとプログラムが動いている、という事実をしっかり理解してほしいということです。

 

今回の発表で一番お伝えしたいのは、プログラムによるモノとデバイスの制御がどのようなことなのかをきちんと実感させたい、ということです。ですから、暗くなったり、スイッチを押したり、といったいろいろなことによってプログラムが制御されていることを、五感を通してしっかり感じ取るということを大事にしています。

 

こういった活動を通して、自動ドアやスマホ画面の自動回転、鉄道の自動改札など、様々なデバイスがプログラムと連携して動いていることが生徒たちに伝えられ、理解してもらえることが重要であると思います。

 

 

自動化の裏でプログラミングが動いていることを実感する

 

授業後のアンケートを見ると、生徒たちはよく考えていて、難易度としてはそれほど難しくないと感じていることがわかります。

 

 

生徒の感想がこちらです。

 

「プログラミングが社会の中でどのように用いられているかを考えるための非常に良い経験になりました」という意見があって、私はこれが嬉しかったです。プログラミングが、私たちが暮らす社会とごく密接に関わっているという事実を理解してほしいと思っていましたので、良かったなと思います。

 

また、「Raspberry Piの実習として一つひとつの自動化の裏には人の手、つまりプログラムがあるということを知って感動した」という感想もあり、やって良かったと感じています。

 

 

本実習の課題です。回路図は「ラズパイマガジン」を参考にしましたが、元の回路図ではトランジスタを実装しています。トランジスタを実装すると、配線があまりにも増えるので諦めましたが、電気スイッチ、電子スイッチを半導体として紹介しても面白いと思います。

 

また、今回はセンサの値で抵抗値が変わることを使いましたが、本来はアナログで処理しているものをデジタルに変換してプログラムで処理する、という方法もよいかと思っています。しかし、どちらも回路が非常に複雑になるので行っていません。

 

あと、Raspberry Pi本体が10台しかないので、協働学習とのバランスということもありますが、1人1台あればコンピュータの仕組みやレジスタ、メモリといった他の分野にも応用できるのではないかと思っています。

 

 

この実習を情報Ⅱに接続することを考えると、Raspberry PiはシングルボードコンピュータというOSが動く、つまりmicro:bitやArduinoのようなマイコンではないので、OSが動きさえすればwebサーバも動きますし、データベースサーバも一緒に動きます。

 

ですから、あるセンサで取ったデータをデータベースに格納し、サーバにグラフで表示するページを作成し、自分のスマホで確認できる、といったことができれば面白いと思います。

 

 

本発表のまとめです。プログラミングは、新入生全員が経験したとは言えない現状です。数年後は変わるだろうと思いますが、状況に注視していただければと思います。

 

また、過去に理科で学習した内容と連携したり、うまくやれば高校の物理ともつなげたりすることができるかな、と思います。

 

そして、モノやデバイスを用いたプログラミングは、生徒の五感に触れることでより理解を深めることを実感しています。これからの時代を担う生徒にとっては、非常に重要な取り組みであると考えています。

 

 

[質疑応答]

 

Q1.LEDの制御はとても面白い実践でした。プログラムによる、物とデバイスの制御についての生徒の学びは、生徒のどのような学習活動を基に評価されるのでしょうか。

 

A1.中村先生

今回の授業の取り組みは、こういった「制御がされていることに対する良さ」ということをしっかり実感してほしいっていうところを狙っているのですが、実際にやらせている内容は、光の3原色を1・0で表現したり、今回は紹介しませんでしたが、電気はどうやって流れているか、ということをブレットボードを画面に出して線をつないで考えたりしています。

 

評価に関しては、実際に光の3原色や配線をテストで出題するとか、今回やったワークシートの中から一部をテストに出題して理解度を見る、という形を取っています。

 

 

Q2.先生の授業は、生徒が五感で感じて学習できるような授業を大切にしていると感じました。そのような五感を刺激するような授業を実践するために、今回の実践事例以外にも何か工夫していらっしゃることがあれば教えてください。

 

A2.中村先生

最近行ったのは、情報モラル授業で、最近よく話題になる『身バレ』の話題です。ツィートの中に表

示されている写真から個人が特定される、というのがありますが、実際に学校の近くの写真を撮って、

「いくつかのツィートを並べたときに、どんな人がこれを発信してると思いますか」と問いかけてみました。学校の近くの写真を撮ったら「きっと西京高校生かもしれない」とか、バスケットのスタジアムの辺りを撮ったら「バスケ部の人かもしれない」とか。「この日に遠足に行った」というのであれば、「遠足に行った学校ならここだね。こうやって重ねていくと特定の誰かが決まるよね」といったことを皆で一緒に考えていく、というものです。

 

このように、具体的な状況を生徒に設定してやると、「私も同じことをやってるかもしれない」と言う生徒も出てきます。ですので、できるだけ生徒の状況に合わせた具体例を出すように心掛けています。

 

 

Q3.仮に1人1台のRaspberry Piがあったら、この授業をどのように変えますか。

 

A3.中村先生

時間が無限にあるという前提でお話しすると、生徒、一人ひとりがもう1回、全部違う言語でやるという方法もいいと思います。例えば,C言語であれば,どのピンに電気を流すかどうかをレジスタの0,1の並びを変更すれば、一瞬で制御できます。

 

ブロックプログラミングでも、そういったことのローレベルの制御について理解させることはできますが、時間がないので行っていません。

 

あるいは、先ほども言ったように、Raspberry Piを他のものにつないでいくことも面白いと思います。サーバでもそうですし、データベースサーバに入れてみるでもいいですし、グラフに表してみることもできますね。

 

それであれば、PythonやC言語を使った取り組みも考えられるかなと思います。デバイスを直接制御できるところがRaspberry Piの良さなので、Arduinoやmicro:bitとは、そこが一線を画すところだと思っています。

 

第15回全国高等学校情報教育研究会全国大会(オンライン大会) 分科会発表より