プログラミング的思考って何?

プログラミング

身近なレゴブロックを例にプログラミング的思考について考えてみました。

小学校プログラミング教育の目的についてはこちらで解説しています。

小学校でのプログラミング教育が始まるなかで、プログラミング的思考がどのようなものかについて、親御さんに何となくでも理解してもらえたら嬉しいです。

レゴブロックとプログラミング的思考

私の娘さんもレゴブロックで遊ぶのが好きで「レゴで家を作りたい」と言ってきます。最初は私が作ってあげていたのですが、今は組み立ての説明書を見て一緒にやっています。

少し強引にプログラミング的思考と紐づけるとしたら、「家を作りたい」という目的は、説明書の手順を踏むことで達成できるということが分かります(本人はまだ全く分かってないと思いますが…)。

家を作るためには土台となるブロックを配置して、それを繰り返していくことになります。このプロセスはプログラミングでいうところの「順次処理」や「反復処理」を意味しますので、プログラミング的な思考が含まれます。

プログラミング的思考能力の向上

さらにプログラミング的思考の向上に踏み込むとなると、ちょっとハードルが高くなりそうです。

先程の「レゴで家を作りたい」という目的に対するプログラミング的思考能力のひとつのゴールとしては、「組み立ての説明書を自分で作れること」になるかと思います。

ただし、「レゴで家を作りたい」→「家を作るには組み立ての説明書が必要」→???となって、それ以上の答えが見つからなくなってしまうかもしれません。これは目的に対する課題の分解ができなくなっている状態です。そのような場合に大人はどうするのかというと、過去の知識や経験から解決策を導く、または、有識者に聞くことで答えを出していくと思います。

プログラミング的思考ができる人は、目的に対して必要な課題を自分の消化できるかたちまで分解できます。「目的を実現するためにはこれをやらないといけなくて、それをやるためにはさらに別の課題を解決できないと、、」といった具合です。

これは日常生活では普通のことで、プログラミング的思考というITに限った話ではありません。ですので、課題に対する取り組み方を訓練することが、プログラミング的思考の向上と繋がるように理解しています。小学校の教育でどこまでのレベルが求められるのかはわかりませんが、ちょっとでもこのことに気づいてもらうことが重要なのかもしれません。

課題の分解と前提条件の整理

では、「レゴで家を作る」ための説明書を作るにはどういった考え方が必要になるでしょうか。

自分の場合は、まずは以下のように課題を分解します。 この分解の仕方だけが正解ということはありませんので、あくまで私個人の方法とご理解ください。

レゴで家を作るために、それぞれの特性を理解していないといけません。 レゴで遊ぶときは意識していないと思いますが、無意識に認識している内容を意識化をしてあげる必要があります。

レゴの特性の理解すること

  • 1ブロックは1メートルx1メートルの立方体と想定する
  • ブロックをブロックの上に積み上げられる
  • ブロックを配置するには他のブロックと接している必要がある

家の構造を理解すること

  • 玄関がある
  • 窓がある
  • 床がある
  • 壁がある
  • 天井がある
  • 屋根がある
  • 床は家の一番下にある
  • 床の上に玄関、窓、壁がある
  • 壁の上に天井がある
  • 天井の上に屋根がある

細かくしたらキリがないのでこのくらいにしましょうか。

最初の段階として、家の一番下となる床をブロックでどう作るかに着目できたら、 レゴの特性も家の特性も分かっていることになりますよね。 小さい子には、まずは身近にあるもモノやコトを分解させてみるのもいいのかなと思います。

組み立ての流れ

レゴの特性上、基本的には下からブロックを積み上げていきますので、家を作成するためには、

  • 床をつくる
  • 窓、玄関、壁をつくる
  • 天井をつくる
  • 屋根をつくる

という順番でブロックを組み立てる必要があります。 実際のブロックを使わなくても説明書を作ることはできると思うのですが、 経験がないと小さい子には想像もできない思いますので、 実際に手を動かして試行錯誤してもらう方が理解は断然早そうです。

組み立て

まず、床をつくる工程では、どんなブロックを使ってどのくらいの大きさにするかを決めます。 単純な四角形とするのか、より複雑なかたちにするのかを考えます。

さらにその上に窓、玄関、壁をつくります。 ここでも窓や玄関の大きさなどを想定する必要があります。 レゴを使う場合は、何個のブロックで表現するかを考えます。 この工程は必要な高さになるまで繰り返し行います。 高さが1ブロック(1メートル)では、大人が生活できない家になりますので、 高さも考える必要があります。

さらに天井とその上に屋根をつくります。 屋根もフラットにするのか、三角屋根にするのかなどを考えます。

この手順をまとめたものが組み立ての説明書になります。が、、これだけでも相当大変です。 最初から説明書はできませんので、まずは試行錯誤を繰り返して、ブロックの積み方やアンチパターン(例えば、玄関や窓がない家など)を学んで行く必要があります。 これこそがプログラミング的思考を経験できる場になるのかなと思います。

まとめ

今回はレゴブロックを例にプログラミング的思考を結びつけて説明してみました。ブロックも知育玩具のひとつですが、他の知育玩具も少なからずプログラミング的思考に結びつく内容が盛り込まれていると思います。

ブロックは理屈抜きで楽しく遊べる玩具だと思いますが、ふとした時にあまり意識していないところに目を向けて見るのも良いのかなと思いました。

というわけで、ウチは引き続きレゴで一緒に遊びたいと思います。

コメント

タイトルとURLをコピーしました