アクティブ・ラーニングの課題を解決するITソリューションとは?
昨日から始まったこちらへ行ってきました。
- 指導者や学生のパソコン画面を全員で共有できる
- 使う教材や作成物をオンラインで共有できる
- 講義を事前や事後に、オンラインで視聴できる
街づくりのもう1つの本質からアルゴリズムを学ぶ
街づくりの本質2つめとして、今回は
その中には何らかの「順序」が存在すること
を書いてみます。
前回は街を構成している個(要素)について考えたわけですが
個と個はそれぞれ、何らかの関係性をもっていると捉えます。
たとえば、電車と線路と踏み切り、そして踏み切りをまたいでいる道路、その上を走る車やバス、そして信号機・・・
こう書けば、どんな繋がりをもっているかは説明するまでもないと思います。
遠隔で繋がっている例としては
不審者が侵入→家(のセンサーが反応して警備会社へ連絡)→警備会社(から警察へ連絡)→パトカー(が出動)
のような繋がりや
工場(でお弁当を作る)→トラック(で店舗に運ぶ)→店(に並ぶ)
など、です。
こうした繋がりとやその中にある順番のことを、探究型プログラミング学習ではアルゴリズムと呼んでいます。
※ちなみに子ども向けには、
アルゴリズムとは、プログラム(=命令の集まり)の順番
と説明しています。
アルゴリズムを考えるときにも、まず個から考えて、次に個と個の繋がりを考えて、といった段取りで少しずつスケールを広げていきます。
たとえば、踏切を個と捉えれば、電車との関係を前提に踏切のアルゴリズムをまず考えます。
ちなみに、この部分をさらに掘り下げていけば、モノの仕組みを知る学習に繋げていくことができると考えていて、将来的にはそんな流れが作れたら良いなぁ、という野望もあります。
そして、踏切と電車、道路を走る車、信号機などとの関係を1つずつ組み合わせていき
それぞれがどういった順番(アルゴリズム)で動いているのかを捉えていきます。
街づくりのワークショップにおいて、この
その中には何らかの「順序」が存在すること
を学ぶ過程には2つの学習ポイントがあります。
1つは、個と個を繋いで大きな街をつくる、という流れに沿って、アルゴリズム自体も、組み合わせることによってより大きく複雑になっていく
ということを知るということ。
つまり、シンプルなアルゴリズムを組み合わせていけば、大きくて複雑なアルゴリズムが作れるということです。
(逆にみれば、大きくて複雑なものでも、個に分けていけばシンプルなものとなる)
もう1つは、個と個を繋ぐとき、その繋ぎ方は予め決めておく必要があるということです。
たとえば踏切の例でいえば、電車が近づいて、②で運転士に遮断機がおりたことを知らせるわけですが
このときの知らせ方として、信号を使うのか、無線を使うのか、など選択肢がいくつかあるのであれば、どの手段を使うのか予め決めておかなければいけません。
そうしないと、例えば無線で連絡する踏切なのに電車が無線に対応していない、という事態に成りかねないからです。
littleBitsを使うワークショップでは、自分の作品と他の子の作品を繋ぐ場面で同じ問題が起きます。
いざ繋ごうとしたときに、お互いの作品(回路)の一部を壊さなければいけない体験を通じて、はじめに繋ぎ方を決めておくべきだった
ということを失敗を通じて学習することを期待しています。
さて、前回までの解説をまとめると、街づくりの学習プログラムでは以下のプログラミング概念を学習しているということになります。
- 2進数、プログラム(アイスブレイク~大人を命令しよう~)
- アルゴリズム
-
モジュール化
- インタフェース(繋がり方を決める)
こうしたプログラミングの概念が、実は現実社会においても適用できるし、実際にされているということや
こうした学習は必ずしもパソコンを使わなくてもできるということが、少しでも伝えることができれば嬉しいです。
世界をプログラミングするとは?
前回は、街づくりのワークショップを通じて伝えたい街の本質について書きました。
再掲すると、「街」の本質とは
個の組み合わせによって大きくて複雑なものができていること
と
その中には何らかの「順序」が存在すること
オパールを求めて世界中から人が集まるのだそうですが、発掘者たちが過酷な気候から身を守るため地下に「街」が作られました。
こうした地下にある街を想像してみると、太陽がないから常時灯りが必要だとか、酸素濃度が薄そうだから火を使うのは難しそうだとか、移動手段はどうしようとか、いろいろと考えることが出てきます。
こうした発想を元に、同じような街を地上に作ったらどうなるか?
と考えるのも面白いです。(太陽に依存せず空調が完全にコントロールされた街は快適そう)
「街」を全体として捉えた上で建物などの要素を個として抽出していくステップのことを、探究型プログラミング学習では「モデリング」と呼んでいます。
現実的に「街」を観察してモデリングしても良いでしょうし、現実に縛られず、一旦、発想を広げて様々な情報を元に新しい「街」を考えても構いません。
重要なのは、個を積み上げて街を捉えるのではなく、まずは全体を捉えた上で、個を捉える、という思考を知ることです。
これは、業務システムの開発現場において上流工程に位置づけられている「業務モデリング」というプロセスに該当します。
オブジェクト指向モデリングという手法があるのですが、この手法を使うと、企業に存在する業務を概念として(抽象的に)捉えることができ、業務の中に存在する要素(顧客や契約、など)を個(オブジェクト)として認識できるため、プロジェクト関係者間の認識合わせが容易になります。
※オブジェクト指向については、いつか学習プログラムの中に入れてみたいと考えているので、詳細はまたそのときに
モデリングの思考は、プログラミング言語からスタートするプログラミング学習においては身に付けることができません。
しかし、全体を捉えた上で個を抽出する、という思考は、プログラミングにおいては、適切な粒度のプログラムを設計する際に役立ちますし
現実社会においては、瑣末な作業(個)に注目するのではなく、より広い視野で活動(業務や課題、など)を捉えることで最適解を導くのに役立ちます。
私は、このモデリングの思考をもつことは、あらゆる仕事において役立つと信じているので、あらゆる子どもたちが身につけておくべきスキルの一つだと考えています。
だから、探究型プログラミング学習のサブタイトルにある「世界をプログラミングする」には、その想いを込めました。
そして、先ほどの子どもたちの視点から学べることのもう1つは、個(要素)は単体で存在しているように見えて、実は繋がっている、ということです。
これが、街づくりのワークショップで伝えたい、街のもう1つの本質である
その中には何らかの「順序」が存在すること
に関係します。
続きは次回。