幼児がプログラミングを学ぶなら?ちゃんと21世紀型スキルから考えてみる
探プロはlittleBits Advent Calendar 2016 に参加しているので
僭越ながら22日目を担当させて頂きました。
探プロ的にlittleBitsを語るなら、あまり他の人が書かないテーマで。
ということで、今後開催する予定の幼児向けプログラミング講座を題材に書いてみます。
探プロのワークショップは主に小学生がターゲットなのですが、ワークショップにはときどき幼児さんが紛れて参加してくれます。
お兄ちゃんやお姉ちゃんに付いてきて、部屋の片隅で気ままにlittleBitsと戯れている小さなお子さんたちの姿はいつもホノボノしますね。
小学生をターゲットにしているのは、ワークショップの趣旨を理解してくれて、会話や文字を使ったコミュニケーションがとれる年齢を考慮してのことなのですが
先日知人から、幼児向けにはできないか?
と打診され、幼児向けのプログラミング学習というものを真面目に考えてみるのもおもしろいと思いました。
とはいえ、通常の探プロのやり方では難しすぎる・・・
言葉も通じない・・・
(親がいたとしても)一人での工作は難しいし完成しないから達成感がない・・・
どうするか?
伝えるプログラミングの概念はアルゴリズムにするとして、どうやって幼児に学習させるか?
難しすぎず、簡単すぎず、飽きずについてこられるように、あくまでも楽しく。
さてどうしましょう。
その前に、簡単にlittleBitsについて説明しておきます。
littleBitsはBitと呼ばれるモジュールを磁石で繋いで電子回路を組み立てることのできる学習教材です。
国内も含め世界中の教育現場に導入されていて、レゴブロックのように繋げて遊ぶだけでも十分に楽しめるだけでなく
ANDやNANDを示すモジュールを使って論理回路を組んだり、Arduinoと連携して高度なプログラミングによって操作したり、ネットワーク経由で電子回路を動かしたり、など幅広く学習する機能を備えています。
ちなみに、こちらから買えます。
(買う予定の方はご一報いただけると良いことがあるかも?)
とても簡単に扱えるのですが、探プロではアルゴリズム学習を目的に使うので
基本的なことを抑えつつ、各モジュールの役割を機能として捉えられるように進めていきます。
littleBitsを初めて触る小学生向けに用意している入門編のワークショップで見せるのはこんなスライドです。
littleBitsのモジュールは大きく4つの種類に分かれています。
1つは電源(青)。
そこに、ピンク、オレンジ、緑のモジュールを磁石で繋げていくわけですが
それぞれ役割があるんですね。
※厳密には、ピンクのモジュールの中にも制御(強弱など)するものが含まれるので正確な分類ではないのですが、大まかに捉えるのならこれで十分です。
電源は1つですが、他にもたくさんの役割をもったブロックがあります。
そして、こんな感じで試しながら、少しずつ難易度を上げてlittleBitsの使い方とアルゴリズムの基本形を覚えていきます。
さて、これを幼児向けにどうアレンジするか?
このままでは難しいでしょうし、何より正解できるまでに時間がかかりすぎます。
そこで、発想を逆転させました。
デバッグでやってみようかと。
プログラムに間違いがあって期待した通りに動かないとき、「バグ(bug)」がある、と言います。
このバグを取り除く作業をデバッグを呼ぶのですね。
プログラミングをする上でデバッグの作業というのは大きなストレスです。
自分の書いたプログラムコードがさくさく動いてくれる方が楽しいにきまっているので、思い通りにいかなくて「なんでろう?どうしたらいいんだろう?」と考えることは基本的にはストレスなのです。
でも、私はこのデバッグこそが、論理的思考力や問題発見能力を鍛えるのに有効な体験だと考えていて、これまでに何度もBlogで書いてきました。
例えばこういうのとか
こういうのとか。
ただ、これまでのワークショップではなかなかデバッグをテーマにしたものをやりづらかったのです。(だってストレスになりますからね)
これをあえて、幼児向けにチャレンジしてみようと考えました。
名前をつけるなら、「バグ(虫)とりゲーム」かな。
そう、ゲームにしてしまえばストレスじゃなくて楽しめるはず!
まずは電源の存在を知るところから始めます。
さぁライトをつけよう。あれ?つなげても光らないね?
電源をONにしないとつかないのか!
次は命令モジュールの使い方を覚えます。
あれ?電源はONなのに光らない?
どうする?
これはボタンの形をしているのですぐに分かりますが、圧力センサーだとちょっとわかりづらいですね。
こんな感じで、ピンク色のモジュールに何か操作を加える(=命令する)と、緑色のモジュールが動く(光る、回る、など)という基本的なところを覚えてもらいます。
そうすると、たとえばこんなクイズも考えられるようになるはず。
電源を入れるとどうなるだろう?
正解は、左の2つのライトモジュールだけが点灯して、右端にあるモーターは動かない、です。
じゃあ、どうすれば動くようになるでしょう?
(答えは、圧力センサーに命令する or 圧力センサーを取り除く)
つまり、緑色(結果の役割)のモジュールの次にピンク色(命令の役割)のモジュールを繋いでも、何も起きない、ということが分かります。
これは、命令して結果が出る、というプログラムの超基本的な考え方を学んでいることと同じです。
これを応用していくと、じゃあピンク色とピンク色を繋げたらどうなるか?
緑色と緑色は?
など、いろいろとバリエーションを作ることができます。
ちなみに、緑色と緑色を繋ぐと直列に実行されますし、分岐のモジュールを使えば、並列で実行できます。
組み合わせや、オレンジ色(制御の役割)のモジュールを加えることで難易度はどんどん上げられますし
バグを見つけるだけでなく、回路を見せて、電源を入れたらどんな動きをすると思うか?
といったクイズにすると大人でも良い頭の体操にもなりますね。
さらにlittleBitsには、ANDやOR、NAND、NORといった論理演算を使ったアルゴリズムも学ぶことができます。
※論理演算とプログラミングの関係についてはこちら。
そこまでいくと小学校高学年か中学生レベルかな??
それはまたの機会に書いてみます。
さて、littleBitsを使った幼児向けのプログラミング学習はいかがでしたでしょうか?
あれ?21世紀型スキルの話は?
そうでした。ここまでで終わってしまうと単なるアルゴリズムのお勉強で終わってしまうので、他との差別化ができません。
例えば幼児向けには、試行錯誤しながら思考力が身につくと謳うプログラミング教材がいくつかありますね。
たとえば、積み木を組み合わせて、そのアルゴリズム通りにロボットが動くCubetto。
とても素敵な教材だとは思うのですが、できることが非常に少ないので、何回か触ったら飽きてしまうような・・・
応用が効かないのでちょっともったいない気がします。
思考力は身につくけれど、他には??
じゃあ、探プロはどうするか?
【考える力】【技術を使う力】はOKですが、それ以外に
【なかまと協力する力】【社会を知る力】はどうしましょうか?
【社会を知る力】
今度のワークショップのテーマは「楽しい家をつくろう!」としました。
子どもたちには好きなように家を設計して工作してもらいます。
当日は、家の形になるダンボールを使って、切ったり貼ったり、ここにlittleBitsを取り付ける予定です。
これは以前のワークショップで私が作ったサンプルですが、イメージとしてはこんな感じです。
自分の作る家にはどんな人(動物?)が住むのか?
その家はどんな構造になっていて、その人(動物?)はどんな生活をするのか?
その家に住むとどんな楽しいことがあるのか?
家というものを通じて、そこに暮らす家族という子どもたちにとって一番身近な社会を感じてもらうことを期待しています。
【なかまと協力する力】
ワークショップの最後には、みんなの作品をつないで1つの街を作ろうと思っています。
物理的に繋ぐのは難しそうですが、他の子の作品と自分の作品が「街」という1つの作品になるとき、子どもたちはどんな協力をすることになるのでしょうか。
この辺は、当日にどんな反応を見られるか一番楽しみにしているところです。
このワークショップはトライアル版を1月21日(土)に東池袋の日の出ファクトリーにて行う予定です。
見学などご希望の方はこちらまでご連絡ください。
info@tanpro-lab.jp
反応が良ければ、次回以降も継続していく予定です!
読書で広げるプログラミング的思考
他にはない面白いコンセプトのプログラミング学習をご紹介する第2段です。
1ヶ月ほど前になりますが、こちらのワークショップに子どもたちと参加しました。
コンセプトはなんと、読書×プログラミングです。
プログラミングを学習するのにパソコンは不要、という話は私もよくしていますが
読書を通じて、という観点は目からウロコでした。
体験したのは、講師がオリジナルで作り上げたという「読書」で広げる「プログラミング的思考」です。
講師は佐賀県でパソコン教室を運営していて、速読やプログラミング、その他たくさんのプログラムを子どもから大人向けに提供している方でした。
読書からプログラミング的思考を連想するなんてさすがです。
会場は池袋の明日館という、これもまたプログラミングとは縁のなさそうな取り合わせがまた良かった。
この日は、恐らく誰でも知っている物語「北風と太陽」を題材に、3つのチカラを修得するプログラムを体験しました。
- あらすじの理解+まとめ ⇛ 論理的思考力
- 出来事の分析+疑問+解決 ⇛ 問題解決力
- 枠にとらわれず自由に発想+まとめ ⇛ 創造力
ワークショップ中は、「北風と太陽」の話を少しずつ速度を上げながら繰り返し聴き
頭を活性化させていきます。
その状態で、まず物語の構成を図に表しました。
私は普段、仕事の中でロジック・ツリーやアルゴリズムなどを図式化することはありますが
物語の構成に注目したことはありませんでした。
でも、言われるがままに書いてみるとたしかに、それまでなんとなく聞き流していた物語が
ちゃんと意味のあるカタマリで目の前に可視化することができました。
思い返してみると、小学校の国語の授業や受験勉強では、文章の構成を意識するような勉強をよくやっていましたね。
そしてこれはアルゴリズムであり、論理的思考力に繋がるものだと、やりながら実感することができました。
ここまでが、どちらかというと左脳的なアプローチ。
このメソッドがすごいのはここからです。
次に、いろんな場面での出来事に注目し、発想を拡げていきます。
たとえば、そももそもなぜ、太陽の相手は北風だったんだろう?
(雨雲ではだめだった?)
もし、太陽ではなく北風が勝っていたらどうなったんだろう?
(旅人は超寒がり?)
などなど
要は、物語に自分でツッコミを入れていくわけですね。
実際にどんな成果が出るのか、ちょっと面白いものをお見せします。
これは、私の息子(9歳)がワークショップ中に描いた絵です。
分かりづらいので解説をしましょう(笑)
季節は秋。
そういえば物語には季節の設定がありませんでしたが、彼は秋だと考えたようです。
別に季節は何でも良くて、そこでなぜ?と考えて自分で答えを語れることが重要ですね。
季節は秋、そう言われるとそんな気分になるので不思議です。
このシーンでは、北風と太陽がゲームの勝敗を決めるルールを話し合っています。
そう言われて初めて気がついたのですが、私はこの物語に出てくる北風と太陽は、すごく仲が悪くて、勝負が決まった後はお互い絶交、くらいの関係なのかと考えていました。
でも彼は、北風と太陽は友だちのような関係で、ちょっと勝負しようぜ、くらいの軽いノリと捉えていたようです。
なので、ゲームのルールをはじめに話し合うという、なんともほのぼのとしたシーンが出てくるわけですね。
ちなみにルールとは、先に服を脱がせて池に飛び込ませた方が勝ち、というものです。
もう一度絵をよく見てみると、北風がそう言っています(笑)
こんな感じで、同じ物語なのに、人によって捉える観点が違って、そこから見えてくるものも違うとなると、自分の発想の枠がぐぐっと拡げられる実感があります。
このメソッドの良いところは、「読プロチャート」というオリジナルの表記方法を使って、物語を構造化することと、発想を拡げることの両方を同時に体験できるところです。
話を整理しながら、一方でどんどん拡げていく。
収束と発散を同時にやる快感があるのですね。
しかも、とても分かりやすい形でA4(またはA3)の紙にまとめていくので、あとで見返したり、人に説明するのにも役立ちます。
そういえば、講師の方が面白いことを仰っていました。
同じ物語を何度聞いても、やるたびに違うチャートができるのだそうです。
自分の思考と向き合うツールとして活用すると、その変化から面白いことが発見できるのかもしれません。
こうしたワークショップを通じて、読書って楽しい!と実感する子が一人でも増えたら良いですよね。
論理的思考力を鍛えるプログラミング、というよりも、読書の楽しみを通じてプログラミング的思考を養う、というコンセプトであるところにとても共感します。
ちなみに、私はこのワークショップを体験したことであらためて、国語とプログラミングの相性に注目するようになりました。
そこで探プロでもいくつかコンテンツを作っていこうと考えているのですが、そのうちの1つが、カタルタという物語を作るためのカードを使ったワークショップです。
題して「物語をつくろう!」
さてさて、どんなコンテンツが出来上がるでしょうか。
春頃にはお披露目できると良いなぁ、と思ってます。
探究学習の中でプログラミングを学ぶという意味
探プロの形が出来上がったのはちょうど1年前です。
1年前の今ごろは修士論文を書いていて、探プロのコンセプトを整理するのに頭を悩ませていた時期でした。
単にプログラミングを学ぶのではなく、探究学習という形をとることは
探プロのコンセプトを考え始めたかなり早い段階から決めていました。
プログラミングと探究学習の相性の良さは間違いないと思っていたので。
それでも、1年前は探究学習とプログラミングを組み合わせる発想が世の中では一般的でなく、私自身もうまく説明しきれないもどかしさがありました。
それが今年の春に
小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ):文部科学省
が公表されて以来、一気に「プログラミング的思考」という言葉と共に認知が進んできたように思います。
いま、次期学習指導要領等の見直しが進められている中でプログラミングが注目されていることはご存知の通りですが
具体的なイメージというのはまだ見えてきません。
そうした中で、たとえば
生活・総合的な学習の時間ワーキンググループにおける審議の取りまとめ(総合)
の中では、総合的な学習の時間の見直し案として、こんなことが書かれています。
(情報活用能力の育成、プログラミング的思考や社会との関わりの視点)
○ 総則・評価特別部会において、教育課程全体を通じた情報活用能力の育成について検 討される中で、総合的な学習の時間においては、情報の集め方や調べ方、整理・分析の 仕方、まとめ方や表現の仕方などの、教科横断的に活用できる「学び方」を身に付ける ことや、学習の過程において情報手段の操作もできるようにすることが求められる。
○ また、プログラミングに対して小学校段階において体験し、その意義を理解するとい うことが求められており、教育課程全体を通じて、各教科等の特質に応じた取組が期待 されている。プログラミング教育は、子供たちが将来どのような職業に就くとしても、 時代を超えて普遍的に求められる力としての「プログラミング的思考」などの育成を目 指すものであり、コーディング(プログラミング言語を用いた記述方法)を覚えること が目的ではない。「プログラミング的思考」とは、自分が意図する一連の活動を実現す るために、どのような動きの組み合わせが必要か、どのように改善していけばより意図 した活動に近づくのかということを論理的に考えていく力である。
○ 総合的な学習の時間においては、情報に関する課題について探究的に学ぶ中で、自分 の暮らしとプログラミングとの関係を考え、プログラミングを体験しながらそのよさに 気付く学びを取り入れていくことが考えられる。例えば、プログラミングを体験しなが ら、生活を便利にしている様々なアプリケーションソフトはもとより、目に見えない部 分で、様々な製品や社会のシステムなどがプログラミングにより働いていることを体験 的に理解するようにすることが考えられる。
○ プログラミングを体験することが、総合的な学習の時間における学びの本質である探 究的な学習として適切に位置づけられるようにすることとともに、児童一人一人に探究 的な学びが実現し、一層充実するものとなるように十分配慮することが必要である。
抽象的な話だと分かりづらいかもしれませんが、例えばこれを探プロでやっている街づくりのプログラムで説明すると、こんな感じになります。
街には何があるだろう?(課題の設定)
ここでは特に、動くものに注目します。
そして、実際に街を探検して探してみます。(情報の収集)
たとえば、信号機や踏切、自動販売機、などがありますね。
それらの動く仕組みを読み解き、アルゴリズムを理解し(整理・分析)、伝える(まとめ・表現)。
これだけでも十分に探究学習になります。
でも、探プロはこれだけでは終わりません。
街の中にあるそれぞれは、どんな繋がりをもっているのだろう?(課題の設定)
すると、たとえば踏切(+信号機)と電車の関係、店にあるPOSレジと工場や倉庫の関係、などが見えてきます。(情報の収集)
そうやって、実は街は個と個の繋がりでできていて、全体で1つの社会(システム)を構成していること、その繋がりはアルゴリズムで説明できること、を学ぶことができます(整理・分析)。
こうした学習を、机上だけでやらずに、littleBitsや実際のプログラムなどを使って繋がりを可視化し(まとめ・表現)、それを体験できれば学習の理解はさらに深まります。
この学習を本当に実現することができたら、子どもたちが見えている世界は大きく変わるでしょうね。
大人ですら、モノとモノの繋がりを理解して、その全体を正しく捉えられている人は実は少ないのかもしれません。
こういったモノの見方、考え方ができるようになると、自分を中心とした視野の狭い捉え方ではなく
全体の中での自分の位置づけ、といった捉え方ができるようになるはずです。
と、ここまでが先の取りまとめの中で期待されていることなのですが
探プロはさらに先へ進みます。
社会(システム)がプログラミングによって実現されている、動いている
ということを理解したら、
その社会の仕組みを作るためには何が必要か?
ということを考えていきます。
そうなると、Aを動かしたあとにBを呼び出すために
何を決めておく必要があるのか?
正確で効率の良く実行するためには、どんな順番で呼び出せばよいか?
などに関心が向かうはずです。
こうした考え方こそが、プログラムを設計するときにとても重要な考え方で、探プロではこれをプログラミングの概念、と呼んでいます。
(整合性のとれたインタフェースや最適なアルゴリズム)
そう、つまり私たちが日々過ごしている社会と、子どもたちにこれから学んでほしいと思っているプログラミングは、その仕組みや考え方が同じなんですね。
そこに早く気づいてほしい。
ゲームを作るのも、アプリを作るのもいいけど、もっと周りをみて
自分の生活している社会は実はゲームやアプリで作ったシステム(プログラム)と同じ考え方でできているということや
プログラミングの考え方は、ITの世界だけじゃなく、仕事にも生活にも役立つということを
一人でも多くの人に気がついてもらえたら、と思っています。
そのための探究学習、なんですよね。
探究学習としてプログラミングを学ぶ意味が、少しは伝えることができたでしょうか?