街づくりのもう1つの本質からアルゴリズムを学ぶ
街づくりの本質2つめとして、今回は
その中には何らかの「順序」が存在すること
を書いてみます。
前回は街を構成している個(要素)について考えたわけですが
個と個はそれぞれ、何らかの関係性をもっていると捉えます。
たとえば、電車と線路と踏み切り、そして踏み切りをまたいでいる道路、その上を走る車やバス、そして信号機・・・
こう書けば、どんな繋がりをもっているかは説明するまでもないと思います。
遠隔で繋がっている例としては
不審者が侵入→家(のセンサーが反応して警備会社へ連絡)→警備会社(から警察へ連絡)→パトカー(が出動)
のような繋がりや
工場(でお弁当を作る)→トラック(で店舗に運ぶ)→店(に並ぶ)
など、です。
こうした繋がりとやその中にある順番のことを、探究型プログラミング学習ではアルゴリズムと呼んでいます。
※ちなみに子ども向けには、
アルゴリズムとは、プログラム(=命令の集まり)の順番
と説明しています。
アルゴリズムを考えるときにも、まず個から考えて、次に個と個の繋がりを考えて、といった段取りで少しずつスケールを広げていきます。
たとえば、踏切を個と捉えれば、電車との関係を前提に踏切のアルゴリズムをまず考えます。
ちなみに、この部分をさらに掘り下げていけば、モノの仕組みを知る学習に繋げていくことができると考えていて、将来的にはそんな流れが作れたら良いなぁ、という野望もあります。
そして、踏切と電車、道路を走る車、信号機などとの関係を1つずつ組み合わせていき
それぞれがどういった順番(アルゴリズム)で動いているのかを捉えていきます。
街づくりのワークショップにおいて、この
その中には何らかの「順序」が存在すること
を学ぶ過程には2つの学習ポイントがあります。
1つは、個と個を繋いで大きな街をつくる、という流れに沿って、アルゴリズム自体も、組み合わせることによってより大きく複雑になっていく
ということを知るということ。
つまり、シンプルなアルゴリズムを組み合わせていけば、大きくて複雑なアルゴリズムが作れるということです。
(逆にみれば、大きくて複雑なものでも、個に分けていけばシンプルなものとなる)
もう1つは、個と個を繋ぐとき、その繋ぎ方は予め決めておく必要があるということです。
たとえば踏切の例でいえば、電車が近づいて、②で運転士に遮断機がおりたことを知らせるわけですが
このときの知らせ方として、信号を使うのか、無線を使うのか、など選択肢がいくつかあるのであれば、どの手段を使うのか予め決めておかなければいけません。
そうしないと、例えば無線で連絡する踏切なのに電車が無線に対応していない、という事態に成りかねないからです。
littleBitsを使うワークショップでは、自分の作品と他の子の作品を繋ぐ場面で同じ問題が起きます。
いざ繋ごうとしたときに、お互いの作品(回路)の一部を壊さなければいけない体験を通じて、はじめに繋ぎ方を決めておくべきだった
ということを失敗を通じて学習することを期待しています。
さて、前回までの解説をまとめると、街づくりの学習プログラムでは以下のプログラミング概念を学習しているということになります。
- 2進数、プログラム(アイスブレイク~大人を命令しよう~)
- アルゴリズム
-
モジュール化
- インタフェース(繋がり方を決める)
こうしたプログラミングの概念が、実は現実社会においても適用できるし、実際にされているということや
こうした学習は必ずしもパソコンを使わなくてもできるということが、少しでも伝えることができれば嬉しいです。