目的から考える「プログラミング教育」

2020年度より小学校で必修化された「プログラミング教育」

巷では「プログラミング言語やコーディングを学ぶ」という誤解も大分解けつつあるようですが、依然その具体的な内容が分からない、という声をちらほら耳にします。プログラミングを活用した教育、と言われてもイメージが掴めない方も多いようです。

そこで今回は、プログラミング教育の中核を成す「プログラミング的思考の紹介を交えながら、日本の教育における新たな学習像を取り出してみたいと思います。プログラミング教育導入の狙いは、そもそも何処にあったのでしょうか。

本記事をお読み戴ければ、現代におけるプログラミング教育の意義がお分かり戴けると思います。
また同時に、これまでの教育ときちんと連続した取り組みであり、何か際立って新しいことをするわけではないということ、神経質に身構える必要はないこともお伝えできれば幸いです。

「プログラミング教育」は「プログラミング言語やコードの学習」ではない。

まず、改めて確認しておきましょう。「プログラミング教育がプログラミング言語やコードの学習ではない」ことは、学習指導要領を見ればとりあえず分かります。

小学校段階において学習活動としてプログラミングに取り組むねらいは,プログラミング言語を覚えたり,プログラミングの技能を習得したりといったことではなく,論理的思考力を育むとともに,プログラムの働きやよさ,情報社会がコンピュータをはじめとする情報技術によって支えられていることなどに気付き,身近な問題の解決に主体的に取り組む態度やコンピュータ等を上手に活用してよりよい社会を築いていこうとする態度などを育むこと,さらに,教科等で学ぶ知識及び技能等をより確実に身に付けさせることにある。

『小学校学習指導要領解説 総則編』, pp.85-86.

ここにはプログラミング教育の狙いが既に同時に記述されています。学習指導要領は一文一文が長い上にどうも整理されていない印象があるのですが(整理された列挙は他の資料で行うということかも知れません)、大雑把にまとめるとこんな具合でしょうか。

  1.  論理的思考の育成
  2.  プログラムの仕組みと有用性に関する理解促進
  3.  プログラムを利用する態度の涵養
  4.  知識・技能のプログラミングを介した獲得

これだけだと、まだ「何故プログラミング教育を実施するのか」はよく分かりません。プログラムを理解して利用するためにプログラミングを学ぶ、というのは言ってみれば当たり前で、そもそも何故プログラミングを取り上げるのかが見えて来ないからです。

では、何故プログラミングが取り上げられることになったのでしょうか?
その答えは「プログラミング的思考」という言葉にあります。

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

この「プログラミング的思考」も、学習指導要領で使われている言葉です。先ほどの引用のすぐ前の箇所を引用しておきましょう。

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

上掲書, p.85

ここも簡単にリスト化しておくと、次のようになりそうです。

  1.  意図を実現するために、求める結果を複数の要素に分解して捉える力
  2.  複数の要素を組み合わせることで、意図を実現する力
  3.  1、2を論理的に思考し表現する力

1と2は裏表の関係になるので、まとめて言えば「物事は複数要素の組み合わせにより成り立っている」という観点の下で物事を捉え、組み立てる思考が「プログラミング的思考」であることになります。
どんな大きな仕事も、分解していけば小さな仕事の積み重ねで成り立っている。それを踏まえて、求める結果のためには何が必要で、どんなプロセスで組み立てていけばいいのかを思考し、実行する力。これが、文部科学省が現代において必要だと考える能力だということですね。

さてしかしこの「プログラミング的思考」も、よく考えれば複数の要素の組み合わせで成り立つ思考です。具体的には何ができれば、結果としてのプログラミング的思考は身についていくのでしょうか。次はこのことを見てみたいと思います。

「プログラミング的思考」の構成要素

今しがた取り上げたばかりの「プログラミング的思考」ですが、実はこれには元ネタがあります。別に文部科学省も隠しているわけではなく、公開されている「小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ)」という2016年の資料に、プログラミング的思考は「いわゆる「コンピュテーショナル・シンキング」」を踏まえたものだときちんと書いてあります。これが元ネタというわけですね。

