令和2年2月 文部科学省
はじめに~ なぜ小学校にプログラミング教育を導入するのか~
今日、コンピュータは人々の生活の様々な場面で活用されています。
家電や自動車をはじめ身近なものの多くにもコンピュータが内蔵され、人々の生活を便利で豊かなものにしています。
誰にとっても、職業生活をはじめ、学校での学習や生涯学習、家庭生活や余暇生活など、あらゆる活動において、コンピュータなどの情報機器やサービスとそれによってもたらされる情報とを適切に選択・活用して問題を解決していくことが不可欠な社会が到来しつつあります。
コンピュータをより適切、効果的に活用していくためには、その仕組みを知ることが重要です。
コンピュータは人が命令を与えることによって動作します。
端的に言えば、この命令が「プログラム」であり、命令を与えることが「プログラミング」です。
プログラミングによって、コンピュータに自分が求める動作をさせることができるとともに、コンピュータの仕組みの一端をうかがい知ることができるので、コンピュータが「魔法の箱」ではなくなり、より主体的に活用することにつながります。
プログラミング教育は子供たちの可能性を広げることにもつながります。
プログラミングの能力を開花させ、創造力を発揮して、起業する若者や特許を取得する子供も現れています。
子供が秘めている可能性を発掘し、将来の社会で活躍できるきっかけとなることも期待できるのです。
このように、コンピュータを理解し上手に活用していく力を身に付けることは、あらゆる活動においてコンピュータ等を活用することが求められるこれからの社会を生きていく子供たちにとって、将来どのような職業に就くとしても、極めて重要なこととなっています。
諸外国においても、初等教育の段階からプログラミング教育を導入する動きが見られます。
こうしたことから、このたびの学習指導要領改訂において、小・中・高等学校を通じてプログラミング教育を充実することとし、2020年度から小学校においてもプログラミング教育を導入することとなりました*1。
【本手引のねらい】
教師の皆さんがプログラミング教育に対して抱いている不安を解消し、安心して取り組んでいただけるようにすることが本手引のねらいです。
このため、本手引では、学習指導要領や同解説で示している小学校段階におけるプログラミング教育についての基本的な考え方などを、より具体的にかつ分かりやすく(できる限り専門用語を用いずに)解説しています。
本手引を参照していただくことによって、プログラミング教育のねらいやどのような授業が期待されているのかをイメージしていただけるものと考えています。
(プログラミング教育の位置付け)
本手引はプログラミング教育を対象として解説していますが、プログラミング教育は、学習指導要領において「学習の基盤となる資質・能力」と位置付けられた「情報活用能力」の育成や情報手段(ICT)を「適切に活用した学習活動の充実」を進める中に適切に位置付けられる必要があります(図1(p.6)及び第2章(3)(p.16)を参照)。
このことを前提に指導例(第3章)等を参照していただきたいと考えています。
(プログラミング教育に関するカリキュラム・マネジメントと本手引で示す指導例の対象)
学校の教育活動は、各学校の教育目標の下で、児童や学校、地域の実情等に応じて、各学校において創意工夫を生かした教育課程を編成して実施されるものであり、プログラミング教育も例外ではありません。
本手引を参考として、学習指導要領に例示された教科・学年・単元等に限定することなく、適切なカリキュラム・マネジメントの下で、各学校の創意工夫を生かしたプログラミング教育が展開されることが期待されます。
本手引においては、各学校における取組の参考となるよう、第3章において、学校の教育課程内におけるプログラミング教育のうち、ICTを用いて行う指導例(17例)を紹介しています(図2(p.7)を参照)。
まずはこれらを参考にプログラミング教育に取り組むことで、プログラミング教育のねらいを実感いただくとともに、徐々に他の授業での指導に取組を広げていただきたいと思います。
さらに、教育課程外の学習活動においても、プログラミングに関する多様な学習機会が、児童の興味・関心等に応じて提供されることが望まれます。
なお、本手引については、今後の教材の充実や各学校における実践の充実を踏まえて、また、官民が連携した「未来の学びコンソーシアム*2」の取組とも連携を図りながら、適時改訂を重ね、充実させていく予定です。
平成30年3月の第一版の公表以降、本手引等を踏まえ、先行的にプログラミング教育の実践に取り組む学校や教育委員会も増えてきており、これらを通じて、手引における説明の充実や指導例の追加を行うことが望ましい点が明らかになったため、第二版への改訂を行いました(平成30 年11 月)。
さらに、総合的な学習の時間において、企業と連携しながら、「プログラミングが社会でどう活用されているのか」ということに焦点をあてた授業の実践が行われており、それに関する指導例の追加を行うことが望ましいことや、プログラミング教育に必要なICT 環境・教材の整備や研修の留意事項等について説明を充実させる観点などから、第三版への改訂を行いました(令和2年2月)。
さらに、文部科学省では、本手引と併せて、「未来の学びコンソーシアム」の運営するWebサイト「小学校を中心としたプログラミング教育ポータル」(https://miraino-manabi.jp/)を通じて、本手引に掲載している指導例の具体的な実践事例を発信したり、教師用の研修用教材の作成・公開(https://www.mext.go.jp/a_menu/shotou/zyouhou/detail/1416408.htm)などの支援策も講じており、引き続き充実を図っていきますので、参照・活用ください。
これらにより、各学校における指導の充実が図られるとともに、授業で使いやすいプログラミング教材が充実し、更にそれらを活用した優れた実践事例が蓄積され普及されることが期待されます。
【プログラミング教育の円滑な実施に向けて】
2020年度からの小学校プログラミング教育の実施に向けて、各学校や教育委員会等においては、前述の「未来の学びコンソーシアム」Webサイトの実践事例や、教師用研修教材などを活用して、研修や教材研究等の準備を計画的に進めるとともに、学校のICT 環境整備について、学校情報セキュリティの確保も含めて、しっかりと進めていくことが望まれます*3。
特に、教育委員会においては、各学校における取組を促し支援する体制を整え、2020年度に向けた準備を、教育課程編成や学習指導等の側面とICT環境整備の側面との両面から計画的に進めることが必要であり、そのために必要な企業・団体や地域、教員養成系大学・学部等との連携にも積極的に取り組んでいただきたいと思います。
各学校においては、まずは、教師一人一人が、本手引を参照してプログラミング教育のねらいを確認し、授業のイメージをつかんでいただきたいと思います。
そして何より、教師が自らプログラミングを体験することが重要です。
「プログラミングは難しそうだ」という印象がもたれがちですが、今日、教育用に開発されたビジュアル型プログラミング言語*4 などの発展・普及により、児童も含めて多くの人々が容易に体験したり活用したりすることができるようになっています。
教師が自ら実際に体験することによって、プログラミングはそれほど難しいものではなく、むしろ面白いものだということが実感でき、さらに、授業でこんな使い方ができそうだというアイディアも湧いてくるものと思われます。
第1章小学校プログラミング教育導入の経緯
小学校段階における論理的思考力や創造性、問題解決能力等の育成とプログラミング教育に関する有識者会議「議論の取りまとめ」(平成28年6月16日)
↓
中央教育審議会「幼稚園、小学校、中学校、高等学校及び特別支援学校の学習指導要領等の改善及び必要な方策等について(答申)」(平成28年12月21日)
↓
小学校学習指導要領(平成29年3月31日公示)
↓
小学校学習指導要領解説総則編(平成29年6月21日公表)
小学校プログラミング教育の導入は、中央教育審議会における学習指導要領の改訂に向けた議論の中で検討されました。
中央教育審議会の議論では、情報化の進展により社会や人々の生活が大きく変化し、将来の予測が難しい社会においては、情報や情報技術を主体的に活用していく力や、情報技術を手段として活用していく力が重要であると指摘されています。
さらに、子供たちが将来どのような職業に就くとしても、「プログラミング的思考」などを育んでいくことが必要であり、そのため、小・中・高等学校を通じて、プログラミング教育の実施を、子供たちの発達の段階に応じて位置付けていくことが求められると指摘しています(参考1(p.65)を参照)。
中央教育審議会の議論と並行して、小学校段階における論理的思考力や創造性、問題解決能力等の育成とプログラミング教育に関する有識者会議(以下、「有識者会議」とします。)において、学習指導要領の改訂の方向性を見据えつつ、小学校段階において子供たちに論理的思考力等を育むためのプログラミング教育の在り方について、より詳細な議論がなされました。
有識者会議の「議論の取りまとめ」は、中央教育審議会における議論の土台となっています。
有識者会議「議論の取りまとめ」においては、情報技術を効果的に活用しながら、論理的・創造的に思考し課題を発見・解決していくために、「プログラミング的思考」が必要であり、そうした「プログラミング的思考」は、将来どのような進路を選択しどのような職業に就くとしても、普遍的に求められる力であるとしています。
そして、「プログラミング的思考」とは、「自分が意図する一連の活動を実現するために、どのような動きの組合せが必要であり、一つ一つの動きに対応した記号を、どのように組み合わせたらいいのか、記号の組合せをどのように改善していけば、より意図した活動に近づくのか、といったことを論理的に考えていく力」であると説明されています(参考2(p.66)を参照)。
さらに、プログラミング教育で育む資質・能力について、各教科等で育む資質・能力と同様に、資質・能力の「三つの柱」(「知識及び技能」、「思考力、判断力、表現力等」、「学びに向かう力、人間性等」)に沿って、次のように整理し、発達の段階に即して育成するとしています。
【知識及び技能】身近な生活でコンピュータが活用されていることや、問題の解決には必要な手順があることに気付くこと。
【思考力、判断力、表現力等】発達の段階に即して、「プログラミング的思考」を育成すること。
【学びに向かう力、人間性等】発達の段階に即して、コンピュータの働きを、よりよい人生や社会づくりに生かそうとする態度を涵養すること。
中央教育審議会答申を受けて、文部科学省は小学校学習指導要領を公示しました。
新しい学習指導要領では、総則において、情報活用能力を言語能力などと同様に「学習の基盤となる資質・能力」と位置付け、「各教科等の特質を生かし、教科等横断的な視点から教育課程の編成を図」り育成することと規定しました。
その上で、情報活用能力の育成を図るための学習活動の充実を図ることとして、特に小学校においては、「児童がプログラミングを体験しながら、コンピュータに意図した処理を行わせるために必要な論理的思考力を身に付けるための学習活動」を行うことと規定しました。
これを行うに当たっては、計画的に教育課程に位置付けて、各教科等の内容を指導する中で実施する、あるいは、教育課程内で各教科等とは別に実施することもできます。
なお、各教科等の内容を指導する中で実施する場合には、各教科等の特質に応じて実施する必要があります。(参考3(p.67)を参照)。
さらに、文部科学省は「小学校学習指導要領解説総則編」を公表し、情報活用能力が「プログラミング的思考」を含むものであることを示すとともに、小学校プログラミング教育のねらい等について解説しています(参考4(p.67)を参照)。
ここに示しているねらい等については、次章以降で述べていきます。
第2章小学校プログラミング教育で育む力
(1)プログラミング教育のねらい
小学校におけるプログラミング教育のねらいは、「小学校学習指導要領解説総則編」においても述べていますが、非常に大まかに言えば、1「プログラミング的思考」を育むこと、2プログラムの働きやよさ、情報社会がコンピュータ等の情報技術によって支えられていることなどに気付くことができるようにするとともに、コンピュータ等を上手に活用して身近な問題を解決したり、よりよい社会を築いたりしようとする態度を育むこと、3各教科等の内容を指導する中で実施する場合には、各教科等での学びをより確実なものとすることの三つと言うことができます。
プログラミングに取り組むことを通じて、児童がおのずとプログラミング言語を覚えたり、プログラミングの技能を習得したりするといったことは考えられますが、それ自体をねらいとしているのではないということを、まずは押さえておいてください。
1の「プログラミング的思考」及び2の「気付き」や「態度」については、この後の(2)で解説します。
3の「各教科等での学びをより確実なものとする」とは、例えば、算数科において正多角形について学習する際に、プログラミングによって正多角形を作図する学習活動に取り組むことにより、正多角形の性質をより確実に理解することなどを指しています。
また、これら1、2、3の三つのねらいの実現の前提として、児童がプログラミングに取り組んだり、コンピュータを活用したりすることの楽しさや面白さ、ものごとを成し遂げたという達成感を味わうことが重要です。
「楽しい」だけで終わっては十分とは言えませんが、まず楽しさや面白さ、達成感を味わわせることによって、プログラムのよさ等への「気付き」を促し、コンピュータ等を「もっと活用したい」、「上手に活用したい」といった意欲を喚起することができます。
さらに、学習活動に意欲的に取り組むことにより、「プログラミング的思考」を育むとともに、各教科等の内容を指導する中で実施する場合には、プログラミングを学習活動に取り入れることで、各教科等の学びも充実していくことが期待されます。
このためには、学習指導要領に示すとおり、児童がプログラミングを「体験」し、自らが意図する動きを実現するために試行錯誤することが極めて重要となります。
プログラミング教育の実施に当たっては、1、2をねらいとすること、各教科等の内容を指導する中でプログラミング体験を行う場合には、これに加えて3をねらいとすることが必要です。
もちろん、学習場面ごとに必要なねらいのいずれかに重点を置くということは考えられますが、小学校6年間を通じて必要なねらいのいずれかが全く欠けていた、ということは望ましくありません。
どのようにすれば「プログラミング的思考」を育み、「気付き」を促し「態度」を育むとともに各教科等の学びをより深めていくことができるのかについては、この後に述べていきます。
(2)小学校プログラミング教育で育む資質・能力
前章(p.9)で述べたように、有識者会議「議論の取りまとめ」では、プログラミング教育で育む資質・能力を、各教科等で育む資質・能力と同様に、資質・能力の「三つの柱」(「知識及び技能」、「思考力、判断力、表現力等」、「学びに向かう力、人間性等」)に沿って整理しています。これらについて、小学校の児童の発達の段階を踏まえると、次のように考えることができます。
1 知識及び技能
子供たちがコンピュータを用いて情報を活用したり発信したりする機会が一層増えてきている一方で、その仕組みがいわゆる「ブラックボックス化」しています。有識者会議「議論の取りまとめ」(参考2(p.66))の「子供たちに、コンピュータに意図した処理を行うよう指示することができるということを体験させながら」とは、そうした情報社会に生きる子供たちが、コンピュータに意図した処理を行うよう指示をする活動を通して、コンピュータはプログラムで動いていること、プログラムは人が作成していること、また、コンピュータには得意なこととなかなかできないこととがあることを、体験を通して気付かせることです。コンピュータが日常生活の様々な場面で使われており、生活を便利にしていることや、コンピュータに意図した処理を行わせるためには必要な手順があることに気付くことが、今後の生活においてコンピュータ等を活用していく上で必要な基盤となっていきます。
プログラムを作成する上でのアルゴリズム(問題を解決する手順を表したもの)の考え方やその表現の仕方、コンピュータやネットワークの仕組み、コンピュータを用いた問題の発見・解決のための知識及び技能等については、中学校や高等学校の各教科等で学習しますので、小学校段階では、こうしたことへの「気付き」が重要です。なお、有識者会議「議論の取りまとめ」では、プログラミング教育で育む知識及び技能について、小・中・高の学校段階に応じて、次のように示されています。
(小)身近な生活でコンピュータが活用されていることや、問題の解決には必要な手順があることに気付くこと。
(中)社会におけるコンピュータの役割や影響を理解するとともに、簡単なプログラムを作成できるようにすること。
(高)コンピュータの働きを科学的に理解するとともに、実際の問題解決にコンピュータを活用できるようにすること。
2 思考力、判断力、表現力等
有識者会議「議論の取りまとめ」(参考2(p.66))では、プログラミング教育で育む思考力、判断力、表現力等について、「発達の段階に即して、「プログラミング的思考」を育成すること。」としています。コンピュータに意図した処理を行わせるために必要な論理的思考力、すなわち「プログラミング的思考」を育成することは、小学校におけるプログラミング教育の中核とも言えますので、以下に詳しく解説します。
【「プログラミング的思考」とは】
有識者会議「議論の取りまとめ」において「プログラミング的思考」は、「自分が意図する一連の活動を実現するために、どのような動きの組合せが必要であり、一つ一つの動きに対応した記号を、どのように組み合わせたらいいのか、記号の組合せをどのように改善していけば、より意図した活動に近づくのか、といったことを論理的に考えていく力」と説明されています。
このことをコンピュータを動作させることに即して考えます。
コンピュータに自分が考える動作をさせるためには、1コンピュータにどのような動きをさせたいのかという自らの意図を明確にした上で、まず、2コンピュータにどのような動きをどのような順序でさせればよいのかを考えます。
この際、意図した一連の動きが、一つ一つの動きをつなげたものであることを理解する必要があります。
そして、3一つ一つの動きに対応する命令(記号)が必要であることを理解し、コンピュータが理解できる命令(記号)に置き換えた上で、4これらの命令(記号)をどのように組み合わせれば自分が考える動作を実現できるかを考えます。*5
さらに、5その命令(記号)の組合せをどのように改善すれば自分が考える動作により近づいていくのかということも試行錯誤しながら考えていきます。
1 コンピュータにどのような動きをさせたいのかという自らの意図を明確にする
↓
2 コンピュータにどのような動きをどのような順序でさせればよいのかを考える
↓
3 一つ一つの動きを対応する命令(記号)に置き換える
↓
4 これらの命令(記号)をどのように組み合わせれば自分が考える動作を実現できるかを考える
↓
5 その命令(記号)の組合せをどのように改善すれば自分が考える動作により近づいていくのかを試行錯誤しながら考える
(「正多角形をかく」場合について考える)
具体的には、例えば、コンピュータで正三角形をかこうとする場合を見てみます。
「正三角形をかく」という命令は通常は用意されていませんので、そのままでは実行できません。そこで、コンピュータが理解できる(用意されている)命令を組み合わせ、それをコンピュータに命令することを考えます。
紙の上に作図する場合、正多角形がもっている「辺の長さが全て等しい」、「角の大きさが全て等しい」、「円に内接する」、「中心角の大きさが全て等しい」のような正多角形の意味や性質などを使って作図します。
コンピュータで作図する場合にも同じことを考えます。
算数科の授業では円と組み合わせて作図しますが、ここでは、「辺の長さが全て等しく、角の大きさが全て等しい」という正多角形の意味を使って作図する場合を考えてみます。
この場合、「長さ100進む(線を引く)」、「左に120度曲がる」といったコンピュータが理解できる(用意されている)命令を組み合わせることで「正三角形をかく」ことができます。
さらに、もっと大きな正三角形をかきたければ、「長さ100進む(線を引く)」を、例えば「長さ200進む(線を引く)」というように修正します。
曲がる角度を変えることで、正六角形や正八角形もかくことができます。
また、図3(a)のように「長さ100進む(線を引く)」、「左に120度曲がる」を3回記述するという方法のほか、(b)のようにこれらを「3回繰り返す」と記述する方法もあります。
結果は同じですが、正六角形や正八角形をかくときを考えると後者の方が効率的です。
紙の上に鉛筆と定規、分度器やコンパス等を用いて正三角形をかくときも、用いる性質や手順そのものは異なるとしても、児童は同じように手順を考えた上で作図しているはずです。
図3 正三角形をかくプログラムの例
「プログラミング的思考」は、これらのことを「論理的に考えていく力」です(図4)。
前述の例「正多角形をかく」の場合、数学的な見方・考え方を働かせながら、「正三角形をかく」という意図した一連の活動(学習課題)に対して、図形に関する既習事項を活用して、正三角形をかくのに「必要な動きを分けて考える」、「動きに対応した命令にする」、「それらを組み合わせる」、「必要に応じて継続的に改善する」といった試行錯誤を行う中でプログラミング的思考を働かせています。
このように、児童は試行錯誤を繰り返しながら自分が考える動作の実現を目指しますが、思い付きや当てずっぽうで命令の組合せを変えるのではなく、うまくいかなかった場合には、どこが間違っていたのかを考え、修正や改善を行い、その結果を確かめるなど、論理的に考えさせることが大切です。
図4 プログラミング的思考を働かせるイメージ
(「プログラミング的思考」を育成する)
ここで、思考力、判断力、表現力等は、短時間の授業で身に付けさせたり急激に伸ばしたりできるものではないことに留意する必要があります。
「プログラミング的思考」は、プログラミングの取組のみで育まれたり、働いたりするものではありません。
思考力、判断力、表現力等を育む中に、「プログラミング的思考」の育成につながるプログラミングの体験を計画的に取り入れ、位置付けていくことが必要となります。
3 学びに向かう力、人間性等
有識者会議「議論の取りまとめ」(参考2(p.66))の「発達の段階に即して、コンピュータの働きを、よりよい人生や社会づくりに生かそうとする態度を涵養すること。」とは、児童にとって身近な問題の発見・解決に、コンピュータの働きを生かそうとしたり、コンピュータ等を上手に活用してよりよい社会を築いていこうとしたりする、主体的に取り組む態度を涵養することを示しています。
また、他者と協働しながらねばり強くやり抜く態度の育成、著作権等の自他の権利を尊重したり、情報セキュリティの確保に留意したりするといった、情報モラルの育成なども重要です。*6
(3)プログラミング的思考と情報活用能力
「プログラミング的思考」の育成を考える際、「情報活用能力」との関係を確認しておくことが重要です。新しい学習指導要領において、情報活用能力は、「学習の基盤となる資質・能力」と位置付けられ、「教科等横断的な視点から教育課程の編成を図」り育成することとしています。
そして、学習指導要領解説総則編においては、「情報活用能力」は、学習活動において必要に応じてコンピュータ等の情報手段を適切に用いて、情報を得たり、整理・比較したり、発信・伝達したり、保存・共有したりといったことができる力であり、さらに、このような学習活動に必要な情報手段の基本的な操作技能や、プログラミング的思考、情報モラル、情報セキュリティ等に関する資質・能力も含むものとしています。
こうした情報活用能力を育むためには、単にプログラミング教育を充実し「プログラミング的思考」を育めばよいということではなく、情報を収集・整理・比較・発信・伝達する等の力をはじめ、情報モラルや情報手段の基本的な操作技能なども含めたトータルな情報活用能力を育成する中に、「プログラミング的思考」の育成を適切に組み入れていく必要があります。
さらに、小学校段階では、コンピュータに関する専門的な知識等は求められませんが、プログラムの働きやよさへの気付きや、論理的に考えていく力である「プログラミング的思考」、コンピュータ等をよりよく活用していこうとする態度等は、その後の中学校や高等学校での学びに、とりわけ情報についての科学的な理解に基づいた情報活用能力の育成につながっていくものです。
このように、「プログラミング的思考」を含む情報活用能力を、児童生徒の発達の段階に応じて捉えていくことも重要です。
プログラミング教育により育む力をより詳細に整理する試みは、既に文部科学省の調査研究事業や学会等においても始められています*7。今後、各学校での実践を踏まえて研究が更に深められ、一層充実していくことが期待されます。
(4)プログラミング教育のねらいの実現に向けて
(1)で述べたように、プログラミング教育の実施に当たっては、プログラミングの体験を通して、1「プログラミング的思考」を育むことと、2プログラムの働きやよさ等への「気付き」を促し、コンピュータ等を上手に活用して問題を解決しようとする態度を育むこと、3各教科等の内容を指導する中で実施する場合には、各教科等の学びをより確実なものとすることをねらいとしていることを踏まえて取り組むことが重要です。
(カリキュラム・マネジメントの重要性)
プログラミング教育のねらいを実現するためには、各学校において、プログラミングによってどのような力を育てたいのかを明らかにし、必要な指導内容を教科等横断的に配列して、計画的、組織的に取り組むこと、さらに、その実施状況を評価し改善を図り、育てたい力や指導内容の配列などを見直していくこと(カリキュラム・マネジメントを通じて取り組むこと)が重要です。
プログラミングによって育てたい力を明らかにする
↓
必要な指導内容を教科等横断的に配列する
↓
計画的、組織的に取り組む
↓
育てたい力や指導内容の配列などを見直す
(カリキュラム・マネジメントの取組例)
既に複数の自治体において、「プログラミング的思考」を含めた情報活用能力を育成するためのカリキュラム・マネジメントに取り組んでいる例が見られます。
例えば、A市教育委員会においては、情報の収集・判断・処理・編集・創造・表現や情報モラルなど、情報活用能力の育成を意図したカリキュラムの中にプログラミング教育を位置付けています。
ここで情報活用能力を育成するいわば「核」となる時間として設定されている授業時数は各学年とも数単位時間程度であり、各学校において、この時間のほかにも教科・学年・単元等の特質に応じて情報活用能力を育むとともに、学習過程の中にICT活用を適切に位置付けることとされています。
プログラミングについて市教育委員会として示されているのは、学習指導要領に例示されている単元のほか、それに先立ってプログラミングを体験する時間を設けること程度であり、各学校においてそれぞれの実情を踏まえ、プログラミングに関する内容を追加することとされています。
また、B市教育委員会においては、プログラミング教育によって育てたい資質・能力を、資質・能力の三つの柱に沿って、低・中・高学年の発達の段階に応じて、明らかにしています。
その際、学習活動の前提となるコンピュータ等の操作技能の習得も考慮されています。
なお、一部の学習活動については、学校の裁量に委ね、各学校・教師の創意工夫が促されています。
各学年とも年間で3つの単元等でプログラミング教育に取り組むこととされており、無理なく取り組めるものとなっています。
いずれの例も、複数の教科・学年を見通して情報活用能力を育成することをねらいとし、既存の単元等の学習活動を見直して整理されたものであり、教育委員会において域内の学校での取組について一定の方向性を示したものです。
こうした先進事例も参考としつつ、各学校の実情等を踏まえながら、同様のカリキュラム・マネジメントに組織的に取り組むこと、教育委員会がそうした取組を支援しあるいはリードしていくことが求められます。
なお、プログラミング教育に関するカリキュラム・マネジメントを行う際には、(3)のとおり情報活用能力全体を見据えることが必要であり、そのためには、文部科学省の「次世代の教育情報化推進事業(情報教育の推進等に関する調査研究)」(IE-School)において作成した「情報活用能力の体系表例」を参考としながら行うことも考えられます。
プログラミング教育によって児童にどのような力を育むのかを考え、そのための場面や授業を設計し、そして目指す力を児童に育むことができたのかを見取る、といったことは教育の専門家である教師だからこそできることです。
その上で、企業・団体や地域等の専門家と連携し協力を得る(外部の人的・物的資源を活用する)ことは極めて有効です。
教師が学校外の専門家と積極的に連携・協力してプログラミング教育を実施していくことは、「社会に開かれた教育課程*8」の考え方にも沿ったものであり、積極的な取組が期待されます。
こうした企業・団体や地域等との連携の具体例等については第4章(p.52)で紹介します。
企業・団体や地域等の専門家と連携し協力を得る(外部の人的・物的資源を活用する)ことは、カリキュラム・マネジメントの一環としても重要なことです。
プログラミング教育を充実していくためには、学校外の人的・物的資源の活用について、学校全体で組織的に取り組むのはもちろんのこと、教育委員会が様々なかたちで各学校を支援し、リードしていくことも重要です。
このほかにも、カリキュラム・マネジメントを通じてプログラミング教育を進めていくに当たっては、以下に述べるように何点か留意すべき点があります。
ア コンピュータを用いずに行う指導の考え方
コンピュータを用いずに行う「プログラミング的思考」を育成する指導については、これまでに実践されてきた学習活動の中にも、例えば低学年の児童を対象にした活動などで見いだすことができます。
ただし、学習指導要領では児童がプログラミングを体験することを求めており、プログラミング教育全体において児童がコンピュータをほとんど用いないということは望ましくないことに留意する必要があります。
コンピュータを用いずに「プログラミング的思考」を育成する指導を行う場合には、児童の発達の段階を考慮しながらカリキュラム・マネジメントを行うことで児童がコンピュータを活用しながら行う学習と適切に関連させて実施するなどの工夫が望まれます。
イ プログラミング言語や教材選定の観点
プログラミング言語*9については、あたかもブロックを組み上げるかのように命令を組み合わせることなどにより簡単にプログラミングできる言語(ビジュアル型プログラミング言語)が普及しており、種類も豊富です。
マウスやタッチ操作が主で(表示させる言葉や数などはキーボードで入力します。)、ブロックの色で機能の分類を示すなど視覚的に把握しやすく、また、その言語の細かな文法を気にすることなくプログラムを作成することができますので、自分が考える動きを実現することに専念することができます。
多くの場合、児童は短時間で基本的な使い方を覚え、簡単なプログラムであれば作成できるようになります。この後の指導例においても、ビジュアル型プログラミング言語を用いて学習が展開されることを想定しています。
また、文字により記述する言語(テキスト型プログラミング言語)にも様々なものがあります。
キーボード操作が多く、それぞれの言語の文法の理解も必要となりますが、英数字だけでなく日本語で記述できるものや、文法的な誤りがあった場合には間違いを指摘してくれるものなど、児童でも比較的取り組みやすい言語もあります。
ある程度の授業時数を確保して取り組む場合や、プログラミングに強い興味・関心を示す児童については、こうした言語を活用することも考えられます。
プログラミングに関する教材についても多様なものがあります。
特定の単元等や学習内容に対応した教材の中にも、教科の内容をより確実に学習するためのツールとして用いることを想定しプログラミング自体はできる限り平易に行えるようにしたものから、プログラミング的思考の育成を強くねらったものまであります。
また、プログラミングの考え方や技能、特定のプログラミング言語の習得を目的とした教材もあります。
これらの複数の言語や教材の中から、それぞれの授業においてプログラミングを取り入れるねらい、学習内容や学習活動、児童の発達の段階等に応じて、適切なものを選択し活用することが望まれます。
児童の発達の段階や学習経験を踏まえて、児童の負担にならない範囲で、学習内容等に応じて使用する言語を変更することも考えられます。
また、プログラミング言語は、情報技術の進展の中で変化し続けていますし、新たな教材も次々と生み出されてきています。
より授業で使いやすい言語や教材を追求することや、実施する環境(ソフトウェアやハードウェア)を定期的に更新していくことも重要です。
(5)プログラミング教育の評価
プログラミング教育を各教科等の内容を指導する中で実施する場合には、第2章(1)(P.11)の1、2のねらいを達成するとともに、それぞれの教科等の学習をより深いものとすることが重要です。
プログラミングを実施した際の評価については、あくまでも、プログラミングを学習活動として実施した教科等において、それぞれの教科等の評価規準により評価するのが基本となります。
すなわち、プログラミングを実施したからといって、それだけを取り立てて評価したり、評定をしたりする(成績をつける)ものではありません。
その上で、(2)で述べたプログラミング教育で育む資質・能力なども参考とし、各学校がプログラミング教育で育みたい力を明らかにし、各教科等において「プログラミング的思考」等を育むことなど、プログラミング教育のねらいを達成するための学習活動を計画し実施して、児童の資質・能力の伸びを捉えるとともに、特に意欲的に取り組んでいたり、プログラムを工夫していたりなど、目覚ましい成長のみられる児童には、機会を捉えてその評価を適切に伝えること等により、児童の学びがより深まるようにしていくことが望ましいと考えられます。
また、教育課程内で各教科等とは別に実施する場合は、教科等の評価規準により評価したり、評定をしたりすることはありませんが、それ以外は前述と同様に児童を見取り、その評価を適切に伝えるなどすることが望ましいと考えられます。
第3章プログラミングに関する学習活動の分類と指導の考え方
この章では、小学校段階におけるプログラミングに関する学習活動の分類と、分類に応じた指導の考え方を、各分類におけるプログラミングに関する学習活動の例(以下「指導例」とします。)を挙げながら解説します。
指導例を参考として、「プログラミング的思考」の育成、プログラミングのよさ等への「気付き」やコンピュータ等を上手に活用しようとする態度の育成を図ることが望まれます。
さらに、各教科等の内容を指導する中で実施する場合には、これらに加え、それぞれの教科等の目標の実現を目指した指導に取り組むことが求められます。
プログラミング教育は、学習指導要領に例示した単元等はもちろんのこと、多様な教科・学年・単元等において取り入れることや、教育課程内において、各教科等とは別に取り入れることも可能であり、児童がプログラミングを体験しながら、コンピュータに意図した処理を行わせるために必要な論理的思考力を身に付けるための学習活動を行う必要があります。
この章に示す指導例を参考として、各学校において工夫して多様な場面で適切に取り入れていくことが望まれます。
さらに、プログラミング教育は教育課程外の様々な場面でも実施することが考えられます。
図5にプログラミングに関する学習活動の分類の一例を示しました。
これは、現在までに取り組まれた例を基に分類を試みたものであり、本手引では、教育課程内で実施されるA~D分類の指導例を示します。
図5小学校段階のプログラミングに関する学習活動の分類
指導例を通じて、プログラミング教育の導入は、従来の各教科等の指導方法を否定するものではなく、従来、教師が取り組んできた指導をよりやりやすくしたり、より豊かにしたりすることにも貢献するものだということを理解いただきたいと思います。
なお、より具体的な実践事例については、文部科学省、総務省、経済産業省が連携して設立した「未来の学びコンソーシアム」が運営するWebサイト「小学校を中心としたプログラミング教育ポータル」(https://miraino-manabi.jp/)において、これらの分類に沿って掲載をしています。
既に本手引の指導例に関連した実践事例等について掲載しているところですので、併せて参照・活用ください。
A分類及びB分類は、学習指導要領に例示されているか、いないかの違いはありますが、どちらも、各教科等での学びをより確実なものとするための学習活動としてプログラミングに取り組むものです。
これに対し、C分類は、学習指導要領に示されている各教科等とは別にプログラミングに関する学習を行うものです。
C分類では、「プログラミング的思考」の育成、プログラムのよさ等への「気付き」やコンピュータ等を上手に活用しようとする態度の育成を図ることなどをねらいとした上で、・プログラミングの楽しさや面白さ、達成感などを味わえる題材を設定する・各教科等におけるプログラミングに関する学習活動の実施に先立って、プログラミング言語やプログラミングの技能の基礎について学習する・各教科等の学習と関連させた具体的な課題を設定することもでき、各学校の創意工夫を生かした取組が期待されます。
ただし、この場合には、児童の負担過重とならない範囲で実施することが前提であることに留意する必要があります。
D分類は、教育課程内で、クラブ活動など特定の児童を対象として実施されるものです。
E分類及びF分類は、学校の教育課程に位置付くものではありませんが、地域や企業・団体等においてこれらの学習機会が豊富に用意され、児童の興味・関心等に応じて提供されることが期待されるところであり、各学校においても、児童の興味・関心等を踏まえ、こうした学習機会について適切に紹介するなど、相互の連携・協力を強化することが望まれます。
A学習指導要領に例示されている単元等で実施するもの
A-1プログラミングを通して、正多角形の意味を基に正多角形をかく場面(算数第5学年)
ここでは、正多角形について、「辺の長さが全て等しく、角の大きさが全て等しい」という正多角形の意味を用いて作図できることを、プログラミングを通して確認するとともに、人にとっては難しくともコンピュータであれば容易にできることがあることに気付かせます。
(学習の位置付け)
この学習は、正多角形の単元において、正多角形の基本的な性質や、円と関連させて正多角形を作図することができることを学習した後に展開することが想定されます。
(学習活動とねらい)
学習活動としては、例えば、「辺の長さが全て等しく、角の大きさが全て等しい」という正多角形の意味を用いて正多角形を作図するといった課題を設定し、定規と分度器を用いた作図とプログラミングによる作図の双方を試みるといったことが考えられます。
はじめに、正六角形などを定規と分度器を用いて作図することを試みさせ、手書きではわずかな長さや角度のずれが生じて、正確に作図することは難しいことを実感させます。
次いで、プログラミングによる正方形の作図の仕方を学級全体で考え、個別又は少人数で実際にプログラミングをして正方形が正確に作図できることを確認した上で、プログラミングによる正三角形や正六角形などの作図に取り組みます。
児童は、手書きで正方形を作図する際の「長さ□cmの線を引く」、「(線の端から)角度が90度の向きを見付ける」といった動きに、どの命令が対応し、それらをどのような順序で組み合わせればよいのかを考え(プログラミング的思考)、また、繰り返しの命令を用いるとプログラムが簡潔に書けることに気付いていきます。
そして、「正三角形をかこうとして60度(正六角形をかこうとして120度)曲がると命令すると正しくかくことができないのはなぜか」、「なぜ正三角形のときは120度で、正六角形のときは60度でかけるのか」といった疑問をもち、他の児童と話し合い試行錯誤することによって、図形の構成要素に着目して、正多角形の角の大きさと曲がる角度との関係を見いだしていきます。
また、正三角形や正六角形だけでなく、正八角形や正十二角形など、辺の数が多い正多角形も繰り返しの回数や長さ、角度を通して考えてかいていきます。
さらに、「辺の長さが全て等しく、角の大きさが全て等しい」という正多角形の意味を用いて考察することにより、今までかいたこともない正多角形をかくことができることとともに、人が手作業でするのは難しかったり手間がかかりすぎたりすることでも、コンピュータであれば容易にできることもあるのだということに気付くことができます。
A-2 身の回りには電気の性質や働きを利用した道具があること等をプログラミングを通して学習する場面(理科第6学年)
プログラミングを通して、身の回りには電気の性質や働きを利用した道具があることに気付くとともに、電気の量と働きとの関係、発電や蓄電、電気の変換について、より妥当な考えをつくりだし、表現することができるようにします。
ここでは、身近にある、電気の性質や働きを利用した道具について、その働きを目的に合わせて制御したり、電気を効率よく利用したりする工夫がなされていることを、プログラミングを通して確認します。
(学習の位置付け)
この学習は、電気の利用の単元において、電気はつくりだしたり蓄えたりすることができること、光、音、熱、運動などに変換できること等について学習した後に、身の回りにはそうした電気の性質や働きを利用した道具があることについての学習に位置付けて展開することが想定されます。
(学習活動とねらい)
学習活動としては、例えば、日中に光電池でコンデンサに蓄えた電気を夜間の照明に活用する際に、どのような条件で点灯させれば電気を効率よく使えるかといった問題について、児童の考えを検証するための装置と通電を制御するプログラムとを作成し実験するといったことが考えられます。
具体的な実験装置としては、手回し発電機や光電池などでコンデンサに蓄えた電気を電源とし、例えば、人を感知するセンサーにより通電を制御するスイッチをつないだ、発光ダイオードの点灯回路を作成し、その上で、このスイッチの通電を制御するプログラムの作成に取り組みます。
なお、児童が取り組みやすくなるよう、実際の道具よりも単純化したモデルとすることが大切です。
児童は、意図したように動作を変化させるためには人を感知するセンサーが反応する条件をどのように設定すればよいかなどの疑問をもち、センサーを用いた通電の制御(自分が意図する動き)はどのような手順で動作するのか、それを再現するには命令(記号)をどのように組み合わせればよいのかを考え、試行錯誤しながら(プログラミング的思考)プログラムを作成します。
さらに、こうした体験を通して、人を感知するセンサーなどで制御された照明などが住宅や公共施設などの身近なところで活用されていることや、電気を効率的に利用したり快適に利用したりできるようプログラムが工夫されていることに気付くことができます。
A-3「情報化の進展と生活や社会の変化」を探究課題として学習する場面(総合的な学習の時間)
ここでは、情報技術が私たちの生活や社会に果たしている役割と与えている影響について調べ、また、どのように情報技術を活用していけばよいかを考えるなど、情報に関する課題の探究を進める中で、情報技術が私たちの生活を便利にしていることをプログラミングを通して確認します。
(学習の位置付け)
この学習は、プログラミングの体験をよりどころとして、児童が情報に関する課題を見いだし、探究していくことができるよう、「情報」に関する探究の早い段階に位置付けることが想定されます。
(学習活動とねらい)
学習活動としては、例えば、身の回りの様々な製品やシステムが、プログラムで制御されており、それらが、機械的な仕組みとは違った利点があることを、ジュースの自動販売機のプログラムの作成を通して体験的に理解する、といったことが考えられます。
具体的には、まずカプセルトイの自動販売機とジュースの自動販売機の仕組みを比較して、コンピュータにより機械を制御することで、硬貨の種類を判別したり、残りの商品の有無や温度を管理したりなど、様々な判断を自動で行っていることに気付かせます。
次いで、硬貨が投入されるとボタンが押せるようになり、ボタンを押すことでジュースの缶を排出する、といった自動販売機の動きの一部(投入された硬貨の合計額を求める、投入された金額で買える商品だけボタンを押せるようにする、ボタンが押された商品を排出するなど)を再現するプログラムを作成します。
児童は、生活の中での経験を基に、自動販売機はどのような手順で動作しているのか、それを再現するには命令(記号)をどのように組み合わせればよいかを考え、試行錯誤します(プログラミング的思考)。
こうした体験を通して、プログラムの働きを理解するとともに、機械的な仕組みでは難しいことでもコンピュータでは容易であることを実感します。
さらに、この体験を基に自らの生活を振り返り、電気・水道・公共交通機関などのライフラインを維持管理するためにもプログラムが働いていることや、人工知能(AI)やビッグデータの活用、ロボットの活用によって、私たちの生活がより快適になり効率的になっていることにも気付きます。
また、コンピュータを利用したウイルスやネット詐欺などのプログラムの悪用にも触れることで、こうした情報技術をどのように活用していけば、私たちの生活がもっと便利になり、危険なく生活できるようになるのかなどを探究する課題として設定することも考えられます。
そうした探究活動を通して、「人間らしさとは何か」、「人間にしかできないこととは何か」、「人間としてどのように暮らしていけばいいのだろうか」など、自分の生き方を考え直すことも期待されます。
(その他考えられる学習活動の工夫)
なお、ジュースの自動販売機をコンピュータの画面上で疑似的に再現するだけでなく、センサーを用いてスイッチが押されたことを検知したり、モーターを用いて商品を排出したりするなど、自動販売機のモデルを製作することなども考えられます。
A-4 「まちの魅力と情報技術」を探究課題として学習する場面(総合的な学習の時間)
ここでは、私たちの生活や社会と情報技術との関係を考えるなど、情報に関する課題の探究を進める中で、身近な生活にプログラミングが活用されていることや、そのよさについて、プログラミングを通して確認します。
(活動の位置付け)
この学習は、「まち」の魅力と情報技術との関係を考えることをよりどころとして課題を見いだし、探究的な学習を進める中で、身近な生活にプログラミングが活用されていることや、そのよさについて気付かせ、更に課題の解決に必要な情報の整理や分析を行う際にプログラミングを取り入れられるように位置付けることが想定されます。
(学習活動とねらい)
学習活動としては、例えば、「まち」の中で魅力的な情報発信をしているものについて考える活動の中で、身近な生活にコンピュータやプログラミングが活用されていることや、「まち」の魅力を発信することに寄与していることに気付かせ、自分が考えるまちの魅力を自分の意図する方法で発信するタッチパネル式の案内表示を作成する際にプログラミングを取り入れることが考えられます。
具体的には、まず、「まち」の魅力や「まち」の中で魅力的に情報発信をしているものについて考え、「まちの魅力を効果的に発信しているものにはどのようなものがあるか」をテーマに意見交換を行い、「自分たちがお勧めするスポットをタッチパネル式で魅力的に発信することができないか」という課題を設定する。
その上で、実際にタッチパネル式の案内表示を見に行き、それぞれの情報がどのような順序で表示されるようになっているのか確かめたり、タッチパネル式案内のように表示させるためのプログラミングの方法についてゲストティーチャー等からの話を聞いたりします。
児童は集めた情報を整理しながら、ビジュアル型プログラミング言語を用いて、タッチパネル式案内表示の試作品を作成します。
作成に当たっては、例えば、写真や動画、説明文等を自分が意図した順番やタイミング等で一連の動きとして表現するために、一つ一つの個別の動きに対応する命令を組み立てたり、一つ一つの個別の動きをつなげたりしていきます。
また、外国人や高齢者、子供など、案内表示による情報発信の方法を対象によって変えるために、命令を分岐させることも検討していきます。
試作品を作成した後は、作成した案内表示を発表し、他の児童から良かった点や改善点を教えてもらいながら、改善すべき点を踏まえた案内表示を作成するために、コンピュータに意図した処理をどのように改善すれば、意図した一連の動きに近づくかを試行錯誤する学習につなげていきます。
また、作成した案内表示をモニタの方に実際に使ってもらい、感想をもらったり、利用状況についてデータを取ったりすることで、案内表示の効果について検証し、「どのような情報が利用者にとってニーズがあるのか」や、情報発信の観点から「伝えたい情報をもっと効果的に伝えていくためにはどのようなことが必要か」といった新たな課題を設定します。
学習活動を展開するに当たっては,観光案内においてプログラミングを活用した情報収集・発信に加えて人による直接的な対応にも配慮しているなどの工夫について、商業施設や駅等の担当者にインタビューを行い、児童自身が、まちの一員として魅力ある「まち」づくりに寄与できることをまとめ、発表する学習を通して、まちの一員としての自覚をもって自分と「まち」との関わりを深めていくことができるようにすることを目指します。
A-5 「情報技術を生かした生産や人の手によるものづくり」を探究課題として学習する場面(総合的な学習の時間)
ここでは、生産と情報技術との関係を考えるなど、情報に関する課題の探究的な学習を進める中で、そのよさについて気付き、ものづくりを支える人との関わりからものづくりの魅力や自分らしい生活についての考えを深めていきます。
(学習の位置付け)
この学習は、情報技術を生かした生産について考えることをよりどころとして、課題を見いだし、探究的な学習を進める中で、プログラミングの体験から、生活を支える生産活動にプログラミングが活用されていることを理解し、ものづくりのよさを知ることができるように位置付けることが想定されます。
(学習活動とねらい)
学習活動としては、例えば、自動車工場にある先端の情報技術について意見交換する中で、「プログラムで命令すれば、同じ原理の車をつくることができるのではないか」ということに気付かせ、障害物を自動的に避ける自動車や車線はみ出し防止機能が付いた自動車等、自分が作ってみたいと思う自動車をプログラミングを取り入れて作成してみる学習を行うことが考えられます。
具体的には、まず、社会科での自動車工場等のプログラミングを駆使した工場に現地学習に行ったときの様子を振り返り、産業用ロボットが活躍している様子や工場の人から受けた説明を踏まえ、自動車工場にあった先端の情報技術について意見交換する中で、「プログラムで命令できれば、同じ原理の車を作ることができるのではないか」ということに気付かせ、「自分が作ってみたい自動車」を課題として設定します。
そして、例えば、実際の自動車に整備されている機能やセンサー等の働きや、自分たちが目指す機能を備えた自動車に必要なプログラミングの方法等、必要な情報を収集するため、地域のディーラーの方やゲストティーチャー等からの協力を得て、車に自分が意図する一連の動きをさせるためには、それらの動きは一つ一つの個別の動きをつなげたものであることや、一つ一つの個別の動きには、それらに対応する命令が必要であることを学んでいきます。
児童は、集めた情報を整理しながら、自動車をどのように動かしていきたいかを考えた上で、そのために必要なプログラムの命令を整理し、動かしたい自動車をプログラミングします。具体的には、例えば、「衝突を予測して、回避させる」ために、「もしセンサーが障害物を感知すれば、減速し、止まる」といった命令を分岐させるなどのプログラミングを行います。
自動車を作成した後は、他のグループに発表し、改善点を指摘してもらうことにより、改善すべき点を踏まえた自動車の動きを実現するために、コンピュータに意図した処理をどのように改善すれば、意図した一連の動きに近づくかを試行錯誤する学習にもつながります。また、実際に試行錯誤しながらプログラミングによるものづくりを体験することで、プログラミングのよさやものづくりの本質に触れる学習にもつながります。
一方で、人の手によって作られたものが生活にどのような豊かさを与えているのかという観点から、地域の協力を得ながら、ものづくりをしている方にインタビューを行う等の学習を行い、ものづくりの魅力や苦労点をはじめ、ものづくりに携わっている方の思いをまとめ、自己の生き方についての考えを深めていくことができるようにすることを目指します。
参照:https://www.mext.go.jp/content/20200218-mxt_jogai02-100003171_002.pdf