事例257

情報Ⅰでのmicro:bitを使用したプログラミング実践報告

愛知県立小牧高校  井手広康先生

先日、今年度のプログラミングの授業が終わりました。今回は、micro:bitを1人1台使って授業実践を行いましたので、その報告をします。

 

既にご存知と思いますが、micro:bit(※1)はこちらのスライドのようなマイコンボードです。今年の授業で使うために40数台買おうとしたのですが、半導体不足のため品薄で価格が高騰しており、なかなか入手することができませんでした。本当に授業ができるのかとはらはらしましたが、夏頃に入荷したのですぐに購入し、何とか授業までに揃えることができました。

※1 https://microbit.org/ja/

 

 

私が入手したのは一つ前のV(バージョン)1.5ですが、現在はV2.2が出ています。V2からはスピーカーが内蔵されるようになったので、今から購入される先生がいらっしゃいましたら、V2のほうが断然よいと思います。

 

プログラミングはMicrosoftのMakeCode(※2)というエディタを使って、Scratchに似たブロック型の言語で進めていきます。

※2 https://makecode.microbit.org/?lang=ja

 

micro:bitを使って学校内の物の高さを測るプログラムを作る

こちらが授業の内容です。皆さんも「情報」の授業時間の捻出には本当に苦労されていると思いますが、私も考えに考えて、何とかプログラミングに8回の授業を捻出しました。

 

この8回のうち、1回目から6回目で、大学入試センターから公表された計3回の試作問題とサンプル問題に出ていたプログラミングの要素を全て学習しました。その後、7回目と8回目で「総合演習」を行いました。今回は、この総合演習を中心にお話しします。

 

この演習は、簡単に言うとmicro:bitを使って学校の中にある物の高さを測るプログラムを作る、というものです。高さを求める計算式には三角関数のtan(タンジェント)を使って、数学科との連携を兼ねて実施しました。

 

 

授業で扱う言語とDNCLを併記する形で、プログラムの手順を確認していく

こちらは授業プリントです。プログラミング言語の右側にDNCL(大学入試センター言語)を併記する形で授業を行いました。これは、昨年までのプログラミングの授業でも行ってきたことです。

 

初回の授業で、DNCLは共通テストで使う言語であることを説明しますが、このDNCLそのものを授業で取り扱ってはいません。英語の翻訳のような感じで、「この手順をDNCLで書くとこうなるから、適宜見比べながらプログラミングしていこう」というイメージです。

 

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

 

授業では私の説明はなるべく早く済ませるようにして、必ず「発展課題」を入れました。ペアや周りの生徒とで試行錯誤を重ね、もしエラーが起きたら、その原因はどこにあるのかを考えることを繰り返すことが重要であると思います。

 

また、今年度は毎回の授業で席替えをしてから授業に入っています。毎回違うメンバーと、わからないところを聞いたり教え合ったりすることで、異なる視点から知識・技能を身に付けることができると思っています。

 

 

こちらが4回目から6回目の授業で使用したプリントで、「繰り返し」と「配列」と「関数」の部分です。進め方は3回目までと同様です。

 

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

 

ここからがメインの活動である「総合演習」で使用したプリントです。

 

micro:bitには加速度センサーが付いていて、その中の「ピッチ」で角度を測ることができます。7回目の授業では、スライドの左にある2つのプログラムを作ります。早くできた生徒は、さらにアレンジして、ということにしました。

 

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

 

こちらがプログラムです。前のスライドの左下の部分にあたります。①はmicro:bitのAボタンを使って対象物に対する角度を計測するプログラム、②は対象物までの距離を測るプログラムです。

 

対象物までの距離の計測方法には「歩数」を使いました。人間の歩幅はおおよそ身長×0.45であることを利用し、まず自分の身長を入力して歩幅を求め、歩幅×歩数で距離を求めます。

 

1歩歩くごとにmicro:bitのBボタンをポチポチ押していった回数が、変数としてインクリメントされるようにしています。最後に歩数が確定したら、AとBのボタンを同時押しすると距離が計測される仕組みです。プログラム自体は非常にシンプルなものです。

 

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

 

角度を正確に測定するための計測ツールも作る

実際に距離を計測するために作ったのが、こちらの装置です。これにはちょっとした工作をしました。micro:bitを対象物に向けて角度(仰角)を測るのですが、手元がちょっとぶれるだけでかなり角度が変わってしまいます。

 

