プログラミング的思考とはなにか? どうしてプログラミング的思考が必要なのか?

2020年度より必修化されるプログラミング教育。今回は「プログラミング的思考とはなにか」について、Z会プログラミング教育担当が解説します。

 

これから行われることになる「プログラミング教育」において忘れてはならないキーワードが「プログラミング的思考」です。プログラミングに慣れることも大切な要素ではありますが、「プログラミング的思考」が何であるのかの理解なくしては、「プログラミング教育」への理解を誤ります。それではこの「プログラミング的思考」とは何なのでしょうか。

 

 

「プログラミング的思考」とは

小学校における「プログラミング教育必修化」の最大の目的は「プログラミング的思考」を身につけることにあります。文部科学省から出された「学習指導要領解説」には次のような説明があります。

子供たちが将来どのような職業に就くとしても時代を越えて普遍的に求められる「プログラミング的思考」(自分が意図する一連の活動を実現するために、どのような動きの組合せが必要であり、一つ一つの動きに対応した記号を、どのように組み合わせたらいいのか、記号の組合せをどのように改善していけば、より意図した活動に近づくのか、といったことを論理的に考えていく力)を育むため、小学校においては、児童がプログラミングを体験しながら、コンピュータに意図した処理を行わせるために必要な論理的思考力を身に付けるための学習活動を計画的に実施することとしている。

長い文章ですが、骨格は「プログラミング的思考を育むために、論理的思考力を身につける」ということです。つまり、「論理的思考力」を磨いていくことで「プログラミング的思考」に至ると読むことができます。そしてその「プログラミング的思考」は、単純に捉えるのであれば「論理立てて説明する」「説明は記号などを用いて端的に」「試行錯誤しながら最適解を探る」ということでしょう。このような力は特別なものではなく、例えば「料理とプログラミングって実は…!?中高生のうちに身につけておきたい、プログラミングの考え方やスキルとは」で紹介した「料理のレシピ」を思い浮かべても、身近なところで見られるものです。

 

(1)にんじんは7mm厚さのいちょう切りにする。
(2)玉ねぎは1cm幅に切る。
(3)フライパンにバター大さじ1/2を熱し、豚肉、(1)、(2)を炒める。
(4)玉ねぎがしんなりしたら、残りのバターを加え、カレー粉と小麦粉をふり入れて炒める。
(5)(A)、(B)を加え、沸騰したら弱火で時々混ぜながら10~15分煮る。

キッコーマン「ポークカレー」レシピより
※(A)、(B)は別に調合した調味料

レシピは料理の作り方を順序よく、端的に説明したものです。この例でも「(A)、(B)を加え、……」としているように、記号を使って端的な説明をすることが多いでしょう。「柔らかくなるまで」という部分では、実際には何度も串を刺して柔らかくなっているかを判断しますから、ここでは「試行錯誤しながら最適解(最適な柔らかさ)を探」っています。

このように、「プログラミング的思考」は特別なものではありませんし、これからの時代、さらに必要になっていくのは間違いありません。

 

 

学校外での「プログラミング」の習い事は必要なのか?

ここまで説明してきたことで、少なくとも小学校で取り入れられる「プログラミング教育」は、多くの方が想像するようないわゆる「コーディング」を教える授業でないことはご理解いただけたかと思います。しかし、そうだとするのであればこのような疑問が生じます。

「学校外で行われている『プログラミング』の習い事は、本当に必要なのだろうか?」

もしこの質問が「学校の授業について行くためには」という文脈でなされたのであれば、答えは「ノー」です。小学校でも、これから考えていく中学や高校でも、「授業について行くために」プログラミングを学習する必要はありません。「学校の授業について行くために書道を習うか」という質問を考えてみればおわかりいただけるでしょうか。確かに、小学校では書写の授業があります。高校に入ると、芸術科目で「書道」の単位が設定されています。あるいは、どの授業であっても「字を書く」という行為は欠かせません。それでも「書道教室に通っていたことで学校の授業について行けた」ということは考えづらいでしょう。プログラミングでも同じことが言えます。

しかし、「本当に必要なのか」という質問が「子どもの将来のために」という文脈でのものであるのならば、決して「ノー」とは言えないはずです。英会話をイメージするとわかりやすいかもしれません。英会話の習い事をさせる人は少なくありませんが、その根底にあるのは「英語ができないと将来の選択肢が狭まってしまう」という思いがあるからでしょう。英語そのものを仕事としなくとも、これからの時代、仕事で英語を使う機会がこれまで以上に増えることは十分に考えられます。それはプログラミングでも同様で、エンジニアやプログラマーといった職業に就かなくても、業務の工程に「プログラミング」が入ってくるために「プログラミング」がどのような行為であるのかを知っておく必要がある場面も考えられます。

