文部科学省が2016年6月16日に公開した「小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ)」によると、プログラミング教育を実際にどう取り入れていくかは、現場に任されている。高校では「情報」の教師、中学校では「技術・家庭」の教師がいるのに対し、1人の担任がほぼ全ての授業を実施する小学校では、誰がその役割を担うかがはっきりしない。
また「議論の取りまとめ」には、「プログラミング教育を行う単元を教育課程に位置付けていくに当たっては、総合的な学習の時間においてプログラミングを体験しながら社会における役割を理解し、それを軸としながら、各教科等における多様なプログラミング教育につなげていくことが効果的である」としながらも「環境整備や指導体制の実情等に応じた、柔軟な対応が検討されることが望ましい」として、「総合的な学習の時間と教科学習の双方で実施したり、教科学習のみで実施したり、総合的な学習の時間のみで実施したりするなど、柔軟な在り方が考えられる」と記載されている。
小学校の教員は、具体的にどのように授業を進めていけばいいのだろうか。松田氏は、2016年度、小金井市立前原小学校で実際に進めているプログラミング授業のカリキュラムを具体例として紹介してくれた。
松田氏はカリキュラムの作成に当たって、まずはプログラミングを学ぶツールの系統図をまとめた。低学年から高学年までを横軸に、STEM(Science、Technology、Engineering、Mathematics)を意識して「サイエンス」「テクノロジー」「エンジニアリング」という言語の特性を縦軸にして、ツールを体系化。これを基に授業の内容や目的に応じたツールを活用しているという。
「低学年の間は、PETSやGlicode、図にはないですが、『ルビィのぼうけん』やコンピュータサイエンスアンプラグドを導入として使うのもいい。
中学年向けには、ScratchJr(幼児向けScratch)からScratchへと移行します。ScratchやPyonkee(iPadで動くScratch移植版)などScratchベース&ライクなものから小学生に大人気のMinecraftに移行することもできます(Raspberry Piで動くMinecraft Piを使うと、Scratchでプログラミングができる)。
高学年になったら、ロボット制御。ScratchライクなTickleを使ってBB-8やドローンを動かしたり、Studuino(スタディーノ)でアーテックのロボットを動かしたり、レゴ マインドストーム EV3や、(発売されたら)ソニーのKoovを使ったりするのがいいと思います。
低学年でコンピュータサイエンスアンプラグドなど、アナログの体験から入り、中学年でバーチャル世界、つまりコンピュータでのプログラミングを学ぶ。そして、最後に高学年でロボットを通して現実とのつながりを意識させます。リアルの世界にまた帰ってくる体験が、すごく大事な学びです」
また、低学年から高学年に向けて、「サイエンス」「テクノロジー」「エンジニアリング」と進みながら、コンピュータサイエンスへの理解を深めていくことが極めて重要だと松田氏は述べる。
「Viscuitは全学年で学ぶべきです。Viscuit開発者である原田先生の『コンピュータとは何か、つまりコンピュータサイエンスを分かってもらうためにViscuitを作った』という姿勢に共感しています。Viscuitは数字を使わないし、シミュレーションもできて面白い。Scratchは手続き型で、Viscuitは宣言型で命令の仕方が全然違います。手続き型で作ったプログラムと同じことをViscuitでも作らせることで、命令の仕方の違いから、子どもたちは大きな衝撃を受けるでしょう。そこから『コンピュータへの命令、つまりプログラムにはいろいろなものがある』『コンピュータに命令するとは、どういうことなのか』ということを考えてもらいたいですね」
また松田氏は、Code.orgのCode StudioやCodeMonkeyなどのチュートリアル型コンテンツを使うことも、プログラミングの学習に位置付けている。
「Code Studioにはアンプラグドのレッスンもありますし、プログラミングの構造理解に役立ちます。CodeMonkeyなどはコーディングのトレーニングに役立つでしょう」
このように各ツールやコンテンツを位置付けておけば、教員は、自分たちの学校の環境によって使えるものと使えないものがあっても、使えるものの中でプログラミング授業の効果を把握しやすくなるという。
このようなツールの位置付けをもって、具体的にどのようなカリキュラムを作成するのか。松田氏は、前任校での経験を踏まえて、前原小学校では2016年度、3年生以上の「総合的な学習の時間」で年間20時間のカリキュラムを作成してプログラミングの授業を進めている。
「せっかくのプログラミング授業を、2、3時間で済ますだけではもったいない。取り扱うツールの操作理解で終わってしまう。2017年度は35時間行いたいと思っています。また、プログラミング学習の本をなぞらせるだけでは、コンピューテーショナルシンキングは育たないでしょう。
1学期は『導入』フェーズとして、『プログラミングと生活』をテーマに、BB-8のダンスから入って、高学年の生徒はTickle(中学年はScratchJr)に触れ、Code.orgやViscuitを使ってプログラミングの面白さを知ってもらう。3〜6年生10クラス中の1クラス分6時間は私が授業をして、その様子・展開を教員に見て覚えてもらい、そこから各教員にもやってもらいました。
夏休みは『Why!? プログラミング』を見ることを宿題にしています。2学期は、『展開』フェーズとして、ScratchやMinecraftを活用しながら、プログラミングの習熟度を高めていきます。3学期の『発展』フェーズでは、LEGOのEV3やアーテックを使ってロボット制御にトライし、プログラミングの便利さと豊かさを理解してもらいます」
カリキュラムの最後でロボット制御に取り組むのは、バーチャルの世界だけで完結したくなかったという松田氏の強い思いの表れだ。
「バーチャルの世界では、バグを除けば、“もの”をプログラミングで思い通りに動かせます。しかしロボットが動くリアルの世界では、床の摩擦など物理的要因により、必ずしもプログラミングした通りに動かせるとは限りません。子どもたちはロボット制御を学ぶことで、プログラミングと現実社会を結び付けて、『リアルの本質って何なんだろう』と考えるようになります。
ロボット制御によって、生活の中でプログラミングがどんな役割を担うのかを体感させることも重要です。『現実社会をより良くしようとしたときに、こうやってプログラミングしたらいいのでは』という“問題”の切り取り方のイメージを膨らませる。その発想の部分を含めてコンピュータサイエンスへの理解を深めていくことができるのではないでしょうか」
現在、松田氏が実践しているプログラミング授業は、「総合的な学習の時間」でのカリキュラムだが、「議論の取りまとめ」にあるようにプログラミングの考え方を各教科に取り入れていくことはできるのだろうか。松田氏は、「プログラミングの考え方を各教科の学習で活用できるかどうかは、教員のアイデア次第」と言い切る。
また、プログラミングの授業を行うことで、授業の内容や方法を含め、教育システムを再検討するきっかけとなるという。
「例えばプログラミングでは、小数点やマイナス、座標の概念が当たり前のように出てきます。通常これらの概念は、低学年の生徒は習わない。早い段階から高度な算数の知識を身に付けることができる。つまり、従来のカリキュラムに収まり切らない状況が生まれるのです」
松田氏は事例を紹介しながら、各教科でプログラミングを活用するヒントを示してくれた。
「国語では、絵本などの物語を読ませて、そこからイメージを膨らませて、Viscuitで動く絵本を作るという教え方が考えられます。絵本の中のキャラクターがどう動くのか、子どもたちの創造力を養うことができるでしょう。また算数では、Scratchを使って四角形を描いてもらい、4辺の長さと面積の関係性を体感させることができるでしょう」
社会では、Minecraftを使って、日本の各地域に適した家(例えば、沖縄など台風の多い地域は平屋で、豪雪地帯は2階建てになっているなど)を建ててもらうことで、各地の気候風土を学ぶことができます。図工では、ストローで作るロボット『Strawbees』を『Quirkbot』のプログラミングで動かすといった授業も可能です。
このようなアイデアを自分で思い付くには、やはり各プログラミングツールやタブレットの特性を知っておいた方がいいでしょう」
Copyright © ITmedia, Inc. All Rights Reserved.