探究型プログラミング学習(探プロ)

プログラミングの考え方を学んで、未来を創る力を手に入れる

プログラミングの考え方を学んで未来を創る力を手に入れる

【レポート】お手伝いをしよう!アルゴリズム編 2019.07.14

小学校低学年向けとしてリニューアルした探プロのワークショップ。

4回コースがぐるりと一周したので、再び第1回のアルゴリズム編に戻ってきました。

前回の様子はこちら。

 朝からあいにくの天気でしたが、小学生(5年生、3年生、2年生)とその保護者が元気に集まってくれました。

 

三連休ということもあって人数が少なめだったので、じっくり向き合って対話しながら進めました。

そして、普段は後ろの席で見守ってもらうだけの保護者にも、今回は隣で一緒に体験してもらいましたよ。

 

保護者と一緒に子どもたちが体験するのはメリットもあればデメリットもあり・・・

判断に迷うところなのですが、今回はとても良い雰囲気でできたと思います。

子どもが大人に教えたり、大人の習得の速さに子どもが刺激を受けたり。

ご協力いただいた参加者の皆さんに感謝します!

 

今回のテーマはアルゴリズムでした。

f:id:dig_learning:20190714234308p:plain

最初に、歯磨きを例にしてアルゴリズムのメリットを伝えます。

皆さんは普段、歯磨きの手順を守っていますか?

いつも同じようにできていますか?

TVを観ながら、新聞を読みながら・・・

あれ、どこまで磨いたっけ?ということはありませんか??

 

そんな適当な(!)人間とは違って、歯みがきを指導する歯磨きロボットは、完璧に仕上げることができます。

f:id:dig_learning:20190714234510p:plain

さて、それはなぜでしょう?

ロボットすなわちコンピュータは、アルゴリズムの考え方を知っているおかげで

いつも

なんどやっても

かならず

同じけっかがでる

 のです。

 

今回お伝えしたアルゴリズムは、順次構造と分岐構造、それから繰返し構造といった基本の3つです。

初めてlittleBitsを使う皆さんと一緒に、実際にプログラミングをしながらアルゴリズムの考え方を学びました。

 

littleBitsを使うのは初めて!

という方ばかりでしたが、意外にさくさくと進んでいくので、途中でいろいろな小ネタを挟みながら、ブロックを増やしながらお伝えしました。

 

そして最後にチャレンジしてもらったのがこちら。

f:id:dig_learning:20190714234954p:plain

Forkという名前のブロックを使って、2つの命令を分岐させるプログラムを作ってもらいます。

この課題を出した途端、場が混乱状態になるのはいつものことです。

先ほどまでの順調さとは打って変わって、皆が苦労していたので、あらためて、なぜだろう?と考えてみました。

 

どうやら、複雑なものを目の前にすると、人間は無意識のうちに、難しいものと捉えて複雑なまま理解しようとしてしまうようです。

そうすると、ブロックを外したりつけたり、途端に手元がおぼつかなくなってしまいます。

つい先ほどまでは、ブロックの役割やアルゴリズムの考え方を使ってプログラミングができていたにも関わらず、です。

 

こういうときほど、基本に立ち返る必要があります。

プログラムは、命令の集まりであり、その組み合わせにすぎません。

 

この例であれば、2つのプログラムを「分岐」というアルゴリズムの考え方を使ってつなげているだけです。

だから、複雑なものを目の前にしたら、まずは分解してみることをお勧めします。

最小単位のブロックまで分解できれば、1つ1つは単なる「命令」です。

それを、動かしたい内容に合わせて、順番とルールに従って組み合わせていくだけです。

 

作っている途中は難しくても、出来上がったプログラムを前にすると

なんだ、こんなに簡単なことだったのか

と気づくとと思います。

littleBitsはプログラミング教材でもなんでもありませんが、こうやって、手と頭を使って考え方の基本的なところを習得できるところが良いなぁ、とあらためて感じました。

 

アルゴリズムの考え方と、その良さを理解できたところで最後にゲームをしました。

名付けて

はやわざ せんたくゲーム!

 

前回は口頭で伝えることしかできなかったのですが、今回はワークとして実際に考えてもらう時間をとりました。

f:id:dig_learning:20190715000020p:plain

とっても良い天気のある日。

これから家族で出かけることになったのですが、おうちの人から、洗濯物を急いで干して!とお手伝いをお願いされました。

とっても急いでいて、あと5分で出かけるのだそうです。

のんびり干していては間に合いません。

どうすれば、早く干すことができるでしょうか?

 

あーでもない、こーでもない、と小学生同士で考えます。

あと5分?じゃあ帰ってからにしようかな、という弱気な発言もありましたが(笑)

そんな中、最年少の女の子が、テキパキと洗濯物を捌きはじめ、しまいにはお兄ちゃんに手を動かすよう指示まで出していました(笑)

 

当たり前ですが、このゲームには答えなんてありません。

どんなやり方だって構わないのです。

ただ自分自身の頭と手を使って、さっき習ったばかりのアルゴリズムの考え方を使うにはどうすればいいか?

ということを必死に考えることに意味があります。

 

2020年度からは、全ての公立小学校でプログラミングの授業が始まります。

どんな授業になるかは各学校次第なのですが、アルゴリズムの考え方を学ぶ機会もあると思います。

ただ、そこで学ぶのは恐らく、

同じプログラムを10回書くよりも、10回繰り返す、というプログラムを書く方が労力が少なくて良い

といった話ではないかと想像しています。

これは、正解のある話の1つです。

学校で教えられるのは、恐らくこのレベルではないかと思います。

 

確かにそうですし、間違っていないのですが、私が伝えたいのはそこではありません。

同じ作業を繰り返すことができると、バラバラにやっていたときに比べて効率UPすることができます。

そして、そのために重要なことは

同じものをまとめる

ということなのです。

 

どういうことでしょうか?

先ほどの洗濯ものの例でいえば、タオルと靴下を、同じものと捉えるのか、別のものと捉えるのか

それは、"干し方が同じ"かどうかで変わってくる、ということに気づけるかどうかということです。

 

大人はこれを無意識のうちにやっていますが、実はとても難しいことです。

洗濯物は分かりやすい例ですが、普段の仕事や家事の中で私たちはどれほど意識できているでしょうか?

同じであることに気づかないまま、ムダに動いていることは意外とあるのではないでしょうか?

違う仕事だと思っていたAとBが実は同じものである、ということは、けっこうあるんですよ。

 

探プロでは、プログラミングの考え方をプログラミングだけに活かすのではなく、日常生活や社会の問題解決に活かすことを目指しています。

今日学んだ考え方を、家族みんなで使って、家の中や学校で活かしてくれたら嬉しいです。

 

さて、次回はお弁当をつくろう!というワークショップを予定しています。

 

テーマは「マルチタスク」です。

子どもたちだけでなく、大人も知っておくと、仕事のできる人!になれますよ。

まだ席に余裕がありますので、お誘い合わせの上ぜひ、お越しください。

 

ではまた!

@tanpro-lab