この「コンピュテーショナル・シンキングcomputational thinking」は、イギリス(イングランド)発の用語であり、またイングランドは初等教育機関におけるプログラミング教育の先駆けでもあります。牽引役となっているCAS(Coumuting at School)で公開されている資料によれば、「コンピュテーショナル・シンキング」は次のように分解できるとのことです。

整理は藤野による。

ここまで分解すると、だいぶ全体像が見えてきますね。この図を基に改めて整理すると、こんな具合です。

  1.  問題解決に無関係な要素を取り除く。【モデル化】
  2.  問題を構成要素に分ける。【分解】
  3.  類似性やパターンを特定する。【一般化】
  4.  順序や規則に基づく手続きとして解法を考える。【アルゴリズム思考】
  5.  考えた解法を改善していく。【評価】

これこそ正に、プログラミングを通じて我々が問題を解決しようとする時に実行しているプロセスだ、というわけです。しかし、ちょっと考えて見ると、これは別にプログラミングに限った話でもないことに気づくでしょう。
よくプログラミング教育の例として「料理の手順」が持ち出されるのですが、この例は次のようなものを含んでいます。

  1.  【モデル化】カレーを作るとする。
      その時、ジャガイモの品種やカレールーの銘柄などは考えなくてもよい。
  2.  【分解】カレーの作り方に含まれる作業を取り出す。
      「ルーを作る」や「米を炊く」をはじめ「切る、焼く、煮込む、炊く」など。
  3.  【一般化】既知の事柄と関連付ける。
      切り方や焼き方は既に知っているのでそのまま使える。
  4.  【アルゴリズム的手法】手順を明確にする。
      煮込んでから切るわけにはいかない。正しい順番を考える。
  5.  【評価】レシピの改善。
      煮込み時間の調整や具の大きさを理想に近づけていく。

「コンピュテーショナル・シンキング」や「プログラミング的思考」は、プログラミングに限らず日常生活の様々な場面に顔を出す問題解決の手法だということです。そして、現代の情報科学等の発達を視野に入れるとこの手法は非常に汎用性が高く、それこそプログラミングを利用するためには是非とも身に付けるべき素養だということになる。

これで、大体の答えは出てきました。プログラミングを学ぶことで、プログラミング的思考という問題解決の手法を身に付けること。それが日本におけるプログラミング教育の要諦であり、従って必ずしもプログラミングそのものに拘っているわけではないのです。この辺りにプログラミングという学習方法に拘りを見せるイングランドとの差があるのですが、日本はあくまで結果的に見につけるべき思考法を重視しているということですね。

教育の連続性と、ちょっとした意見

こうした事情と、上に見た「プログラミング的思考」が学習指導要領において「思考力、判断力、表現力」の新しい形として提示されていることを考え合わせると、旧来の小学校教育が発展した先にあるものとしてプログラミング教育が位置付けられていることも見えてきます。実際、既にみた通りプログラミング的思考はプログラミングの時にだけ現われる特別な思考ではないのです。物事をプログラミング「的」に捉え、考えることが目的であるということは、強調しておいてよいと思います。プログラミングを学ばなくともプログラミング的思考は身に付きます。

さてしかし、このことが「これまで通りでよい」という意味で解されてしまうだとすれば、そこには大きな誤解があると言わざるをえないでしょう。少なくとも教える側は、プログラミング的思考に子供たちが親しむことができるよう意図的にカリキュラムを再整備して行かねばなりません。連続性があることは確かですが、しかしこの国の教育がまた1つ舵を切ったこともまた確かです。目的地のイメージを踏まえた教育実践が、これから次々と現れることでしょう。

もう1つ、これは個人的な不安でもありますが、今回の「日本式プログラミング教育」の在り方には何処か公教育領域におけるICT環境整備の遅れと結び付きがあるように感じています。プログラミング的思考はプログラミングを学ばなくとも身に付く。「だから」ICTの導入は先延ばしでもいいじゃないか……もしこんな意図があるとすれば、それは欺瞞であり誤りであると私は考えます。

必要か必要でないかで議論するなら、原理的に言えば学校教育自体が必要ではありません。教育基本法すら、学校に通う義務を定めているわけではないのです。そうではなく、善いか悪いか。必要な教育ではなく、善い教育を実現したい。そのために行動していきたいと思います。

コメント