2020年から小学校教育で必修化されることになっているプログラミング。今なぜプログラミングが注目されているのかを、ものづくりイベントと同時開催したプログラミングワークショップを振り返りながら考察してみます。
プログラミングワークショップの3つの要素
前回のブログに書いたものづくりイベントの大枠が決まった後、イベントに新しい要素を加えようとして出た案が子ども向けのプログラミングワークショップでした。
前回のブログはこちらです。
まずは今の小学生の保護者がプログラミングに対してどう思っているのかを知ることから始めました。小学生のお子さんがいる知り合いを思い起こしながら連絡をとって聞いてみたところ、すでにプログラミング教室に子どもを通わせている、おおいに関心があるなど、想像していた以上にプログラミングの認知も関心も高いことがわかりました。いつの間にかプログラミング教室があちこちにできていて、子どもに習わせたい習い事ランキングでも上位に入っていることも知りました。
ニーズはあることがわかったので、プログラミングワークショップをやると決めました。具体的にどうやるかのカタチが決まるまでには結構な時間がかかりました。プログラミング環境として何を使うか?プログラミングで何をつくるか?プログラミングワークショップで何を経験してもらうか?の3つの要素を決める必要がありました。が、これらは相互に関連しているので、ひとつずつ考えていくのではなく全体を考えていく必要がありました。また、今回はものづくりイベントのひとつの要素の位置づけだったので、大人向けのものづくりイベントとどう整合させるかも合わせて考える必要がありました。
プログラミングワークショップの3つの要素
プログラミングワークショップの講師を引き受けてくれた人、ものづくりイベントの担当者とあーでもないこーでもないと議論した先にようやくカタチを決めることができました。
何を使ってプログラミングするか?
子ども向けのプログラミング環境は大きく2種類に分けられます。1つは、プログラミングのアウトプットがコンピュータ画面上で実行されるソフトウェアだけに閉じたものです。代表的な子ども向け環境にScratchがあります。もう1つは、プログラミングのアウトプットが現実世界で動くフィジカルコンピューティングと呼ばれるものです。代表的な子ども向け環境にIchigoJamがあります。
ものづくりイベントの方では、工作機械を使って精巧なカタチをつくり出すにとどまらず、フィジカルコンピューティングを使って今までにないものが生み出されることが予想できました。また、これからおこるとされている社会変化のキーワードであるIoTやロボットもフィジカルコンピューティングをベースにしています。さらに、前回開催したものづくりイベント時に私自身が初めてフィジカルコンピューティングを体験して、フィジカルコンピューティングの面白さを実感していました。そのことを書いたブログ記事はこちらになります。
こういった背景があって、プログラミングワークショップで使う環境はフィジカルコンピューテイング1択でした。ただし、実際にどの環境を使うかについては選択肢が複数あり、何をつくるかにも関わってくるので、すぐには決まりませんでした。
子ども向けのワークショップでは、特に、プログラミングの世界への入り口の提供やプログラミングの世界の理解が重要になります。プログラミングの世界の理解のためには、実際に自分の手を動かしてプログラミングをすることになります。プログラミングのそのものを覚えるのに時間をがかかったり難しかったりすると、そこでつまづいてしまって、プログラミングは難しいという印象だけが残ってしまいます。1回のワークショップでも、プログラミングに関して「できる」という体験が必要でした。コンピュータへの命令が視覚的なブロックで表現され、ブロックをマウスで操作して組み合せたり順番を入れ替えたりすることでプログラムが組めるビジュアルプログラミング環境が開発されていて、子ども向けではそれが主流になっています。プログラミングが「できる」体験のために、ビジュアルプログラミング環境であることは必須条件でした。
関係者で議論をする中で、ビジュアルプログラミング環境を備えたものとして、Studuinoはどうかという案も浮上しました。講師担当者が、「日本に上陸して間もないmicro:bitという教育用マイコンボードはどうか」とぽろりと口にしました。その場ですぐにmicro:bitの開発環境を立ち上げて画面上で動かしてみました。ソフトをインストールする必要もなくブラウザ上でプログラミングできる手軽さに加えて、マイコンボードがなくても画面上で動きを確認できて「これいいね」となりました。さらに、micro:bitの小さなマイコンボードには、加速度センサー、コンパス、光センサー、温度センサー、ボタンやLEDがあらかじめ搭載されていて、Bluetoothで通信する機能までついています。とっつきやすさのハードルは極めて低く、できることの可能性は極めて高く、関係者一同、自分自身がこれを使ってみたいと思ったことと、まだ日本ではワークショップであまり使われていない目新しさがあることが決め手となってmicro:bitを使うことに決まりました。
教育用マイコンボードのmicro:bit
micro:bitを使うことに決まった後、すぐにmicro:bitを購入しました。自宅にmicro:bitが届いた後は、仕事を終えて帰宅してから、実際に自分の手を動かしながらmicro:bitでつくることをあれこれ試しました。プログラムを組むことはもちろんのこと、組んだプログラムをmicro:bitに転送して単体で動かすことの動作などを自分の手で確かめながら、そのよく練られたインタフェースに感動したものでした。ビジュアルエディタでプログラムを組むことはコードを書くことに比べて10倍の取っ付きやすさを感じました。また、あらかじめセンサーが組み込まれていることで、Aruduinoを使ってブレッドボード上にハード的に配線することに比べて、心理的かつ物理的なハードルが10倍下がりました。要するにArduinoでのプログラミングに比べてmicro:bitは100倍簡単という感覚だったのです。それなのにできることの制約はそれほど感じませんでした。
プログラミングで何をつくるか?
プログラミングでは作ろうと思えば、様々なことができます。言うなれば、何をつくるかは無限の中から選ぶに近いことです。今回は、ミニチュア地方車と鳴子をつくるという大人向けのイベントとの整合性という制約があったことで、つくるものを考える範囲を絞り込めました。
フィジカルコンピューティングでは、現実世界でのカタチあるものと組み合せる必要があります。が、短時間のワークショップの中で物理的なカタチをつくることとプログラミングの両方を行うことはやめにして、すでにあるものとプログラミングを組み合せることにしました。ものづくりイベントとの整合性からして、組み合せる対象はミニチュア地方車か鳴子の選択肢がありました。
はじめは、大人がつくった地方車を子どもがプログラミングで動かすことを検討しました。かなりの重量になることが予想された地方車をモーターで動かす仕組みをつくるのが大変なこと、うまく動かなかった場合にアウトプットできたという達成感をもたせられない可能性があることなどから、この案はなしになりました。
残る選択肢の鳴子と組み合わせようかという話を始めた時に、プログラミング環境としてmicro:bit案が浮上して、鳴子は振る楽器であることとmicro:bitの加速度センサーの組み合わせで何かしらできそうだという方向性が見えてきました。
自宅でmicro:bitのプログラミング環境を試すと同時に、アウトプットをイメージしながらあれこれ動かしてみました。鳴子を振ったことを加速度センサーで検知することはすぐに決まりました。検知した結果、LEDを光らせることもほぼ決まりました。光るというアクションはわかりやすく、子どもの興味をひくと考えたからです。さらには、音が鳴る鳴子に光るという新しい価値を出せるプログラミングの世界を理解してもらえると考えたからです。
micro:bitには5×5のLEDがついていて、どのLEDを光らせるかを制御できるようになっています。25個のLEDがあるのだから、単に光るだけというより、何か意味のある内容を光で表現した方がいいと考えて、今回のイベントの主催者である高知県のコンセプトコピーである「高知家(こうちけ)」を表すことにしました。私達にとっても初めてのプログラミングワークショップ開催だったので、目の届く範囲として4人を募集しようと考えていました。「コ」「ウ」「チ」「ケ」の4文字が光るプログラムをそれぞれにつくってもらい、合作として「高知家」が表現できるようにすればいいなと考えました。実際に4文字を25個のLEDで表現してみましたが、「コ」のような単純な形は簡単でしたが、「ウ」と「チ」と「ケ」は簡単にはできずに試行錯誤しました。プログラミングの良いところは何度でもやり直しができて試行錯誤できる点にあるので、この難しさはワークショップで試行錯誤するのにちょうどいいなと思いました。
micro:bitをPCから切り離して単体で動作させるためには電源が必要になります。micro:bitと同時に購入したコイン電池を電源として動かせる電源ボードにはスピーカーがついていて、音が出せることがわかりました。今回のものづくりイベントのテーマが「よさこい祭り」だったので、よさこいのメロディを鳴らせるかを試してみたところ、ちゃんとメロディが鳴りました。メロディを奏でるには1音ずつの音の高さと長さを組み合せることになります。また、LEDを光らせることと音楽の組み合わせとも合わせて、プログラムは単純なことの組み合わせで複雑なことをできることの理解にもつながると考えて、メロディを奏でることもアウトプットにしました。
プログラミングで何を経験するか?
何を使って、何をつくるかが決まればプログラミングワークショップができるというわけではありません。プログラミングをやってみて、何かが動けばその時は楽しいと思うでしょう。楽しかっただけで終わらせず、それを作る意味を理解してからつくること、つくったものに対するフィードバックを受けること、プログラミングでこんなこともできるんだと可能性を感じてもらうことを目指して、ワークショップの組み立てを行いました。
[つくる意味の理解]
つくる意味を理解してもらうために、プログラミングの対象となる鳴子そのものについて理解してもらうプロセスを入れました。よさこい祭りの動画を見てもらい、そもそも鳴子が何をするものかを知ってもらいました。また、子ども達にも鳴子を振る体験をしてもらい、鳴子を振るという動作を身体的に理解してもらいました。
[つくったものに対するフィードバックを受ける]
つくったものを誰かに見せるという場面をつくることで、きちんとアウトプットする必要性がある状況をつくりました。つくったものに対するフィードバックを受けることはつくることの基本でもあり喜びでもあります。
[プログラミングの可能性を感じる]
短時間のプログラミングワークショップでできることは限られています。プログラミングの可能性を感じてもらうためには、プログラミングの作例を見せるのが一番です。今回は同時開催のものづくりイベントで、フィジカルコンピューティングを利用して大人でも驚くようなアウトプットが生み出される可能性がありました。ならば、そのアウトプットを見てもらわない手はありません。プログラミングワークショップをやると決めた時、子どもと大人の発表を合同にすることも同時に決めました。さらに、同じ会場内でものづくりが行われている過程を見てもらうまたとない機会を逃すわけにはいきません。どうやってつくっているのか、つくっている大人達がどれほど真剣かつ楽しくものづくりしているのかを見ることは、アウトプットだけを知ることに比べて何倍も深い体験になるだろうということは容易に想像できました。
子どもたちの反応は?
私達にとっても初めて開催するプログラミングワークショップでした。提示する資料にはすべてふりがなをふり、使う言葉も難しくないものを意識して選びと、大人向けとはまた違う部分に気をつける必要がありました。あーでもないこーでもないと議論を重ねてあれこれ手探りで進めて、期待と不安の入り混じる気持ちで当日を迎えました。募集人数の4人を超えた6人の子ども達が応募してくれたので、LEDで光らせる2文字をあわてて追加で考えるという嬉しい誤算もありました。
考えられるだけの準備をして臨んだプログラミングワークショップは、ガラス超しに見える隣りの空間で大人達のものづくりが佳境に入るのとは対照的に、子ども達の緊張が感じられる空気の中で始まりました。2年生~4年生の6人の小学生は全員がプログラミング初心者でした。緊張がゆるんで雰囲気が和らいだのは、みんなで鳴子を振ってみる段になった時でした。
そして、空気が一変したのが、今日使うコンピュータのmicro:bitでどんなことができるかを講師がデモした時でした。1個のmicro:bitをリモコンとして使い、もう1個のmicro:bitはリモコンからの通信を受信してモーターを動かして車を進ませたり、左右に曲がったりするデモでした。子ども達のプログラミングへの好奇心がぐんと高まったようでした。その様子がこちらです。
この好奇心が高まった状態で、プログラミング環境の使い方を説明した後に、自分でLEDを光らせてみようとなった時は、やってみたくてうずうずしていた気持ちの堰が切れたかのように、どの子も真剣な眼差しで画面を見つめてマウスをすいすい動かしていました。micro:bitのLEDが光ることを確認した時は「おーっ」という喚声があがりました。ここでいったん休憩をとることにしましたが、文字を次々と変えて光らせることに取り組んでいる子どももいました。
子ども達にLEDを光らせてどの文字を表示するかを選んでもらいました。自分が選んだ文字が浮き上がるように、点灯するLEDの位置を画面上で選ぶことに集中して取り組んでいました。できなかった場合のことを考えてカンペも用意していましたが、必要になることはありませんでした。LEDで文字をつくった子どもは早く次に進みたいと、講師が説明をする前に音を鳴らすプログラムを組み始めました。よさこいのメロディに関しては、1音ずつの音の高さと長さを書いた手引きをつくって渡し、それをもとにプログラミングしてもらいました。
よさこいのメロディの手引き
想定していた半分以下の時間で、全員が予定していたプログラムを組み終えてしまいました。その後は、ネジ留めしてmicro:bitを鳴子と合体させて、全員で並んで発表の練習をしました。
今回のプログラミングワークショプでは、講師の他に若いお兄さん2人がサポーターとして参加してくれました。もし、子どもがプログラミングで行き詰まっていたらサポートしてもらうことにしていましたが、プログラミング時の出番はありませんでした。大人のサポートを必要としないくらいに子ども達だけでプログラムを組むことができました。サポーターのお兄さん達は、プログラミングの場面ではなく、場所の移動時や発表時のかけ声などでのサポートで活躍してくれました。
子ども達がプログラミングワークショップでつくった作品
大人のものづくりワークショップも制作時間が終わり、大人も子どもも全員揃っての発表の時間になりました。大勢の大人が見守る中で、6人の子ども達はものおじせずに鳴子を振ってプログラミングの成果を発表してくれました。大人達から喚声と拍手を浴びて、達成感を感じてくれたことと思います。
その後は、大人がつくったアウトプットの発表を最前列でかぶりつきで見ていました。どれもがプログラミングが組み込まれた動きのある作品で、子ども達は思わず立ち上がったり、覗き込むようにして発表に見入っていました。プログラミングでできることの可能性をおおいに感じてくれたに違いありません。大人も子どもに語りかけるように発表してくれて、大人と子どもの合同発表はとてもよい雰囲気になりました。
大人のものづくりイベントとプログラミングワークショップの様子の動画はこちらです。
今なぜプログラミングなのか?
プログラミングワークショップは思った以上に子どもの飲み込みが早くて時間が余るというハプニングはありましたが、大きなトラブルもなく終えることができました。プログラミングの面白さにはまって帰宅してから話がとまらなかったという話や、その後にmicro:bitを購入して親子で楽しんでいるという話も聞きました。数時間というわずかな時間でのワークショップでしたが、プログラミングへの入り口を提供できたようで、とても嬉しく思っています。
私達にとっても初挑戦となった子ども向けプログラミングワークショップをやってみて、今なぜプログラミングなのかがわかった気がします。
プログラミングは簡単な機能を組み合せて複雑な機能を実現します。つまり、大きなタスクを実現するためには小さなタスクに分けて、小さなタスクの順序や関係を明らかにしてから、それをプログラミングで組んでいきます。これは、プログラミングに限らず、何かを実行しようとする時の考え方や手順としても使えるスキルになります。
プログラミングでは、一度で正解にたどりつく必要はなく、何度でもやり直しができます。だから、熟考を重ねる前にまずやってみて、その結果をもとに軌道修正をかけていくというやり方が結果として正解にたどりつく近道だったりします。これもプログラミングに限らず、今の時代に普遍的に通用する考え方になります。
今や生活の中のあらゆるところにプログラミングが入りこんでいます。プログラミングを全く知らなければ、それらがどういう仕組みや原理で動いているかを想像することができません。少しでもプログラミングを知っていれば、自分で同じプログラムを組むことができなくてもおおよその原理を理解することができます。また、プログラミングをした経験があれば、プログラミングでどんなことができて、どんなことはできないのかも感覚的にわかります。これからますますIoTやロボット、さらにはAIが社会に実装されてきても、不必要に怯えることなく、人間にしかできない領域で力を発揮していこうと思えるはずです。
要するに、プログラミングは現代社会を生きていくために必要な力を身につける恰好の手段と言えるわけです。もちろんこれはプログラミングを学ぶ重要な理由ではありますが、プログラミングの最も重要な点は子ども達の好奇心をかきたてることにあるのではないでしょうか。自分が組んだプログラムが現実の世界での動きになって見えるフィジカルコンピューティングでは、好奇心への働きかけはより大きくなると言えます。
プログラミングの対象を現実世界の仕組みとリンクさせることで、関心をもって仕組みを理解することができるようになります。言葉で説明されて仕組みを理解するのと、自分でプログラムすることを通じて理解するのとでは、理解の深さも対象への関心の深さも大きく違ってくるでしょう。
プログラミングは表現手段のひとつでもあります。プログラミングという表現の手段が増えることで、できることの世界は確実に広がるはずです。
今、なぜプログラミングなのか、その答えを教えてくれたのはプログラミングワークショップに参加してくれた子ども達でした。役に立つことよりも好奇心をかきたてられることに子どもは正直に反応します。教科内容の理解にプログラミングへの関心をうまく利用することで、プログラミング的思考力と教科内容の理解の両方を育むことができる、いわゆる生産性の高い教育ができるようになるというのが、今なぜプログラミングなのかに対する私の答えです。