「プログラミング的思考」って何なのさ?

突然ですが、⁠プログラミングなんて一度もやったことがないよ」という方に質問です。次のような野球ゲームをつくるには、どのようなスキルが必要だと思いますか?

タイミングよくバッターをクリックすればホームラン
タイミングよくバッターをクリックすればホームラン

パッと思いつくのはあの呪文のような横文字の羅列、⁠プログラミング言語を覚えていること」かもしれません。でも、たとえば「六法全書を丸暗記さえしていれば法廷で活躍できる」というわけではないですよね。ゲームをつくるときも同じで、頑張ってプログラミング言語の文法だけを学んでも「……で、この後どうすればいいの?」となりかねません。つまり、それだけでは不十分。個々の知識を目的の実現につなげていくための思考法である、⁠プログラミング的思考」こそが重要なのです。

「プログラミング的思考」という言葉は、2020年4月から小学校で必修化された「プログラミング教育」のキーワードとして、広く知られるようになりました。文部科学省のガイドラインでは、⁠プログラミング教育のねらい」として次の3つがあげられています。

プログラミング教育のねらい

  • 「プログラミング的思考」を育むこと
  • IT社会を支える情報技術に気付き、それをうまく活用できること
  • 各教科の学びをより確実なものとすること

ただ少し曖昧な言葉なので、人によって理解にばらつきがあることは否めません。本書ではできるだけ具体的な内容をイメージしやすいように、⁠プログラミング的思考」「プログラミングの手順」「プログラミングの技法」という2つの側面に整理しています。ここでは、⁠プログラミングの手順」の方を簡単にご紹介しましょう。

「プログラミングの手順」は、プログラムを作成するときに踏むことになる、次のようなステップのことです。このようなゴールまでの確かな道のりを描きだすことができる力が、ゲームをつくったりするときには求められます。

  • ①目標:やりたいことを決める
  • ②デザイン:目標の表現方法とそのために必要な道具を選ぶ
  • ③アルゴリズム:どのようにつくるのかを考える
  • ④組み立て:実際につくる

はじめての人が挫折してしまう原因の一つには、①~③の段階をおろそかにしてしまうということがあります。何をつくりたいのか、そのためには何が必要かを明確にしないまま、いきなり④に取り掛かろうとして、わけがわからなくなってしまうのです。

下に、冒頭の野球ゲームについて、③のステップでそのしくみを整理した図を掲載しました。ここまで来れば完成はもうすぐ、あとはプログラミング言語のルールに沿って組み立てていけばよいのです。

野球ゲームのアルゴリズムのイメージ
野球ゲームのアルゴリズムのイメージ

このような「目標までの筋道を描く力」が求められるのは、コンピュータ上でのプログラミングに限った話ではありません(本書では晩ご飯のカレーの準備にも「プログラミング的思考」を生かすことができることを紹介しました⁠⁠。身の回りの問題解決に広く応用することができる思考法だからこそ、将来プログラマーになりたい子はもちろん、そうではない子も義務教育で学んでおく必要があるとされているのでしょう。

私のように「プログラミングなんて一度もやったことがないよ」というまま学校を卒業してしまった人にとって、今の子どもたちの環境は羨ましくもあるかもしれません。新刊の体験してわかるプログラミング教育 うちの子の「考える力」が伸びるワケは、そんなオトナのための「プログラミング的思考」入門です。小学校の授業でも使われているScratchというプログラミング言語をつかって、楽しみながら子どもたちの学びを追体験してみませんか?