プログラミング教育とセットで書かれる考える力とは?

【プログラミング教育とセットで書かれる考える力って何?】

この文はスクルーのシステム構築を担当しているウェブエンジニアが書いています。IT関係に詳しくないけど「プログラミング」と「考える力」が気になっている方は読んでみてください。

子供に「考える力」を…プログラミング体験に保護者と企業が熱視線

http://www.sankei.com/west/news/170817/wst1708170004-n1.html

最近よく目にする「プログラミング」と「考える力」の組み合わせです。プログラミング教室や記事の内容を否定するわけではないことを先に断っておきます(レゴ社のマインドストームなど、教室で使われるようなツールは私も大好きです)。

プログラミングと考える力がセットの記事を見かけますが、プログラミング教室に通えば考える力がつくというのは少々短絡的です。現役のウェブエンジニアとしては、考える力をつけるためにプログラミングにこだわる必要はないように思います。考える力とは何を表しているのでしょうか?

文部科学省では「論理的思考力や創造性、問題解決能力」の育成をプログラミング教育で行おうと考えています。これが考える力にまとめられているといってほぼよいでしょう。

小さい子が行うプログラミングキットはブロックを使って決まった操作を組み合わせるものが多く、「プログラミング言語」を使った本当の意味でのプログラミングを教える教室はあまりありません。今使われてるツールはゲームのように操作できて、自分が組み上げたものに対する結果(画面の中のキャラクターやロボットが動くなど)が感覚的にとてもわかりやすいため、子供が興味を持ちやすいのです。

考える力というのはどんな習い事でも鍛えられ、例えばスポーツなら『この状況だったらこう動く』と考えます。これはプログラミングでいう『もし◯◯なら△△』というブロックを組み合わせることとやっていることはほとんど同じです。

・サッカー
キーパーが右に寄っていたら左を狙ってシュートを打つ

・プログラミング
右カーソルを押されたらキャラクターを右に動かす

ただ、芸術などものづくり系を除く多くの習い事では『◯◯なら△△する』を先生が考え、生徒に教えます。生徒の能力に従って行う次のメニューも用意されています。なぜそうするのか生徒が考えることは少なく、実質生徒は△△する(実行部分)だけを行います。特に勝ち負けや優劣がついてしまうものに関しては『こうすると良いものができる』というノウハウを持った先生が指導することが結果に結びつきやすいです(※教室の方針や1回の習い事で使える時間によって差はもちろんあります)。そしてスポーツ、ピアノ、バレエ、水泳、競技系のほとんどは考える必要がなく反射で一連の動作を繰り出せるようになるまで練習を繰り返し体に覚え込ませます。『どうして』という部分は熟練と共に省略されていきます。それが「考えていない?」ように思われてしまう原因です。

今話題になっているプログラミング教室は『◯◯なら△△する』というルールを自分で考える内容が多いです。ここでの考える力というのは発想力と言った方がいいかもしれません(リンクの記事中では「入店の受付」「窓口業務」という解決すべき課題が与えられています)。本物のプログラミング言語を使ったシステム構築も実際多くの時間を費やし身につけると、設計書通りにプログラムを組み立てることはたいして頭を使わずにできるようになります。しかし、入力・出力・例外処理・テスト・運用時の操作・負荷のかかり方など、本来のプログラミング(システム構築)のために必要な論理的思考というのは膨大・複雑で、プログラマといえど100%正確にできるものではありません。大学の情報系学科でも、1,2年時の初歩的内容を扱う段階で将来システム構築関係の職業に就くことを早々に諦める人が大勢いるのが現実です。つまり、小学校中・高学年程度で世の中で動いているシステムレベルの論理的思考は現実的に身につきません。大人になった時役に立つ武器になるのではなく、高等教育や興味を持って本格的にITの知識を身につける時拒否反応が出にくくなる程度の効果でしょう。

『考える力』を子供につけて欲しいなら、家で今日習ったことについて『どうしてそうやったのか』『なにをしたらもっとよくなりそうか』などを話し合うだけでプログラミングと同じような効果が期待できるでしょう。
重要なのは『何をどうしたからこうなった』を自分で考えることで、何をやるかは自由に選択できるのです。お父さんお母さんも「考える」ことをお忘れなく!

※プログラミング自体は学校の必修になりますし、自分が組み立てたものが自分で決めたルールで動くというのは面白いものです。体験してみる価値アリですよ!