もちろん、未来のことなど誰にもわかりません。AIの発達が人間から「プログラミング」という作業を取り上げてしまうかもしれません。しかしそれでもなお、そのAIを作るためには「プログラミング」が必要なのです。直接触れるかどうかは別にして、「プログラミング」とは何であるのかを知っておくことは絶対に必要なのだと言えるでしょう。それでは、「知る」のはいつが好ましいのか。その気になったときが、タイミングなのかもしれません。

 

 

プログラミング教育における論理的な思考とは何か

話を「プログラミング的思考」に戻します。「プログラミング的思考」が大事であることは感覚的に理解できても、それでもなお「本当にこうしたものを学校で扱う意味はあるのだろうか」という疑問を持つ人もいることでしょう。この疑問への答えとして、東京工業大学名誉教授で「ICT CONNECT21」会長の赤堀侃司先生が発表した論文を紹介します。

2018年に赤堀先生が発表した論文「プログラミング教育における論理的な思考とは何か」(*)では、大学生を対象に「プログラミングの問題に対する正解率と、他教科の問題の正解率」の相関関係を調べています。「プログラミング」の問題として (1)フローチャート(流れ図)を作成する問題 (2)電車の切符を買う文章を読んで、画面を設計する問題 の2種類を、教科の問題として国語、算数、理科、社会の問題を用意し、それぞれの正答率に相関関係があるのかを調べたものです。

その結果、フローチャートの作成と数学・理科の正答率に相関が、設計の問題では国語・社会の正答率に相関が見られました。また、「プログラミング」の2種類の問題の間にも相関がありました。ここから推測できるのは、「プログラミング」に求められる能力は理科・数学に近いもの、国語・社会に近いものがあるということ。つまり「プログラミング」の能力をつけるためには、コンピュータのことだけを学べばよいのではなく、教科横断型に学んでいくことに意味がありそうだということでしょう。この調査だけでは因果関係(理・数ができるからフローチャートが得意なのか、フローチャートが得意だと理・数が得意なのか)はわかりませんが、求められる能力は似ているのではないかということは推測できます。そうなのだとすれば、「プログラミング」をするための能力の土台作りの段階では、教科学習の中で「プログラミング」を扱うことにも意味があると言えるでしょう。

(*)赤堀侃司(2018) プログラミング教育における論理的な思考とは何か, 学習情報研究,261(2018.3),56-61

 

 

「プログラミング教育」はどのように続いていくのか

本稿ではこれまで、新しい学習指導要領をベースに小学校における「プログラミング教育」について考えてきました。改めてポイントを整理すると

  • 教科の中で扱われ、より教科の理解が深まる
  • コーディングの教育ではない
  • プログラミングに必要な「思考」を学ぶためのものである
  • 「生きる力」につながるものである
  • キーボードに慣れておくことは必要

このようなことが言えます。まずは「プログラミング」に触れ、将来どのようなものにでも生かせる土台とすることが目的です。

さて、小学校段階で何が行われるのかはなんとなく見えてきました。それでは、その先はどうなっているのでしょうか。中学校、高等学校、そして大学では? 「当面は関係ない」と思わないでください。新しい指導要領が制定されると、およそ10年間はその指導要領をもとにした指導が行われます。つまり今回の指導要領改訂で、今後10年間の「プログラミング教育」のあり方が示されたのです。小学校での「プログラミング教育」ほどに注目を浴びているものではありませんが、この機会に「その先」についても考えてみましょう。

 

【次回予告】

「プログラミング教育」を行うのは小学校に限りません。これまでも限定的ながら行われていた中学校、高等学校でも、より広く、深く扱うことが求められています。次回は中学校ではこれまでどのような「プログラミング教育」が行われてきたかを振り返り、今後どのような「プログラミング教育」が行われていくのかを考察します。

 

 

お問い合わせ

お問い合わせ

*お問い合わせの際は、「講座名」「お名前」「ご用件」の3点を最初にお知らせください。
*下記のお問い合わせ先は、Z会の通信教育 お客様センターとは異なります。
*曜日・時間帯によってお電話がつながりにくい場合があります。

Web上でのお申し込み方法、Z会Asteriaの対応端末・推奨環境、ログインやアプリに関するお問い合わせ

【Z会テクニカルサポートセンター】

0120-636-322
月曜~土曜 月曜~土曜 10:00~20:00
(年末年始を除く、祝日も受付)

Z会Asteriaのご受講・講座内容
に関するお問い合わせ

【Z会Asteria事務局】

0120-83-0022
月曜~土曜 10:00~12:00、13:00~18:00
(年末年始を除く、祝日も受付)

WEBでのお問い合わせ

お問い合わせフォームはこちら