2020年度(令和2年度)から小学校におけるプログラミング教育の必修化がスタートしています。
小学校で「プログラミング教育」が始まった背景には何があるのでしょうか?
学校裁量でもなく全国の小学校で必修化となると、その背景にはどのようないきさつがあるのか気になってしまいますよね…?
文部科学省が公開している関係資料では、①技術革新の急速な発展、②人口減少と高齢化、③新たな社会の到来、がある中で、未来に向けてポジティブな姿勢でよりよい社会と幸福な人生を創る力を子どもたちに育みたいという発想があるようです。
この記事では、小学校でプログラミング教育が始まった背景や海外でのプログラミング教育の動きなど、小学校のプログラミング教育についての前提知識を解説しています。
小学校プログラミング教育の背景
小学校で「プログラミング教育」が必修化された背景は何なのでしょうか?
文部科学省から公開されている資料「小学校プログラミング教育の趣旨と計画的な準備の必要性について」には、現在の社会状況について次の事柄が触れらています。
- 技術革新の急速な発展
2022年頃にはロボット技術の社会進出、2025年頃にはAI(人工知能)が人間の代役となる、2030~2040年頃にはヒトと機械が共存・協調する社会になると文科省が予測しています。 - 人口減少と高齢化社会
日本は2004年12月をピークに人口減少期に入り、今後2100年までは急激な人口減少と高齢化社会に変化していくことが予測されています。 - 新たな社会の到来(Society 5.0)
私たちの現在の社会は「情報社会」と言われています。古くから「狩猟」→「農耕」→「工業」と社会は変遷してきました。そして、情報社会の次に来るものが「Society 5.0」と呼ばれています。「Society 5.0」は、AI・ロボット・ビッグデータ・IoTを活用し、産業構造の変革や人々のライフスタイルが変化した社会と想定されています。
今後の社会はどうなるか予測ができない! → 小学校で教えていることは、時代が変化したら通用しないのでは? → 予測できない変化を前向きに受け止め、主体的に向き合い・関わり合い・自らの可能性を発揮し、よりよい社会と幸福な人生の創り手となるための力を子どもたちに育む学校教育の実現を目指す!
つまり、今の子供たちが大人になった後の社会がどうなっているかが分からないので、たとえ何があっても適応できる力を身につけさせたい、ということです。
現在のIT技術が社会の根幹を支えている事実、今後の未来の技術の進歩や社会生活の予測、海外の動きなどを総括して考えると、今後情報教育が盛んになることは避けられないことだと考えています。 ただし、プログラミングというのは、情報教育の中の一部分に過ぎず、過度にプログラミングだけに拘る必要はないと考えています。
海外のプログラミング教育の動き
海外の初等教育では「プログラミング」に関してどのような動きになっているのでしょうか?
たとえば、イギリス、ロシア、ハンガリーでは日本の小学校にあたる初等学校で情報教育やコンピュータサイエンスに関わる教科の中で、プログラミング教育を必修科目としています。
他の国々では必修科目ではないものの選択科目としていたり、学校裁量という形式でプログラミング教育に力を入れている学校があるなど、プログラミング教育に熱を入れはじめている傾向に変わりはない様子です。
各国がプログラミング教育を実施する理由は、未来の人材育成として論理的思考能力や情報技術(IT)の活用に関する知識・技術の習得です。さらに、エストニアや韓国、シンガポールなどでは、産業界から高度なICT人材の育成が要望されていることも背景にあるようです。
とはいえ、すべての国において「プログラミング」という単体の科目は設置されておらず、既存の教科の中でプログラミング実習がセットで行われています。加えて、教育にあたる指導者不足も課題としてあるようです。このあたりの課題は、日本も同様なのかな?という感触です。
世界の各国では、初等教育からコンピュータサイエンス、情報数学、プログラミングといった、情報技術(IT)に大きく関わる内容の授業を取り入れています。
日本は世界的に見て、公的教育にお金を使っていない国だと言われています。
ということは、もしも、うちの子にプログラミングの才能があって伸ばしたいと考えているのであれば、小学校の公的教育だけでは足りない?のかもしれません。
公的教育に関心を持ちつつ、不足してしまう部分は個人で補っていく姿勢も必要なのかな、と思います。
そもそもプログラミングとは?
「プログラミング」とはコンピュータにやって欲しい仕事を指示するための言語を記述していくことです。コンピュータにやって欲しい仕事を記述したものを「プログラム」といいます。
今やコンピュータは私たちの身の回りの至るところに存在して、社会を支えています。パソコンやスマホ・携帯はもちろん、テレビや冷蔵庫のような家電から自動車やエレベーターなどにもコンピュータ(マイクロコンピュータ)が組み込まれています。
そうしたコンピュータは人間がつくったプログラムが組み込まれていて、プログラムに沿って動作をしています。
たとえば、指定した時刻にスマホのアラームが鳴ることや、自動車の自動運転技術などはプログラミングによって支えられています。
コンピュータは電子機械なので電気的にオンの状態とオフの状態のような2段階の世界(2進数)になっています。
いわゆる、01001100・・・みたいな「0」と「1」だけの世界です。イメージ湧かないですよね?
なので、人間が2進数でプログラミングすることはとても困難でとても非効率的です。
そこで、人間とコンピュータを仲介してくれる「プログラミング言語」が登場することになります。
プログラミング言語は0と1の2進数よりも格段に人間にわかりやすい、人間寄りな言語構造になっています。
人間が作成したプログラムをコンピュータがわかる言葉に翻訳(変換)することで、コンピュータに働いてもらうことができます。
簡単な例として、年齢を算出するプログラムはこのようになります。
# 生年月日から現在の年齢を求めて表示する
import datetime
# 生年月日を定義する
youYear = 1991
youMonth = 4
youDay = 15
# 今日の年月日を取得する
today = datetime.date.today()
year = today.year
month = today.month
day = today.day
# 現在年と生まれた年の差を求める
age = year - youYear
# 現在月が生まれた月より小さい場合
if month < youMonth:
# 1歳マイナスする
age -= 1
# 現在月が生まれた月と同じ場合
elif month == youMonth:
# 現在日が生まれた日より小さい場合
if day < youDay:
# 1歳マイナスする
age -= 1
# 求めた年齢を画面に出力する
print("あなたは" + str(age) + "歳です")
このようにプログラミングでは、変数の定義やIF文による条件分岐を記述し、明確にコンピュータへの指示を記述していく作業になります。
ただし、小学生向けのプログラミング教材では、上記のような言語スタイルでのプログラミングは難しいため、「ブロック」を組み合わるタイプのプログラミング学習が主流となっています。
たとえば、上記の Python(プログラミング言語)で作成したプログラムをScratchのブロックプログラミングで記述すると、このようになります。
小学校におけるプログラミング教育のねらい
小学校でのプログラミング教育のねらいとは何なのでしょうか?
文科省が定める「小学校プログラミング教育の手引」には、以下の3つが「ねらい」として書かれています。
「プログラミング教育のねらいで」は、プログラミングそのものの技能向上や学習については定めていないところがポイントです。
つまり、小学校では、まずは、プログラミングを学ぶための土台をきっちり養いましょう、という意図となっています。
「じゃぁ、小学校の授業では実践的なプログラミング学習はいらないの?」というとそうでもありません。
なぜなら、「小学校プログラミング教育の手引」には以下の記載もあるからです。
- 児童がプログラミングに取り組んだり、コンピュータを活用したりすることの楽しさや面白さ、ものごとを成し遂げたという達成感を味わうことが重要
- 児童がプログラミングを「体験」し、自らが意図する動きを実現するために試行錯誤することが極めて重要
上記のことから、やはり小学校であってもプログラミングを体験し、学習することも必要なのです。
小学校のプログラミング教育は、ねらいにある「プログラミング的思考」や「気付く力」、「問題解決能力」を育むこと、および、実際にプログラミングをやってみて、試行錯誤やうまくできた達成感を味わうことの両輪で推進されていくということです。
プログラミング教育の「ねらい」の中にプログラミングの技能や学習が含まれていない背景には、子供たちが将来どのような職業についたとしても、プログラミング的な思考が役立つ、という考え方があるのです。
つまり、子供たちがたとえプログラミング技能を必要としない職業についた場合であっても、プログラミング的な思考だけは必要なはず、という背景です。