コーディングすることがすべてではない。自分への問いかけこそプログラミングなんだ。
こんにちは。だいごです。
プログラミングやAI、IoTなど、
近年、横文字ばかりが目立ってきて目がチラチラするという方も多いのではないでしょうか?
今回は、私がやっている「プログラミング講座」の様子を踏まえて、なぜ私がプログラミング講座を開いているのかについて、書いていきたいと思っています。
え、プログラミングって大事なのはよくわかっているけど、なんか難しそう…
と思っている方もいらっしゃるかもしれません。
しかし、私自身、プログラミングを独学で学び始めて約5年となりますが、やっているうちにそんなのには慣れます。笑
最初は何の意味かわからなかったことも、今ならわかるようになってきました。※ いまだにわからないことの方が多いですが。。。
ちなみに昔、プログラミングについて書いた記事はこちら。
プログラミングに興味がある方
授業の中でプログラミングを教えようと考えている先生方
子どもにプログラミングを習わせたいと考えている保護者のみなさま
ぜひ、最後までお読みください!
プログラミングとは? コーディングとは?
初心者の方が一番気になるのは、何と言っても「プログラミング」という言葉そのもの。
Wikipediaでは、次のように紹介されています。
コンピュータープログラミング(英語: Computer Programming)とは、ある特定のコンピューティングの結果を得ることを目的として、実行可能なコンピュータープログラムを設計・構築するプロセスのことである。(Wikipediaより引用)
まぁ、簡単にいうと、コンピューターにやってほしい仕事の手順を決めること「プログラミング」といいます。
しかし、正確にプログラミングをする(コンピューターに指示を出す)ためには、順序よく命令文を書いたり、ループや条件といった構文を書いたりするため、
その文章をコンピューターが理解できる言葉で書き連ねなければなりません。それが「コーディング」です。
現在、教育現場でプログラミングを学ぼう!という動きがありますが、
学ぶメリットは論理的思考力がつく
と言われてたりします。
私自身は、そんなメリットより、単純に面白いという感覚のほうが強いです。
プログラミングはもっと身近なものになった
学ぶメリットはわかった。
でも、やっぱり難しいんでしょう?
と思われる方が大勢かもしれません。
確かに私も、大学時代に実験演習でプログラミングが出てきたときは、
え、この何が楽しいの???
と思ってしまって、
プログラミング = 難しい
というレッテルを取り外すことができていませんでした。
就職してから、プログラミングできたらカッコいいなぁ、という不純な動機で勉強し始めたからいいものの。もし、そんなこと考えなければ一生学ばなかったスキルかもしれません。
しかし、現在は、難解な文字列を打ち込まなくても、ブロックを組み合わせる感覚でプログラミングができるようになりました。
※ 文字列を打ち込むことをここではコーディングとしています。
コーディングを覚えなくてもいいなんて!なんて便利!!
たとえば、Scratchは有名なプログラミングツールの一つです。
作り込めば、ゲームだって作れちゃう。
そんなプログラミングツールの中でも、最近、私の中で熱いのが「Minecraft: Education Edition」(教育版マインクラフト)です。
(画像はhttps://education.minecraft.net/より引用)
なぜこれが私の中で熱いかというと、Scratchは2Dの世界でプログラミングするのに対して、Minecraftは3Dの世界でプログラミングできるから。
プログラミングも学べるし、同時に空間認識力も高められる。
何より、プログラムしたものがブロック上に積み上がっていくワクワク感がたまりません。
さらにさらに、子どもたちの間で人気のゲームということが圧倒的にプログラミングを学ぶハードルを下げています。
※ Microsoft社の回し者ではありません。
昔の方々は、自分のゲームをつくるためにプログラミングを学んでいたようですが、もはや現在は大好きなゲームの世界でプログラミングを学べる時代なのです。
ちなみに僕の講座では、極力「教えないこと」を意識しています。
1回の講座は1時間。
はじめの20分はちょっとした課題を与えて、教えることはしますが、残りの40分はその日の一番大きな課題を与えて、あとは放置!(言葉が悪い!笑)
それでも、子どもたちは夢中でプログラミングに取り組みます。
多様だからこそ、やっぱりプログラミングは面白い!
プログラミング講座をしていて、面白いなぁとつくづく思うのは、その多様性。
教育版のMinecraftでは、エージェントと呼ばれるロボット?をプログラミングして動かすことができます。
講座の中では、上の画像のように、5×5のマスにブロックを並べる指示を出すことを考えました。
あなたならどのように並べるよう指示を出しますか?
ちなみに、講座の参加者のプログラム例はこちら!
▼外側からぐるぐるとブロックを置いていくように指示しています。
▼外側からではなく、内側からぐるぐるとブロックを置いていきます。
▼これはジグザグとブロックを並べていくプログラム。
▼これは外側からぐるぐると内側に向かってブロックを置いた後、最後にエージェントがブロックを破壊しながら外側に戻っていきます。
たった5×5のマスにブロックを並べるだけなのに、参加者によって少しずつプログラミングしたものが違う。
でも、すべて結果は同じ!!
あー!なるほど、そうやって考えたのね!
え、その方法は考えていなかった!
など、参加者のプログラムを見るのが楽しくてしょうがない。
そして、そんなとき
ああ、多様だなぁと思えてくるのです。
プログラマーそれぞれの個性が表れたプログラム。
その個性こそ、大切にしてもらいたいですね。
▶︎ 自分への問いかけこそプログラミングの大事な視点
これどうやってするんだろう?
どうやったら、順序よく進められるかな?
もっと簡単にするためにはどうしたらいいだろう?
こう考えている子どもたちの頭の中では、きっとドーパミンが噴出しているのでしょう。
ああでもない。こうでもない。
といった試行錯誤を繰り返して、自分の納得する落とし所を見つける。
ちまたでは、プログラミングを学ぶと論理的思考力が身に付くということも聞いたりする。
僕も少しそう思う。思考力は身につくだろうなぁと。
だけど、もっと普遍的な能力が身につくのではないか? と自分でプログラミングをしながらそう思った。
その能力とは、自分に問いかける能力だ。
プログラミングをしていると、バグ(プログラムがうまく作動しないこと)が日常のように発生する。
その度に私は、
「え、なんでだろ?」
「うーん、ここまではちゃんと動いているよね?」
「何かまずいことしたかな?」
と1人で呟いている。
実はこの行動、パソコンの画面に向かって話をしているようでそうではない。自分が組んだプログラムを眺めながら、自分と対話をしているのだ。
なぜ、うまくいかないの?
なぜ、ここはうまくいったの?
自問自答が繰り返しできることは、きっと大人になっても必要になってくる能力だと思う。
いや、大人になってからのほうが必要だ。
オンライン上に週一回集まっています。
昨年、2時間のプログラミング講座をするのに、一ヶ所に集まってもらっていた。子どもたちは保護者の方の送迎が必要なので、事前に日程調整もして。
それが当たり前だと思っていた。
しかし、最近は新型コロナウイルスのおかげ?で、保護者の方のオンライン(リモート)への理解も進み、オンライン上に集まることが可能になった。
これはいい。笑
もちろん、身体の体験が伴わないのは情報量が少なく、なんかもったいない気はする。
…気はするのだが、それでも手軽にオンラインでつながって学びを深められるのは非常にいい!
きっとコロナがおさまっても、週一回集まれるオンラインの場所はつくっていくと思う。
【おまけ】 狙いは別のところにあったりする。
プログラミングを学ぶという名目で、
実は、子どもたちにオンラインに慣れてもらう機会をつくることがこの活動の裏目的だったりもする。
コロナを経験した世界は、今後より一層オンライン化が進むだろう。
そんな世界で、少しでも楽しく過ごしてもらいたいから、来週もまた次の週も、オンラインで子どもたちに会いたいと思っている。
最後まで読んでいただき、ありがとうございます。いただいたサポートは、高校生と地域貢献をするのための活動費用として使わせていただきます。