プログラミング教育のキモである「プログラミング的思考」について少し詳しく解説します。
プログラミング”的”思考とは
プログラミング教育の必修化に伴い、この単語をよく聞くようになりました。
なぜ、「的」というワードが付いたのでしょうか。
プログラミング教育の注意点
まず、プログラミング教育において誤解してはいけない点が2つあります。
プログラミング言語習得が目的ではない
理系や工学系、および商業系の学校のほとんどではプログラミングの勉強をしていますが、
小中学生向けのプログラミング教育の内容は、それまでの高等教育で行ってきたプログラミング教育とは全く異なります。
さて、まずはここで「プログラミング」に関する疑問についてお答えします。
Q1 プログラマーはプログラミング的思考が身についているか
これは難しい問題かもしれませんが、答えは「NO」です。
もちろん、優秀なプログラマーのみなさまはプログラミング的思考ができますが、それはプログラムをしていたからではありません。
プログラミング的思考が優れた人がプログラマーとして活躍できるのです。
Q2 プログラムが書ければプログラミング的思考ができる?
この答えもNOです。
もちろん、実際にプログラマー、システムエンジニアとして働いている方であれば、プログラミング的思考力が身についている方がほとんどかと思います。
この2つには相関がありますし、なんとなく因果関係があるように思えます。
ですが、ほとんどは「プログラミングの手法習得」からプログラミング的思考を身につけたわけではありません。
「プログラミングを覚えても論理的思考は身につかない」のです。
プログラミングは「手段」
これは、プロの方もよく勘違いする事が多いのですが、プログラミングはあくまでも「手段」であり、「目的」ではありません。
プログラミングを学習することの本質は「問題解決する考え方を身に着ける」ことです。
プログラミングを身に着けることの一番大事なことは、「どうやってゴールにたどり着くかを考える」ことで、
道具をいかに使って目的を達成するかです。
例えば、DIYをしたいと思ったら工具や素材を買い揃えるところから始まると思いますが、
買って満足してしまう方も多いかと思います。
プログラミング言語習得を目的としている方はその「道具を買って満足した」のと同じで、
本来行くべき目的にたどり着いていないのです。
プログラミング「的思考」の本当の意味
プログラミング「的思考」は何かと聞かれると、いちばん近いのが「論理的思考を身に着ける」という事になります。
論理的思考のための3つの順序
論理的思考を身に着けるために大事な3つの要素があります。それが次の3つです。
- ゴールを定義する
- ゴールまでの順序を考える
- 順序を可視化する
1. ゴールを定義する
まず一番はじめにするのが「ゴールを定義する」という事です。
「なんだ、簡単じゃないか」とお思いの方も多いかと思いますが、きちんとした定義は難しいものです。
曖昧な定義のまま進めてしまう方が割といます。
例えば、あなたが「痩せる」というゴールを決めたとしたら、どんな状態をゴールとして設定しますか?
10kg痩せたらゴールという方もいれば、5kg痩せたらもういい、という方もいますし、
健康診断に引っ掛からなくなったらOKという方もいます。
このように、漠然としたゴール設定は自分だけであれば問題ありませんが、
他人を痩せさせたいと思った場合、ただ「痩せろ」ではあなたの望むダイエットは成功しません。
必ず「明確なゴール」を設定する事が大事ですし、この考えが身に付くと意思疎通がかなり楽になる事が分かったのではないでしょうか。
2. ゴールまでの順序を考える
ゴールを設定したら、今度はそこにたどり着くために何をするかを考えます。
ダイエットが目的なのであれば、運動したり食事制限をしたりするのが一般的でしょうか。
人によっては脂肪吸引なんて方もいるでしょう。
無理な食事制限や過度な運動は逆効果ですので、バランスよく実施するのが効果的です。
3. 順序を可視化する
最後に、やる事を明確にします。
- 1日10km走る
- 夕食は白米抜き
- 15時のおやつはナッツのみ
これが、
- 毎日走る
- 白米は食べない
- おやつはナッツ
のように曖昧な表現だと、ダイエットの成功率は下がってしまいます。
つまり、「誰でもわかるように明確な表現をする」というのがここでのポイントになります。
さて、プログラミング的思考と繋がるのはどこ?
さて、3つの要素を解説しましたが、プログラミング的思考と最も密接なのは3つのうちはどこだと思いますか?
全部!とお答えしたいところではありますが、プログラミング教育のキモになっている部分は
2. ゴールまでの順序を考える
です。
プログラミング教育では、「問題解決能力」の向上をはかって実施さますので、
3つの中であえて近いとしたらこの部分になります。
つまり、教育のキモとしては「順序(ロジック)をどう組み立てるのか」という事がメインとなります。
ちなみに、「3.順序を可視化する」は実際のプログラミングに相当する手順となりますので、
プログラミング教育の中で実際にプログラミングをするとなった場合にはこの部分も大事になります。
おそらく「1. ゴールを定義する」については先生から提示される事になりますが、
慣れてきたらゴールの定義から自分たちで行う事が増えていくかもしれませんね。
勉強させたいと思う親の気持ち
さて、教育内容について解説を行ってきましたが、どんな勉強をさせたら良いのでしょう?
目的を作れば勉強がはかどる
プログラミング教育に限らないのですが、目的を持つと学習は捗ります。
国語や算数、社会といった一般科目の場合には目的設定が難しいかもしれませんが、
プログラミングであれば、何か目に見えるものを成果として設定できますので、
まずは学校の勉強から離れた課題を決めてあげると良いでしょう。
何か作ってみよう
せっかくDIYをするために工具を買ったのですから、ベランダに置く椅子を作るのもいいですね。
それと同じように、プログラミングならゲームを作るのもいいですし、ロボットを動かしたりするのも楽しそうですね。
ゲーム感覚で進める事ができるプログラミング教材もたくさんありますので、まずはそこからチャレンジしてみてはいかがでしょうか。