コンピューターがおかしくなる操作をしないセンス

https://cosei.info/programming

ブログ プログラミング教育

プログラミング教育で見落としがちな「大切なこと」

パソコンや機械を使っていると・・・

すぐに調子がおかしくなる人と、そうでない人。

いますよね?

何が違うのでしょうか?

相性?

いえいえ、そんなにコンピューターはナイーブではありません。
そもそも機械に感情は無いですから。

実は「慣れ」の問題です。

「コンピューターがおかしくなるような使い方」

というのがあります。
コンピューターに慣れている人は、無意識のうちに、これを避けています。

地雷を踏まないセンスみたいなものです。

プログラミング教室では、このようなセンスも身につきます。

その地雷を踏む経験ができるからです。
経験するだけ早くコンピューターに慣れます。

例えば、こんなふうに。

なぜコンピューターが止まったのか?

ちょっと問題を出します。
きっと、プログラミングでありがちな場面です。

問題

ある生徒が次のようなプログラミングをしました。
プログラムを実行させると、間もなくマインクラフトが動かなくなってしまいました。

なぜでしょう?

生徒Aくんのプログラム「壊しても自動修復する氷の塔」

  • 氷ブロックで、縦30×横30×高さ50の塔を建築する
  • 中は空洞(空気)にする
  • 壊しても自動的に修復する

マイクラミング_むちゃぶり

上の「埋め尽くす」命令がマインクラフトに送信され、マインクラフトの世界で建築が実行されます。

【補足】
MakeCodeやマイクラのコマンドでは、同様の命令を実行しても無視されます。
1度に置けるブロックの数に制限がかかり、無茶や失敗ができないようにガードされているためです。
マイクラミングはこの制限を解除しており、あえて無茶や失敗ができるようにしてあります。
失敗を経験するのも教育の内だと考えているためです。

みなさん、ちょっと考えてみてください。

プログラムを実行させてから、しばらくの間は正常に動作していました。
つまり、氷の塔を壊しても、自動的に修復されました。

ところが、しばらく遊んでいると修復されなくなってしまいました。

スクラッチとしては、ちゃんと動いています。
それなのに、プログラムが実施されていないようです。
マインクラフトの画面更新が止まってしまったようです。

なぜでしょうか?

コンピューターの立場で考える

コンピューターは命令どおりに何でもやってくれます。
文句を1つも言いません。

だから、ついつい忘れがち。
コンピューターに無理難題な

「ブラックな仕事」

をさせていたことを。

コンピューターが仕事する量

Aくんのプログラム。
コンピューターに、どれくらいの仕事をさせているのか計算してみましょう。

「氷」のブロック: 31×31×51=49011個
「空気」ブロック: 30×30×50=45000個
→ 合計 94011個

これを「ずっと」繰り返します。

これだけ考えても、ものすごい量の仕事をコンピューターにさせていることが分かります。

でも、コンピューターは速いから大丈夫?

いえ、ちょっと待ってください。

これを「ずっと」繰り返すのです。

「ずっと」とは?

「ずっと歩き続ける」と「ずっと全力疾走する」では大変さが違いますよね?

どれくらいの速さで「ずっと」繰り返すのでしょうか?

スクラッチが1秒間にする実行する回数

例えば、もしも1秒に1回を「ずっと」繰り返すのでしたら、コンピューターの仕事の量は、

1秒あたり94011個のブロックを置く

と試算できます。

果たして、実際のところは1秒間に何回なのでしょうか?

次のようなプログラムで、およその回数を知ることができます。

スクラッチが1秒間に命令を実行する回数

 

266回でした。

スクラッチとマインクラフトの間で通信処理が入るため、それほど回数は多くはありません。
しかし、それでもマインクラフトにとっては大変な作業です。

266×94011=25006926

ですから、コンピューターの仕事量は、

1秒間に2500万個以上のブロックを置く作業をずっと繰り返す

というものでした。

これは途方もない量です。

マインクラフトがパンクするのも時間の問題。

間もなくしてマインクラフトがギブアップ。
世界を描画する処理ができなくなってしまいました。

それで途中から動かなくなったというワケです。

受け取った命令の処理が終わるまで、もう待つしかないのでしょう。

塾長のパソコンでも再現しました。
やっぱりマイクラがおかしくなりました。

処理する時間を与えてあげる

では、どうしたら良いでしょうか?

コンピューターの立場になれば分かります。