そこで、生徒らは小さいペットボトルを加工し、輪ゴムでmicro:bitを固定した計測ツールを作りました。ペットボトルの底の方からのぞいたときに、キャップの穴と対象物の上端が一直線に見えるような状態で測ると、ほぼ正確な角度を測ることができます。

 

 

その後、1人1台端末のタブレット(Surface Go)に入っているロイロノートで、測定しているところの写真を友達に撮ってもらいます。撮影した写真に、このスライドのような図形や数値を描画して、最後に提出するというところまで行いました。

 

 

8回目の実習の様子がこちらです。校内の木や渡り廊下、バスケットゴールなど、思い思いの好きなものの高さを測っていました。

 

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

 

生徒が感じるプログラミングの難易度や楽しさは、micro:bitも他の言語も特に差はない

最後に生徒のアンケート結果を紹介します。

 

生徒の小中学校のプログラム経験です。愛知県では中学校で90%以上の生徒がプログラミングを経験しています。小学校で20%というのは、ほぼ全てがScratchです。

 

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

 

「プログラミングの授業は楽しかったですか」いう率直な質問に対する回答です。

 

このグラフの見方です。2021年は、Python、JavaScript、VBAをそれぞれ2クラスずつ、Scratchを1クラスと別々のプログラム言語を変えて授業を行った上で、最後に「プログラミングの授業は楽しかったか」ということを聞いています。合計7クラス・280人で行い、「全体」というのが、280人全員の回答を合わせたものです。

 

一番右の赤い罫で囲んだところが今年の結果です。今年は全クラスmicro:bitで学びましたので、それを昨年と比較しました。私としては、「micro:bitの方が楽しかった」と言ってほしかったのですが、検定をかけても昨年の結果と有意差は表れませんでした。全体で9割以上の生徒が肯定的な意見だったのは非常に嬉しかったですが、もう少し「とても楽しかった」が増えてもよかったなと思っています。

 

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

 

「プログラミングに対してどのようなイメージを持っているか」ということも聞いてみました。プログラミングを実際にやってみて感じた難易度も、昨年ともほとんど変わっていません。検定でも有意差は出ませんでした。

 

ですから、例えば、micro:bitとPythonを比べても、「大変難しい」という生徒は一定数いて、micro:bitだから易しいと感じることはない、ということになります。私の授業のやり方もあるかもしれませんが、この結果は意外でした。

 

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

 

「プログラミングの授業は何回ぐらいが適当と思うか」ということについては、面白いことにばらつきが出ました。micro:bitについては、7~8回ぐらいが適当と答える生徒が多かったです。今回は8回の授業でしたので、大体それぐらいがちょうどよいと思っている生徒が多いことがわかります。

 

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

 

わかり易さに差が出るのは、言語の種類よりもテキスト型かブロック型かの違い

今回一番お話ししたかったのがこちら、「わかりやすかったプログラミング言語はどちらですか」という質問です。

 

先ほどもお話ししたように、私は全ての授業でプリントの左側に授業で使う言語、右側にDNCLを併記しています。去年も同じことを行っています。

 

大きく分けて、テキスト型とブロック型でかなり違いがあることがわかりました。PythonとDNCLのわかり易さとが半々というのが面白いですね。DNCLはPythonにかなり似ているので、わかり易さも同じくらいになったのでしょう。JavaScriptやVBAは、コードを書く量も多くなるので、「DNCLのほうがわかりやすい」という生徒が7割近くになっています。

 

一方、Scratchやmicro:bitといったブロック型言語では、「ブロック型がわかりやすい」という生徒が大半を占めています。これは、彼らが小・中でScratchを扱ってきたので、慣れているということもあると思います。

 

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

 

私は昨年、micro:bit以外の4つの言語で同じ内容の授業をして、最後にサンプル問題を解かせてみましたが、言語によって結果に有意差が出なかったので、「授業でどの言語を使っても差はない」と結論付けました。今回のこのデータを見る限り、恐らくmicro:bitでサンプル問題を解かせてみても結果は変わらなかったのではないかと思います。

 

ただ、共通テストの問題を解くことを考えると、DNCLをその場になって初めて見る、というのは良くないと思います。特にScratchやmicro:bitのようなブロック型言語を授業で扱う場合は、テキスト型の言語を使う場合よりも、先生方も意識してDNCLに慣れるための時間を取ることが必要ではないか、という印象を受けました。

 

