プログラミング学習を通じて伝えたい街づくりの本質とは何か?
前回に書いたように、探究型プログラミング学習では現実社会における本質をプログラミングによって捉えることを目指しています。
それが具体的にどういうことか?について、先日やった街づくりのワークショップを例にして説明します。
はじめに、「まち」には「町」と「街」の2種類があって、ここで対象としているのは市町村の一つの単位や一区画をあらわす「町」ではなく、人や建物が集まるところという概念として捉える「街」であることをお断りしておきます。
私は、「街」の本質とは
個の組み合わせによって大きくて複雑なものができていること
と
その中には何らかの「順序」が存在すること
だと捉えています。
街にはどんなもの(要素)があるか?
例えば小学校や幼稚園、消防署や図書館
ゲームセンターや映画館、東京タワーや温泉、スーパーや商店街、バスや電車・・・
などなどです。
ちなみに、先日のワークショップの冒頭に、子どもたちが会場へ来るまでに街の中で目にしたものを発表してもらったところ
なぜか自動販売機が最多でした。
次に、踏切、電車、お寺などなど。
そういった要素が集まって、例えば工場エリア、観光エリア、公共施設エリアなどがあって、エリアが集まって一つの街となる
というように、個の組み合わせてグループにして、さらにそのグループを繋げて1つの大きなグループを作る
と考えていきます。
ワークショップでは、まず自分の作りたい作品を考え、4人グループの中でテーマを決めて各自の作品を組み合わせて小さな街をつくり、最後に4つのグループの街を繋げて大きな街をつくりました。
街づくりのワークショップでは、この本質を「モジュール化」というプログラミングの概念で捉えています。
「モジュール化」とは、簡単にいうとプログラムを意味のある単位でまとめたもの、です。
各自の作品を「モジュール」と捉え、モジュールの組み合わせがすなわち各自の作品を繋げることと、という意味合いで使っています。
一般的に子ども向けのプログラミング学習において、「モジュール化」の概念を伝えることはほぼないと思います。
なぜなら、子どもが個人で作る範囲においては、自分の動かしたい形に合わせてプログラムのコードを書き連ねていけばよいので、プログラムを意味のある単位でまとめようという発想がそもそもないですし
すごく大きなプログラムを作って、そのメンテナンス性の悪さに気づいて初めてその重要性が分かるもの、なのだと思います。
一方で、私たち大人が携わっているシステム開発の現場では「モジュール化」の概念が必須です。
一人でプログラムを作りきることはほぼなく、誰かの作ったプログラムと組み合わせて使うことが常だからです。
独りよがりのプログラマーが調和を乱す開発現場を何度か見てきた経験もあって、モノづくりにおいては他者とのコラボレーションの意識が非常に重要だと私は考えています。
だから、プログラムを塊として捉えることや、それらを組み合わせること、そしてそれによって大きなプログラムを作ることができること、を是非とも知っておいてほしいし
それがプログラミングだけでなく日常や、他のシーンにおいても役に立つ概念であるということに気づいてほしいと期待しています。
この辺は、21世紀型スキルのWays of working(チーム活動)の修得にも関わるところで、個人単位のプログラミング学習ではなかなか修得できないスキルの範囲であり
21世紀型スキルの網羅的な修得を目指す探究型プログラミング学習の大きな特徴となっています。
そしてこの個と全体、の考え方は、その逆(全体を個に分ける)をする上でも役立つということや、個を組み合わせるときの繋ぎ方(インタフェース)の重要性
それから、本質の2つ目に書いた「順序」についても、この後1つずつ説明をしていきます。