学習指導要領に「プログラミング教育」が追加されたものの、具体的にどのような教育を施せばいいのか。そう頭を抱える先生も多いのではないでしょうか。ここでは、各教育段階でのプログラミング学習の目的、またそのための学習事例を1つずつご紹介していきます。
プログラミング教育とは
プログラミング教育とはいっても、プログラミング言語を使用してプログラムを組むだけの教育というわけではありません。
この教育の一番のねらいは「プログラミング的思考」を育むことと、プログラミングに対する抵抗感を下げることにあります。2030年までにAIに今の半分の仕事が取られると言われる世の中、プログラミングについて全く知らないか、触れたことがありプログラミングに対して抵抗が少ないかでは、今後を生き抜く上で天と地ほどの差がでてきます。プログラミング教育なくして、情報化していく社会へ生徒を送り出せないと言っても過言ではないでしょう。
プログラミング教育実施事例・小学校
小学校におけるプログラミング教育のねらいについて、文部科学省の「小学校プログラミング教育の手引」では以下のように記されています。
①「プログラミング的思考」を育むこと
②プログラムの働きやよさ、情報社会がコンピュータ等の情報技術によって支えられていることなどに気付くことができるようにするとともに、コンピュータ等を上手に活用して身近な問題を解決したり、よりよい社会を築いたりしようとする態度を育むこと
③各教科等の内容を指導する中で実施する場合には、各教科等での学びをより確実なものとすること
「プログラミング的思考」についてはこちらにて解説しているので、合わせてご覧ください。つまり、小学校におけるプログラミング教育は「コンピュータの活かされ方や、問題を解決するには手順があるということを学び、また生徒にプログラミングへの興味をもたせる」ことに重点をおきます。文部科学省の「小学校プログラミング教育指導例集」で事例が挙げられているので、ひとつご紹介します。
東京都足立区立大谷田小学校の生徒は、宅配業の工夫や努力で私たちの生活が豊かになっていること、佐川急便のハブセンター見学で荷物がITシステムによって効率的に仕分けられていることを知り、日本の産業で情報がどう活用されているのかを学習しました。
生徒に興味を持ってもらうため、遠方より届いた宅配荷物を提示。次に「なぜこんなにも早く届くのか」「どのような仕組みで届くのか」など、生徒に疑問や興味を抱かせます。宅配の仕組みについて生徒が自ら基礎知識を収集したのち、佐川急便のハブセンターへ訪問し、バーコードや荷物の仕分け、位置情報サービスや電子サインなど、プログラミングで荷物が自動処理されていることを学びました。後日いくつかのグループに分かれ、宅配便について分かったことを簡単にプログラミングができるソフト「Scratch」やスライドを使用し発表しました。
事前学習で生徒にインターネット等を使用させ、ハブセンター見学では私達の生活と情報の関係について学び、さらにそれを発表する形でプログラムの再現を試みることでプログラミングの設計について学習。生徒に無理なくプログラミング教育を施すことができる良い一連の流れと言えるでしょう。
プログラミング教育実施事例・中学校
中学校のプログラミング教育は、主に「技術・家庭科」の学習内容になります。技術D「情報の技術」は、大きく分けて「生活や社会を支える技術」「技術による問題の解決」「社会の発展と技術」にわかれており、プログラミング学習はこのうちの「技術による問題の解決」にあたります。小学校で育むプログラミング的思考だけでなく、自ら課題を発見し解決するという能力の育成も目指します。
事例として「みんなを幸せにする自動ドアのプログラムをつくろう」という題の学習が挙げられます。中学2年生が取り組んだ学習で、ロボットカーを利用した自動ドアの模型を「子ども用品店の自動ドア」と設定し、想定できる問題に対し解決アプローチを模索しました。ドアの模型には「外から入る人を感知するセンサ」「内から出る人を感知するセンサ」2つの赤外センサが取り付けられており、人を感知するとロボットカーに取り付けられたセンサに信号が送られます。信号を受信したロボットカーが前進したり後退したりすることでドアが開け閉めされ、結果として自動ドアを模すことができます。ドアの閉じ開き終わり感知には接触センサを使用しました。
まず、生徒に想定される問題を考えさせます。自動ドアの模型は2人に1つ配られますが、はじめは必ず生徒個人で考える時間を設けます。想像力を膨らませ、自ら課題を発見する力がここで鍛えられるでしょう。次に、その問題を解決するためにはどのようなプログラミングをするとよいかをペアと話し合って計画します。このとき「便利さ」「安全性」「経済面」「環境面」の4つの観点から評価しつつ話し合うことで、問題を解決することで生じる新たな問題にも対応する力が養われます。例えば、歩くのが遅い子どもの安全性確保のため自動ドアが開ききったときの停止時間を長くするとします。
しかし、ドアが開いている時間が長いということは、外気が入ってきてエアコンの使用料が高くなることにもつながりますよね。そこで、子どもの手が届かないところにドアを開け締めするボタンを設置することで、エアコン使用料を抑えるだけでなく子どもが勝手に出られなくなるため安全性確保の面でも問題が解決します。こうして作成された改善策を元に、生徒がトライアンドエラーを重ねながらプログラム制作をします。
この学習の評価ポイントは、生徒のプログラミングへの抵抗感を下げていることです。どうしても「プログラミング」と聞くと難しく感じられますよね。しかしこれはロボットカーと自動ドアの模型を組み合わせた簡単なものなので、比較的簡単にプログラミングできます。また、ペアの生徒同士で対話しながら問題解決策を探る経験にもなります。プログラムを組むことよりも、問題解決アプローチのための思考プロセスを育まれるプログラミング学習事例です。
プログラミング教育実施事例・高等学校
小学校や中学校では、プログラミング的思考の養成にファーカスした教育でしたが、高校ではいよいよ実際にプログラミング言語を使用して本格的なプログラミング学習へ移行します。情報系の学科ではプログラミング学習に力を入れている学校もあるようですが、今回は普通科の学習事例をご紹介します。
愛知県立安城南高等学校では、HTML/CSS、JavaScriptといった主にサイトの制作に使用される言語を学習します。Windows搭載機1台、生徒機40台、Windows Server 2008 R2 搭載サーバ、スクリーン、プロジェクタと、一般的なコンピュータ室環境です。この学校では、教室の前で説明する先生と、教室内を歩き回り生徒の様子を見ながら手助けをする先生とで役割を分担して指導にあたっているようです。
学習事例として、JavaScriptを使い繰り返し処理と配列を利用して買い物の税込合計金額を返すプログラムを作ることを目標に掲げた授業を挙げます。まず、そもそも繰り返し処理とは何か、日常生活ではどこで使われているのかを考えさせます。「プログラミング」「繰り返し処理」などと難しそうな言葉で学習を進めるのではなく、日常生活に密接に関わっているのもだと生徒に認識させることで、学習意欲のハードルが下がります。
次に、教室前方のスクリーンにプログラムの基本構造を表示しつつ、生徒自身に課題のプログラミングをさせます。プログラムがうまく実行すれば、生徒自身のディスクスペースに提出。その後は他の生徒の補助にあたらせます。この間、教員は教室をまわり、生徒一人ひとりの様子をみつつ補助しましょう。このとき、プログラムの解答をただ教えるのではなく、あくまで助言程度に留めることが大切です。
この授業でネックになるのは課題の難易度設定です。簡単すぎても学びになりませんし、難しすぎても生徒にプログラミング意識を植え付けかねません。また、プログラミングは一文字でも全角にしたりスペルを間違えたりすると、うまく実行しません。これによりプログラミングに対し否定的な感情を抱くかもしれません。生徒の様子をみつつ、慎重に指導計画を練ることをおすすめします。
プログラミング教育を施すにあたり
ここまで、小学校、中学校、高等学校のプログラミング教育の事例をご紹介してきました。共通して言えることは、生徒にプログラミングに興味を持たせること、なによりプログラミングに苦手意識を植え付けないことです。
プログラミングは日常生活でよく使用されていること。また、手順を踏めば理解できるものだということ。それが生徒に伝わるかどうかが、生徒がこれからの情報社会を生きる上で一番大切なことです。
◎参考資料