コラム

宮島 衣瑛 第2回「小学生がプログラミングを学ぶとは、どういうことか?」

MYLABのカリキュラム監修をしている、株式会社 Innovation Power の宮島衣瑛です。
2020年から、小学校でプログラミングを学ぶことが必修化されました。ここでは、改めて、「小学校において、プログラミングを学ぶとはどういうことなのか」についておさらいしておきたいと思います。

日本のプログラミング教育

 プログラミング教育について、公の場で議論がはじまったのは2016年くらいのことでした。この議論がはじまって、「子どもたちにとって、プログラマが勉強するような内容を勉強しても意味がないのではないか」というものと、「Scratchのような子ども向けのプログラミングツールを使っても子どもはプログラミングをできるようにならないのではないか」という、2つの批判が噴出しました。

 これらの批判に答えるために、「プログラミング教育」がそもそもどのようなものなのかを踏まえた上で、そのあり方について考えてみたいと思います。まず、文部科学省が「小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ)」という資料を2016年の6月に出しています。

小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ)

 これが日本のプログラミング教育を考える際に、一番基本となるものです。資料では、小学校におけるプログラミング教育が、以下のように定義されています。

プログラミング教育とは、子供たちに、コンピュータに意図した処理を行うよう指示することができるということを体験させながら、将来どのような職業に就くとしても、時代を超えて普遍的に求められる力としての「プログラミング的思考」などを育むことであり、コーディングを覚えることが目的ではない。

プログラミング教育とエンジニア教育

 「プログラミング教育」という言葉は、様々な意図を含んでいます。典型的なものには、職業訓練教育の一環としての「エンジニア教育」があります。エンジニア教育は、プログラミングを覚えて、それを用いた専門的な仕事ができるようになることが目的です。例えば、iPhoneのアプリを作るためにはSwiftと呼ばれる言語を扱えなければならないし、webページを作るなら、HTMLやCSS、PHPといった複数の言語を扱えるのが望ましいです。エンジニア教育は、これらの言語を扱うようなプログラミングの「専門家」を目指したり、趣味で開発をしてみたいと思う大人向けのプログラミング教室が対象としている領域です。

 

 一方で、これから学校教育の中で行われようとしているプログラミング教育は、プログラミングを用いていく中で、コンピュータの扱い方などを含めたリテラシーを学んだり、プログラミングをしていく中で「どのようにプログラミングをしたら意図したように動くだろうか」といった思考力を育むことなどを意図しています。つまり、小学校で行われるプログラミング教育は、専門的な言語を用いてコーディングを学ぶことを主なゴールとしていないのです。学校の音楽教育において、全員がピアノを流暢に演奏できることが目標でないように、プログラミング教育では、全員がコーディングを完璧にできるようになることが目標とはなりません。

 ここで注意しておきたいのは、エンジニア教育が悪い、プログラミング教育が良い、という軸で判断するのではなく、学ぶ対象や場、条件などによってどちらが中心になるかが違う、ということです。

プログラミング的思考と創造

 先ほどご紹介した「議論の取りまとめ」に、「プログラミング的思考」という言葉が出てきます。「プログラミング的思考」というのは、構造をとらえて細分化し、それを再構築する力です。

頭の中で、いま目の前にあるものがどういうふうに作られてるのか、どんな手順を追ってつくられているのかがわかれば、それを再構築して作ることができます。

 例えば、カレーライスを作る際には、お肉や野菜、カレー粉などの材料が必要になります。そして、調理するときにもお肉を炒めてから野菜を入れ、最後にカレー粉を入れて煮込むといった順番が存在します。この順番を間違えるとおいしさが半減したり、最悪料理が完成しないといったこともあるかもしれません。

これと同じように、ある物事がどのように作られているのかを分解して捉えることが、プログラミング的思考で、それを再構築する作業がプログラミングそのものとなるのです。

  コンピュータでは、コピー&ペーストしたり、間違った時にやり直したり、最悪何をやっているかわからなくなってしまったら最初から作り直すことも可能です。現実世界ではノートに一度ペンで絵を描いてしまったら、消すことは簡単ではないではないでしょう。

