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

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

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

【コラム】小学2年生が抽象化を学ぶ意味

長かったように思えた連休もまもなく終わりですね。

学校生活にも慣れて、勉強意欲が増してくるこの時期に、探究型プログラミングのワークショップはいかがでしょうか?

 

小学校低学年向けの連続ワークショップを実施中です!

電子ブロックのlittleBitsやレゴブロックを使い、日常生活の中で問題解決に活かせるプログラミングの考え方を学びます。
親子で一緒に参加することで、家庭や学校生活の中で役立つプログラミング学習を体験して頂けますよ。

計4回のコースですが、1回からお気軽にご参加頂けます。
お申し込みはこちらから。

★変身する公園をつくろう(ポリモフィズム編) 6/2(日)

★探プロ★変身する公園を作ろう(プログラミングの考え方を学ぶ、ポリモフィズム編)★お土産付き★20190602 | Peatix

★街をつくろう(モジュール化編) 6/9(日)

★探プロ★街を作ろう!(プログラミングの考え方を学ぶ、モジュール化編)★お土産付き★20190609 | Peatix

アルゴリズム編 7/14(日)

★探プロ★littleBitsでプログラミングの考え方を学ぼう(アルゴリズム編)★お土産付き★20190714 | Peatix

マルチタスク編 7/21(日)

★探プロ★littleBitsでプログラミングの考え方を学ぼう(マルチタスク編)★お土産付き★20190721 | Peatix

 

==

さて。

今回からしばらくは、プログラミングの考え方というものを少しずつ掘り下げてみようと思います。

最初のテーマは「抽象化」です。

ちなみに抽象化の話は、6/9の「街をつくろう!」というワークショップでも登場します。

 

数あるプログラミングの考え方の中で、今回この「抽象化」をとりあげようと思ったのには理由があります。

こちらです。

f:id:dig_learning:20190505233607j:plain

娘(小2)が1年生のときからやっているZ会では、今年度から「みらい思考力」という新しいワークが始まりました。

「みらい思考力」は6つの力に分かれています。

・論理的判断力(きちんとかんがえる力)

・情報整理力(せいりする力)

・試行錯誤力(いろいろためす力)

・連想力(おもいつく力)

・注意力(よくみる力)

・推移力(みぬく力)

 全てではないのですが、このうちいくつかはプログラミング学習においても重視したい力が含まれています。

例えば4月号では、情報整理力を育成するコンテンツとしてまさに、抽象化が取り上げられていました。

国語や算数だけでなく、21世紀を生きる子供たちにはこうしたスキルが必要です。

2年生といえばかけ算・・と思っていましたが、抽象化を学ばせるこの教材には非常に刺激を受けました。

なぜなら、探プロでもこの「抽象化」の考え方はとても重要だと考えているからです。

 

抽象化といっても、難しい話ではないのです。

みなさんもよく知っている"仲間集め"と同じです。

タクシーとトラック、バスの共通点をみつけて、乗り物というグループをつくる、あれです。

 

対象が動物だったり乗り物だったりと、見た目は子ども用の教材に見えますが、この2年生向けテキストにはなんとベン図が登場します!

(わたしがベン図を学んだのは確か高校生だったと思いますが・・)

さらに、表に記載された〇×を見ながらベン図に情報を整理する問題などもあり、なかなか高度なことを要求するなと感心しました。

 

このBlogでは過去に何度か抽象化について書いています。

dig-learning.hatenablog.com

なぜ抽象化の話が重要なのかについてはそちらを読んで頂きたいのですが、抽象化の考え方をマスターするとどんな良いことがあるのか?

についてあらためて書いておきます。

それは

効率的にデータを扱う

ことができる、です。

全てのデータを手当たり次第に見ていくよりも、データを整理して範囲を絞り見るべきものを限定する方が、効率よく目的に近づくことができるのです。


読者である大人の皆さんは、普段の仕事や日常の中でこの「抽象化」という考え方をごくごく自然に使っていると思います。

逆に、抽象化できないと大変です。すごく手間と時間がかかるのです。

例えば10個のデータがあるとして、この10個を1つ1つ調べるよりも、5個と3個と2個のグループに分けられることに気づくことができれば、調べるのは3種類で済むわけです。

 

このグループ分けを間違えてしまうと、、、どうなるか想像つきますよね?

抽象化の考え方を使いこなせないと、プログラミングでも同じ問題がおきます。

 

すごく似ているけど少し違うプログラムAとBとCとDとEという5つのプログラムがあるとします。

全体の95%が同じで、残りの5%だけが違うプログラムだったとき、もし95%の部分を変更しなければならなくなったらどうしますか?

5つのプログラムを全て変更することになるのです。しかも、全て同じように手を加えることになります。

 

ここでもし、抽象化の考え方を取り入れるとどうなるでしょうか?

例えば、この5つのプログラムを1つのグループにまとめることができれば、同じ部分を共通機能として使いまわすことができます。

そうすれば、変更するプログラムは1つで済む、というわけです。

 

だから、プログラミングの世界でも、うまく抽象化できるかどうか、というのはとてもとても重要なことなのです。

モノゴトをうまく整理して、効率化するために必要な考え方なのです。

 

しかし、この抽象化の考え方を使いこなすにあたっては1つ、問題があります。

それは、グループに分ける方法は必ずしも1つとは限らない、ということです。

だからこそ面白くもあり、難しくもあるのですが・・・

 

どういうことなのか、次回に詳しく書いてみます。

@tanpro-lab