[質疑応答]

Q1:

micro:bitは、MakeCode上で、PythonやJavaScriptでもコーディングができたかと思いますが、そちらは検討されていますか。

 

A1井手先生:

おっしゃるとおりです。授業を設計するときに、これも検討しました。結論から言うと、今年は時間の関係で断念しました。

 

ただ、この機能は非常に有効だと思ってます。というのは、最後のアンケートでもありましたが、生徒にとっては、ブロック型のプログラミング言語のほうがわかりやすいという結果になっています。これをいかにテキスト型につないでいくかというのは、今後大きな課題だと思っています。

 

小・中でテキスト型の言語を扱うという学校は、アンケートの結果ではありませんでした。しかし、高校はテキストプログラミングを使うことが多いので、いかにこの橋渡しをするか、ということが大きなポイントだと思います。

 

その意味で、MakeCodeは、ご指摘のようにブロックでプログラムを組んで、ポチッとやるとPythonに変換することができますし、逆もしかりです。ですので、ブロック型からテキスト型への橋渡しとして、MakeCodeは非常に有効であると思っていますので、今後活用していきたいと思っています。

 

 

Q2:

私は1学期にmicro:bitで楽しくプログラミングをやって、2学期はがっつりPythonを学ぶ、という想定で授業を行いました。生徒にアンケートを取ったときは、micro:bitとPythonのどちらが面白かったかと聞くのではなく、「年間の授業で特に面白いもの選んでね」という聞き方をしたのですが、micro:bitとPythonに差はありませんでした。

 

私自身、「micro:bitのほうが楽しい」と答えるのではないかと予想していましたが、実は生徒の中では、Pythonとそんなに大差がないということがわかりました。それを見て、自分の持って行き方が悪かったのかな、と思ったのですが、井手先生の学校でも同じような反応だったということは、もしかしたら生徒の中では実機を使うmicro:bitのほうがハードルが高かったりするのかな、と思ったりしました。井手先生の実感として、micro:bitをやったときと、Pythonをやったときで、生徒の反応はどんな感じだったかをうかがえたらと思います。

 

A2井手先生:

あくまで私の感想ですが、手元で動く分、micro:bitの方が反応が良く、楽しんでいる感はありました。これはScratchのときも同様で、PythonやVBAで何かやるよりは楽しんでいるな、という感じがありました。だから今回も、絶対「micro:bitのほうが楽しい」と思うだろうな、と予想していたら、先生がおっしゃるように、そうはならなかったです。

 

例えば、micro:bitとPython、あるいはScratchとPythonの両方を体験したら「micro:bitやScratchのほうが楽しい」という生徒はもっと多いと思います。ただ、一つの言語しか経験せず、その中で楽しかったかどうか聞くと、相対的に差が出なくなってしまうのもしれません。

これについては、来年さらにいろいろ改良を加えたいと思います。

 

Q2’:

ありがとうございます。Scratchについての反応がmicro:bitとかなり近かったとうかがったので、実機か、画面上かではなくて、ブロック型かテキスト型かということが問題なのかしれないですね。私も今後いろいろ考えたいと思いました。ありがとうございました。

 

 

Q3:

第1回から第8回の中で、生徒が一番苦労している場面はどこでしたか。また、その時どのようなフォローをされましたか。本校の生徒の場合、「配列」と「関数」の考え方がなかなか難しそうです。

 

A3井手先生:

思い返してみて、生徒が一番苦労していたのは、やはり「配列」です。「配列」を教えるということは、ほぼ必ず繰り返しが入ってきますので、「繰り返し」がまだわからない生徒にとっては、それもわからない上で「配列」までやるのはお手上げ、という状況になっている生徒が結構多いたので、「配列」の教え方は少し考える必要があるかと思います。

 

皆さんも同様と思いますが、これに追い打ちをかけているのが、今、コロナで欠席が非常に多いことです。ひどいときはもう、クラスで十数人欠席ということがざらにあって、前の授業の内容が全くわかっていない、というケースが非常に多かったです。なので、TT(ティーム・ティーチング)の先生や進んでいる生徒に助けを求めながら、何とか進めていった、という感じがします。そういった欠席者に対するケアも、今後工夫が必要であると思います。

 

神奈川県情報部会実践事例報告会2022オンライン ポスターセッションより