しかし、コンピューターは「のり」にも、「紙」にも、「ペン」でも、何にでもなることができます。それどころか、Scratchはそれらのツールを超えた利便性があるのです。例えば絵を描いたら、今度はそれを動かしたりおしゃべりできるようにしたり、色を塗り直すことだってできるのです。現実世界を超えて、コンピューターの中はより自分の思った理想の何かを作り上げることのできるポテンシャルが備わっていると考えても良いでしょう。子どものうちからScratchのような、プログラミング的思考を鍛え、創造力を育むことができるツールに慣れ親しんでいれば、より一層現実世界でも創造力を爆発させることができるでしょう。

小学生にエンジニア教育を行わない理由

 ビジュアル言語を用いたプログラミング教育だったとしても、最初はコンピューターの扱い方をやったり、コードの書き方やルールなどを学んでいきます。その中で操作やルールに戸惑いを覚える子どもも一定数います。しかしそれ以上に、アルファベットを用いた言語を使用したり、ルールとして覚えなければならない複雑な操作が多いことから、エンジニア教育は簡単なものではありません。よって、大半の小学生は、エンジニア教育で用いられているような言語を通してコーディングを学ぶのは難しいでしょう。仮にエンジニア教育としてコーディングを学んだとしても、「仕様」という自分自身で理解できないルールに振り回されて失敗を重ねることで興味を失ってしまったり、嫌いになってしまうということがあります。

 また、この「仕様」がもたらす負の側面をもう一つ挙げると、例えばiPhoneアプリを作る際に使うSwiftという言語は、毎年仕様が変わります。今まで学んでいた常識が1年で違うもの、あるいは間違ったものへと変化していくのです。このように変化が激しい世界で、小学生が職業訓練としてプログラミング言語を学んだとしても、就職する頃には無意味なものとなっていることもあるのです。

 こういったことから、小学生はコーディングを学ぶのではなく、「時代を超えて普遍的に求められる資質・能力」として、「どのように操作したら自分の思った通りに動くのだろうか」「プログラミングをしてどのようなものを作ろうか」と考える、「プログラミング思考」を学ぶべきだと思います。Scratchの開発者であり、クリエイティブ・ラーニングという学習理論の提唱者でもある、MIT(マサチューセッツ工科大学)のミッチェル・レズニックさんは、変化が激しく、不確実性の高い現在において、「創造的に考えて行動する力」を育むことが重要だと言っています。MYLABは、「創造的に考えて行動する力」を育むことを目指していますが、「創造性」の源は「楽しさ」です。クリエイターやアーティストと言われる人たちは、「楽しさ」など、プラスの感情から作品を生み出すことができるのだと思います。

 「楽しい」というようなプラスの感情がはたらくことを大事にする場というのは、あまり存在しません。例えば、習い事は他人より優れたり、競争に勝つことがゴールであったり、塾に通うことは、受験で点数を高く取り合格することがゴールであったりします。誰かと比較され、劣っていたり低いと思われることを「楽しい」と感じる人はいないでしょう。学校教育でも、授業を受け内容を覚えた後はテストを受けますが、あまりに点数が低かったら、他人が遊んでいる中で残されて一人で再テストを受けたり、補習を受けなければならないこともあるでしょう。

 創造的に考えて行動する力を育むために、「楽しみながらものを作る」という経験はとても重要ですが、学校ではクラスの中にある授業のルールを守ったり、授業時間が限られているという制約があることから、理想を全て完璧に実現するのは難しい側面も持っています。ですのでMYLABのような、自分自身と向き合って楽しんで創造をできる場が存在することはとても重要なことだと思います。

宮島 衣瑛(みやじまきりえ)
株式会社 Innovation Power 代表取締役社長CEO
学習院大学大学院人文科学研究科教育学専攻博士前期課程

1997年5月生まれ。プログラミング教育を始めとするICT教育全般についてのR&D(研究開発)を行っている株式会社 Innovation Power のCEO。2017年4月より柏市教育委員会とプログラミング教育に関するプロジェクトをスタート。市内すべての小学校で実施するプログラミング学習のカリキュラム作成やフォローアップを担当。2017年11月より一般社団法人CoderDojo Japan理事。大学院ではコンピュータを基盤とした教育について研究している。