「プログラミング教育」はコーディングを学ぶことが目的じゃない?

全国の小学校で「プログラミング教育」が始まると聞くと、「どんな授業が始まるのか」「そもそも先生が教えられるのか」など、さまざまな不安が出てくると思います。ここでは、CoderDojo Japanの理事であり、さまざまなプログラミング教育に関わっている筆者が、いま一度原点に立ち返って、プログラミング教育とはなにかをひもときます。

  • 「プログラミング教育」という言葉がダブル・ミーニング(二つの意味)をもっている
  • 「プログラミング教育」と「エンジニア教育」を分けて使うことを提案
  • 前者はコーディングを学ぶことが主な目的ではない、一方後者はコーディングを学ぶことが目的
  • 前者で使われるプログラミング的思考とは「構造を捉えて細分化し、それを再構築する力」

プログラミング教育の本当の姿

皆さんはじめまして。宮島衣瑛(きりえ)です。私は、当時高校1年生だった2013年5月から地元である千葉県柏市で、子どものためのプログラミング道場“CoderDojo”を主宰していたり、教育分野の研究開発事業を主に行っている株式会社Innovation PowerのCEOを務めていたり、全国176箇所(執筆現在)ある CoderDojo コミュニティを影で支える一般社団法人 CoderDojo Japan の理事をしている大学4年生です。大学では教育学科に在籍しており、小学校の教育について学んでいます。

また、2017年度から市内42校すべての小学校でプログラミング教育をスタートした千葉県柏市で行われている授業のカリキュラム作成に携わっていたり、北海道十勝地区で総務省の「地域におけるIoTの学び推進事業」を進めていたりと、プログラミング教育分野にはかなり長く・深く関わっています。まだ大学生ではありますが、これから何回かに分けて私が目指しているプログラミング教育の姿についてお話できればと思います。

プログラミング教育という言葉

さて、第1回の今回は「プログラミング教育」という言葉がもつ意味について考えてみたいと思います。

2020年から小学校で始まるプログラミング教育について私たちが話すときは、当然のように「プログラミング教育」という言葉を使います。一方、将来エンジニアを目指している人たちにアプリ開発やWebサイトの作り方などを教えることも「プログラミング教育」と呼びます。

私は、小学校でのプログラミング教育が世間(とくにプログラマや技術者の方々)にイマイチ賛同されていないのは、ここに原因があるのではないでしょうか。そこで、「プログラミング教育」と「エンジニア教育」を分けて使うことを提案します

小学校のプログラミング教育で目指していることは、是非はともかくとして「プログラミング的思考」の育成であり、コーディングを学ぶことが主な目的ではありません。それに対してエンジニア教育では、実際にプログラミングを使って働くことや、アプリやサービスを自分で作れるようになることがゴールですから、コーディングを学ぶことが目的です。この違いを明確に理解することが、プログラミング教育を理解することの第一歩だと思います。

プログラミング教育とエンジニア教育の根本的な差は、「ターゲット」と「場所」です。今までは私立小学校や研究推進校などでしか行われていなかったプログラミングを、2020年からは「すべて」の小学校で行うことになります。公教育で行うからには、それなりの正当性がなければなりません。つまり、この国のすべての子どもたちがプログラミングを学ぶ際に、何をゴールにすべきかを考える必要があるということです。音楽教育で全員ピアノを弾くことがゴールではないのと同じように、プログラミング教育にもプログラミングを使うことで発生する教育効果があるはずです。

プログラミング的思考

前述の通り、国はプログラミング教育によって、「プログラミング的思考」を育もうとしています。プログラミング的思考とは、

「自分が意図する一連の活動を実現するために、どのような動きの組合せが必要であり、一つ一つの動きに対応した記号を、どのように組み合わせたらいいのか、記号の組合せをどのように改善していけば、より意図した活動に近づくのか、といったことを論理的に考えていく力」

と定義されています。少しわかりにくいので、私なりの解釈で紹介します。

プログラミング的思考とは「構造を捉えて細分化し、それを再構築する力」のことです。何かゲームを作りたいなと思ったとき、完成した姿を頭の中で想像します。たとえばシューティングゲームを作ることを考えてみましょう。

  • 登場するキャラクターは自分と敵
  • 自機は左右キーをクリックすると移動し、スペースキーを押すとビームを発射することができる
  • 敵機はランダムに左右に動いて、もしビームにあたったら爆発する
  • 10点取れたらゲームクリア

このように、一言でシューティングゲームと言っても作るべき機能はたくさんあります。

ここで実際にやったように、構造を捉えて細分化することは、プログラミングをする上でとても大切です。そして、それを実際に作ることが「再構築」つまりプログラミングなのです。

頭の中で構築したイメージを実際にプログラムとして再構築するときには、想定していなかったようなことが起こったり、そもそもイメージが間違っていたなどの問題が発生します。プログラミングは、何度も元に戻したりコピーしたりできて、試行錯誤がしやすい点で優れています。自分なりに考えて手を動かして作っていく中でさまざまなことを学ぶことができるでしょう。

***

さて、今回は「プログラミング教育」と「エンジニア教育」の違いについて、そしてプログラミング的思考についてご紹介しました。次回は、教育用プログラミングツールとして最も使われている「Scratch」の開発思想から、プログラミング教育で目指すべきこととは何かについて考えたいと思います。

© Valed.press