今の仕事が終わってから、次の仕事を与えるようにします。

例えば、こんな風にします。

自動修復する氷の塔のプログラム

マインクラフトが94011個のブロックを置くのには、おそらく2秒もかかりません。
しかし、他の作業があるかもしれません。
念のために2倍以上の5秒を与えることにしました。

実行してみましょう。

上手くいきました!

マウスをカチカチさせないための教育

子供たちがパソコンを操作している様子を観察してみてください。

マウスを「カチッ」とクリックしても、すぐに応答がないとき・・・

子供はイライラして、何度もカチカチします。

コンピューターは、やることがさらに増えてしまい、さらに応答が悪くなります。

負のスパイラルです。

こういう場面が、けっこうありますよね?

大人だって、あるかもしれません。

この場面、なんだか、上のプログラミングの話に似ていませんか?

コンピューターのトラブルの種類は、他にも多くあるでしょうが、何が起こったとしても

「状況をよく見守る」

が基本です。そして

「自分で判断できなければ、他の人に聞く」

というのも基本です。

コンピューターに慣れている人は、このような行動を自然にとることができます。

何か異常があれば、それ以上コンピューターに何かをやらせるようなことはしません。
何よりもまず、現状がどうなっているのか、より多くの情報を集めます。

ところが、慣れていない場合は逆の行動をしてしまいます。

「何かしなくちゃ」

と気持ちが焦ってしまい、思わず「早とちりな行動」に出てしまいます。

例えば・・・

すぐに電源を落として、再起動させたりします。

すると状態がおかしくなって、アプリが起動できなくなったりします。

こうなってしまうと復旧させるのは至難の業です。
たいていは、最新情報を捨てて、1つ前の状態まで戻すことになります。

誰もが1度は通る道です。

今でこそパソコンを使いこなしている人も、昔は「やっちまった」はず。

失敗を無くすのが難しいなら、失敗から学ばせるます。

子供たちに失敗させてあげるチャンスがあるか、
失敗から学べるチャンスがあるか

大切なのは、そういう事だと思います。

子供に小さな失敗をたくさん経験させる

コンピューターは文房具と同じです。

鉛筆の芯が折れたら他の鉛筆を使います。
消しゴムを忘れたら隣の子に借ります。

コンピューターも同じです。

調子が悪くなったら、予備のコンピューターに切り替えたり、隣の子と共同作業したりします。

どんな使い方をしたらコンピューターの調子がおかしくなるのか。

むしろ、早いうちから多くを経験しておいた方が良いと思います。

小さなミスを経験したり、隣の子に起きたアクシデントを助けたり。

失敗してみなければ分からないことがたくさんあります。

失敗も大切な経験です。

子供には設定を壊しても良いパソコンを与えるべき

ミスやアクシデントが起きないことを想定するのは間違いです。
最初から、起きることを想定して授業をするのです。

パソコンを子供に使わせるなら「失敗してよい専用のもの」が良いです。

絶対にダメなのが、保護者様が仕事に使うようなものを、ちょっと使わせる、ということ。
絶対にダメです。

失敗ありきでパソコンを使わせてください。

中でもプログラミングの授業は、これまでの「正解が1つ」の授業とは違います。

正解がない中で、試行錯誤を通じて自分たちの最適解を見つけることにチャレンジします。

そのような問題の中には、コンピューター自身のトラブルだって含まれています。

できるだけ教育の早い段階からコンピューターを活用することが大切です。
そして早い段階からコンピューターにありがちなトラブルを経験させ、早く慣れさせておきましょう。

所詮は文房具

日本は教育にコンピューターを導入するのが遅れてきました。

ですから先生も子供も保護者も、まだまだコンピューターに不慣れです。

何か小さなトラブルでも、すぐにドキッっとしてしまいます。

でも大丈夫です。

所詮は道具です。
文房具です。

みんなが慣れてくれば、コンピューターのトラブルなんて、鉛筆や消しゴムのトラブル程度のものです。
冷静になって考えてみれば、対応の仕方は何通りもあるはず。

次第に小慣れてくるでしょう。

コンピューターも文房具と同じように「アクシデントありき」で使うように、早くなって欲しいものです。

 

-ブログ, プログラミング教育
-, , , , , , , ,

Copyright© 塾長のための「オンライン!プログラミング教室」開校講座 , 2024 All Rights Reserved Powered by AFFINGER5.