2020年度から小学校での「プログラミング教育」が必修化となり、最近、特に必要性が指摘されるようになってきたプログラミングについて、思考という観点からコラムを執筆したいと思います。
小学校教育ではプログラミング的思考をやしなう
小学校では2020年に「学習指導要領の改訂」でプログラミング教育が必修化されます。学習指導要領とは文部科学省が指導している全国共通の基準で、2020年以降は全国の小学校でプログラミングの授業が開始されることになります。
具体的な内容についてはまだ公表されていませんが、ひと昔前のようにパソコンの使い方、ソフトの使い方、マウスの操作といった内容だけではなく、「プログラミグ的思考」をやしなう内容に重点が置かれているとの事です。
http://www.mext.go.jp/a_menu/shotou/zyouhou/detail/1416328.htm
プログラミング的思考とは?
プログラミング的な思考とはどういう考え方なの?と疑問を持つ人は多いと思います。元来、「プログラム」という言葉は「プロ(pro)」と「グラム(gram)」に分けられ、プロ(pro)は事前の〜、というプレ(pre)の語源になっている言葉で、プレオープン、プレセール、などはよく使われる言葉ですよね。実は、プログラムという言葉の語彙は何もITやパソコン関連に限った用語ではなく「あらかじめ用意されたもの」という意味なんです。「今年の卒業式のプログラムは〜」や「今日の放送プログラム(番組)は〜」というように、あらかじめ計画されたもの、用意されているものというのが本当のプログラムの語彙になります。
プログラミング(programing)とは、プログラムにing(現在進行形)をつけた言葉なので、「あらかじめ用意されるものを作っていく事」という意味になります。プログラミング思考とは「あらかじめ用意されるものを作っていく思考」という事になるのですが、まだ何のことやらピンとこないですよね。
ここで下の図を見てください。
これは、プログラミング思考を習うときに一番最初によく紹介される事例です。イラストの人はゴールに辿り着きたいのですが、実行できる命令の種類としては「①前に進む」「②右を向く」「③左を向く」の3種類しかありません。
最短でゴールにつくためには、
- 命令1回目:①前に進む
- 命令2回目:①前に進む
- 命令3回目:③左を向く
- 命令4回目:①前に進む
- 命令5回目:①前に進む
- 命令6回目:②右を向く
- 命令7回目:①前に進む
- 命令8回目:③左を向く
- 命令9回目:①前に進む
- 命令10回目:②右を向く
- 命令11回目:①前に進む
- 命令12回目:①前に進む
という様に合計で12回もの命令を実行しなければなりません。こんな単純な道でもこの3種類の命令しかないので、とても効率が悪いですよね。そこで命令④を追加して「前に進み、行き止まりはどちらか空いている方を向く」という命令があればどうなるでしょうか?
- 命令1回目:④前に進み、行き止まりはどちらか空いている方を向く
- 命令2回目:④前に進み、行き止まりはどちらか空いている方を向く
- 命令3回目:④前に進み、行き止まりはどちらか空いている方を向く
- 命令4回目:④前に進み、行き止まりはどちらか空いている方を向く
- 命令5回目:④前に進み、行き止まりはどちらか空いている方を向く
- 命令6回目:④前に進み、行き止まりはどちらか空いている方を向く
- 命令7回目:④前に進み、行き止まりはどちらか空いている方を向く
- 命令8回目:④前に進み、行き止まりはどちらか空いている方を向く
この④の命令を実行することで8回の命令でゴールに辿り着くことができました。でもよく考えてみてください。命令は8回でも出している命令は全て④で同じです。この④の命令だけで辿りつける道であれば、もっと効率的になるはずです。そこで命令⑤「前に進み続け、行き止まりはどちらか空いている方を向き、さらに前に進み続ける」という命令があれば、
- 命令1回目:⑤「前に進み続け、行き止まりはどちらか空いている方を向き、さらに前に進み続ける
この1回の命令でゴールに辿り着くことができます。
もうご理解いただけたと思いますが、この例でいうところの「命令」が「プログラム」という事なんです。できるだけ少ない命令で効率的にゴールを目指す、そのためにはどんな「命令」を作らないといけないのか?というところがプログラミングをする(思考する)という事となります。
身の回りの物の多くはプログラムで動いています
インターネット検索、ホームページ、webサービスに限らず、テレビ、エアコン、携帯電話、洗濯機、信号機、ロボットなど世の中のあらゆるものは「プログラム」で動いています。炊飯器のスイッチを押すと「米と水の量を自動で計測して、もっとも美味しく炊ける熱量と時間を設定して加熱する」という具合にプログラムが動いているのです。このプログラムをどのように効率的に作っていくか?という考え方がプログラミング思考という事になります。そして実際の仕事の現場では、効率化だけでなく安定性も必要になってきます。
ここまで書いた私自身、前述したような最短でゴールを目指すスゴロク教材に触れたのは大人になってからでした。最初はそんなの当たり前じゃん、これ何の意味があるの?という感じで全然ピンとこなかったのですが、実際にプログラムを書いてwebサービスを作る仕事をこなすうちに、これってとても大事な考え方だったんだ、だから一番最初に習うんだな、という事が実感できました。
これからの将来を担う子供達が、小学校の頃からプログラミング思考に触れていくことは、必要且つとても大事な事だと思います。またその世代の子供達が大人になって社会で働く頃には、世の中のプログラムはさらに大きく発達している事でしょう。そうした将来を見据えつつ、自分達の技術スキルもさらに高めていきたいと思いました。
最後までお読みいただきありがとうございました。