公開シンポジウム「情報教育の参照基準」

小学校でのプログラミング教育

静岡大学情報学部 遠山紗矢香先生

私からは、小学校の先生方と連携しながら行ってきたプログラム教育の実践を踏まえながら、今回の「情報教育の参照基準」で、小学校ではどのようなことができていて、これからもっとどんなことができるのかなど、考えたことについてお話しします。

 

先生方は、恐らくよくご存知だと思いますが、小学校の子どもたちは、ICT機器を渡すと、試行錯誤しながら大人よりも早く使い方を理解していくという実態があります。

 

また、プログラミング体験イベントに来ている親御さんに対して「小学校でプログラミング教育が始まることを知っていますか? 」というアンケートをとったところ、もともと興味のある方々なので83%がご存知という結果になりました。

 

一方で、「そのプログラミング教育が、主に算数や理科といった教科の学習の中に位置付けられることを知っていますか? 」という問いについて、ご存知の方は2割弱に留まりました。プログラミング教育について、親御さんたちは大きな期待を抱いていると思いますが、一方で小学校の中で、どのような形で実践が展開されていくのかについては、まだ知らない方も多いようです。

 

新学習指導要領が掲げるのは「プログラミング的思考を育成する」こと

新しい学習指導要領では、小学校の指導要領の中に「プログラミング教育」が明記されました。プログラミング教育については、「情報活用能力の一部としてプログラミングを位置付ける」という書き方になっています。さらに、学習指導要領が新しい形に変わるので、プログラミング教育でも資質・能力に示されている三つの観点が重要となります。

 

 

三つの観点の一つ目が「生きて働く知識技能の習得」。二つ目が「未知の状況にも対応できる思考力・判断力・表現力の育成」で、これは三つ目と共に、「ジェネリックスキル」と呼ばれるものに近いと思います。そして三つ目が「学びを人生や社会に活かそうとする学びに向かう力、人間性の涵養」で、この三つを併せ持った子どもたちを育てていこうということが言われています。

 

 

一方で、皆様もご存知のとおり、小学校の先生方は大変忙しい状況になっています。新しく外国語と道徳が正式な教科になり、限られた時間の中で授業時数を確保することがこれまで以上に難しくなってきています。皆が大変な努力をしている中で、どうやってプログラミング教育を入れていけばいいのか、ということが問題になっています。

 

新学習指導要領の解説の中で,プログラミング教育の目的については、「プログラミング的思考を育成する」と書かれています。「プログラミング的思考」は、「(コンピュータに意図した処理を行わせるために必要な)論理的思考力」とも説明されていますが、ここで言う論理的思考力とは一体どういう力なのかは、指導要領に書かれていません。ですから、ここは先生方が考えていかなくてはいけない部分なのです。

 

授業事例 算数×プログラミング

学習指導要領の中に「プログラミング」という言葉が具体的に出てくるのは、小学校5年生の算数と、6年生の理科、および総合的な学習の時間です。

 

5年生の算数では、正多角形の作図をするところでプログラミングの記述があります。正確な繰り返し処理を行う必要があるので、手で作図をした後に、プログラミングを使って描いてみようという方向性が示されています。

 

 

6年生の理科では、「物質とエネルギー」のところで、センサーを使って温度を測ったり、明るさや人感センサーを使ったりという活動が想定されています。環境の状態が変わったら、それに合わせて動作が変化するというプログラミング体験が相当すると思います。

 

総合的な学習の時間については、特に学年の縛りはありません。プログラミングを体験するだけで終わりにせず、探究的な学習の中に位置付けてくださいということが強調されています。

Pepperなどのロボットを使った体験的な授業は、恐らくこの総合的な学習の時間に位置付けられているものが多いと思います。

 

 

以上簡単にご紹介しましたが、現実の小学校の学習指導要領にプログラミングという言葉が入ったというのが、まずは、大きな成果だったと思います。しかし、実際は「算数と理科の一部の単元で、『こんなふうにプログラミングをやってみてください』ということが書かれただけに留まる」という言い方もできるでしょう。

 

先生方向けの研修機会として、国からの支援や、地方自治体による研修会などいろいろなイベントが開かれています。ただ、研修会の実施状況は自治体によって様々なようです。こういった中で、小学校がどのような状況にあるのか考えると、かなりいろいろ難しい問題を抱えているようです。

 

第一に、情報教育と算数や理科などの教科教育を融合させていく必然性があり、それを先生方が自分で工夫して作っていかなければならないところに、難しさがあると思います。さらに、授業時間数が足りないのも悩ましいところです。

 

 二つ目の問題が、子ども向けのICT環境の整備が十分でないこと。子どもたちが使えるパソコンの台数が少ない、あるいはパソコン室にしかないという学校もまだあります。

 

三つ目の問題として、先生方向けのICTの整備状況も、極めて限られていることです。職員室では自由にインターネットに接続できないため、教材研究は自宅でしていると、おっしゃる先生もいるほどです。

 

この現実を踏まえつつ、理想に近づくにはどうすればいいのかということですが、小学生と言っても、1年生から6年生まで幅がありますので、その学年のそれぞれの状態に合わせて、体験的に学んでみるということがよいのではないかと思います。

 

環境や時間が十分でない中で、学ぶ意欲と理解を深める工夫を

こういった中で、私は小学校の先生方と連携してプログラミング教育を行っていますが、そのときに意識しているポイントがこちらの図です。

 

一つ目の「理解深化」は、教科等の理解を深めるための手段としてプログラミングを位置付けること。

 

二つ目の「金額」は、小学校は使えるお金がかなり限られているので、全ての子どもたちのグループに配布できるような価格の教材を使うこと。

 

三つ目の「時間」については、授業時数に余裕がないため、だいたい2コマで収まるような授業を提案しています。

 

四つ目の「課題」は子どもたちが学びたくなるような課題設定をすることです。これは授業を展開する上で、当然のことと言えるでしょう。

 

五つ目の「活動様式」ですが、児童同士の協調学習を取り入れるようにしています。先ほどの紅林先生のお話にもありましたが、1人では難しいことであっても、何人かで話し合うとわかるようになることを期待しています。

 

六つ目の「評価」は、個人的にはとても大事だと思っています。小学校のプログラミング教育では教科「情報」を新設するのではなく、算数や理科の学習の中にプログラミングを位置付けます。これを踏まえれば、教科の狙いと一体的にプログラミングを評価することが期待されます。教科とプログラミングを切り離さずに評価する方法を、これから考えていかなければと思っています。今のところ、教科の狙いがどれくらい満たされているかという基準で、評価していこうと考えています。意識しているポイントに対応するよう、具体的な方法を考えています。

 

情報教育の活動様式

1)プログラミング

さて、意識しているポイントの五つ目「活動様式」について、少しご説明をさせていただきます。

「プログラミングって、先生が書いたソースコードを写して、それを覚えたらいいのではないでしょうか」という質問いただくことがあります。しかし、プログラムを書けるだけではなく、なぜその順番なのか、なぜその一行が必要なのかを、子ども1人ひとりがわかって書けるようになることこそ大事なのです。小学校段階では特に、長いソースコードを書くことよりも、ソースコード自体は短くてもわかって書けるようになることが必要だと思うので、活動様式のところに少しこだわっていきたいと思います。

 

一方で、プログラミングはかなり抽象度の高い面があると思いますので、一人で頑張って作るというよりは、協調学習と組み合わせて、わからないところをわからないと言い合いながら深めていけるとよいのではないかと思います。

 

プログラミングは、子どもが自分の持っている知識や経験などを、自分で組み合わせて作り上げていくための土台、砂場のようなものと位置付けられます。何度でも繰り返すことができるし、反対に何度でも失敗できます。実行結果が可視化されるので、それを踏まえて再度考えて作り直すことができます。そういった特徴にも下支えされて、「自分の考えをより良くしていく」という活動につなげやすいのではないかと思います。

 

2)協調学習

協調学習には、一人では困難なことでも「三人寄れば文殊の知恵」という効果があり、私の専門領域である認知科学でも、科学的にいろいろ検証が進められています。例えば、「9個の点を通る4本の直線を書いてください」という問題を出し、一人で解く場合と二人で解く場合を比べた実験があります。その結果、一人よりも二人の方が、解に気づくまでの時間が早いということがわかりました。

 

その理由として、他者と協調することで、新しい視点が得られたり、別の解釈にたどり着いたりしやすいのです。問題を解いている途中の相手の考えが互いに見えやすいということと、相手の考えの正しさや良さがあまりはっきりわからない状態がプラスに働くようです。

 

協調学習が全ての問題解決になるということではありませんが、少なくともこのような特徴のあることがわかりました。

 

プログラミングと協調学習の関係は、このようになっています。まず、協調学習でうまくいきそうな方法を考えてプログラムを組んでみます。試してみた結果は、よいこともうまくいかなかったことも、実行結果として可視化されます。その可視化されたものを、もう一回二人で話し合いながら解釈してやり直してみる、ということを繰り返していくのです。

 

ここでは、当然デバッグも行われます。一人ひとりの考えをより良くするために、プログラミングと協調学習を、学習支援として位置付けていくことができるのではないかと考えています。教科の目標よりも多少抽象的な場合があるプログラミング固有な考え方や、情報学的な視点というのも、これでクリアしていけるのではないでしょうか。

 

協調学習「知識構成型ジグソー法」

では、協調学習の実践例についてお話していきますが、その前提として、私が用いているデザインの説明をいたします。

 

私は、「知識構成型ジグソー法」というものを使って、一人では難しいかもしれない問題を複数名で話し合いながら考えて、子どもたち自身で問題に対する答えを作るための協調学習を実践しています。

 

「知識構成型ジグソー法」では、活動デザインと評価の方法が、一体的に提案されています。

 

こちらの図にある「前後理解比較法」というのは、子どもたち一人ひとりの理解状況を確かめるための評価方法です。協調学習の前と後で、一人一人に同じ課題について、自分なりの答えを考えて書いておいてもらう方法です。

 

協調学習前の段階では、まだ学んでいないので当然それほど多くは書けませんが、協調学習を終えると、ある程度書けるようになっています。この差を見ることによって、子どもたちが授業の中でどれだけ理解を深められたのかを、推測できるのです。

 

具体的には、まずクラスを三つに分け、それぞれのグループに課題を解くために役立ちそうな参考情報A・B・Cを配ります。子どもたちは、資料A・B・Cを読み込んで、ABCそれぞれの専門家になってもらいます。

 

次に各グループの中から一人ずつ集め、A・B・Cで三人組を作ります。このように、それぞれの学んできた内容を持ち寄って課題を解く活動を、ジグソー活動と呼んでいます。ここで必然的に、自分の持ってきた資料の内容をメンバーに説明する必要性が出てきます。相手は自分が持っている情報の内容は知らないので、自信を持って相手に紹介しなければなりません。この後、さらに、クラスの中にたくさんできた三人組の意見を教室の中で共有する「クロストーク」を行います。ここまでが、知識構成型ジグソー法で提案されている枠組みになります。

 

私はこうした枠組みを使って、算数・理科・音楽・総合的な学習の時間の中で、プログラミングを使った子どもたちの学びのデザインを行ってきました。

 

算数:多角形を描くプログラムで応用も可能に

本日ご紹介するのは、算数と理科の授業です。基本的な授業の流れは、最初と最後に子どもたちに、事前事後の課題に対する個人の答えを書いてもらって、途中で協調学習を行うというデザインです。

 

算数とプログラミングを掛け合わせた実践授業では、Scratchで正六角形を書く方法を考えるという活動を、45分(1コマ)で行いました。

 

最初に、繰り返しを使わない、単に正三角形を描くだけのプログラムを例として示します。この演示したものに対して、パート別に三つの資料を配りました。『ず』と『け』と『い』という三つの資料です。

 

『ず』の資料には、何歩動かすと何度回るというプログラムのセットを提示し、正六角形を描くためには、そのセットが一体幾つ必要で、なぜそれが必要なのかを子どもたちに考えてもらいます。

 

『け』の資料は、「繰り返す」というブロックの使い方です。正三角形を描くプログラムを参考にしながら、正六角形を描くときには、どんなところにどうやって使えるのかを考えてもらいます。

 

『い』の資料には「○度回す」というプログラムを示しました。正六角形の場合には、一体、何度回せばいいのかを、子どもたちは内角と外角の図を使って考えていきます。

 

この三つの資料をそれぞれで子どもたちに試してもらうと、当然、1辺足りなかったり、繰り返しのところで永遠に真っすぐ横に歩いていくことを繰り返したりして、なかなかうまくいきません。ところが、それぞれの専門性を持ち寄って組み合わせてみると、ほとんど全てのグループが正六角形を描けるようになるのです。

 

 

興味深いのは、単に図形が描けるようになるだけでなく、プログラムの書き方の理由を、子どもたちがある程度説明できるようになっていることです。

 

例えば、事前にはほとんど理由を書けなかった子が、事後には「辺と角が6個あるから6回繰り返す」ということを言えるようになっています。

 

また、60度回すということも、ほぼ全ての子どもたちが理解できていました。事前の回答と比較すると、子どもたちが理解できたこと・できなかったことがはっきりしてくると思います。 

 

正六角形が描けるようになったので、クロストークのところで、「この考え方で正十角形も描けるかな」と聞いてみると、ほとんどの子どもが「できる」と、答えてくれました。「じゃあ、百角形もできるのかな」聞いても「できる」と言います。「では、百角形はどうやって描くの?」と聞くと、プログラムの「何度回す」と「何回繰り返す」というところを変えればできると、正しく答えてくれます。

 

この発言は、正六角形を描くという具体的な動作例から、その動作を百角形まで一般化して考えられている、という期待を抱かせてくれます。アルゴリズムを記述するところまではいかないですが、モデルの上で目的関数を意識でき、試行錯誤による最適化が行えることにつながっています。「情報教育の参照基準」に照らしてみると、中学校や高校のレベルでやろうとしているレベルにも少し気づいているのではないかと感じます。

 

 

理科:温度センサーを使って適温を知らせる装置を作る

次は、理科とプログラミングを合わせた授業事例です。

 

micro:bitを使って温度センサーで気温を測定し、室温が高すぎたら知らせる装置を作ります。子どもたちには、基本的なmicro:bitの扱い方やダウンロードの仕方などを教えた後、やはり「知識構成型ジグソー法」を使って協調学習を行います。

 

算数のときと同じように、クラスを3つのグループに分け、それぞれをB・I・Tと名づけます。Bは繰り返し、Iは条件分岐、Tは不等号を用いた論理式を作るというというシンプルな資料を読み、それぞれのエキスパートになります。

 

 

この三つを組み合わせると、例えば図のようなプログラムができます。「繰り返し」が入っているのは、温度が変化することに考慮して、一定時間たったら、もう一回温度を測り直すからです。

 

この「繰り返し」に関する理解の変化が興味深いです。授業の前は、「繰り返し何回も計測する必要がある」ということを書いている子はいませんでした。ところが、授業のあとには、35人中5人が言及するようになっていました。

 

「情報教育の参照基準」に照らしてみると、中学校や高校のレベルで、端末を使って情報を集めることや、センサーを使って環境情報の自動計測や調音・調光等自動制御の原理を身につけることができるとありますが、これに近いところまでできるようになっています。

 

 

このように、きちんと学習していけば、小学生でも参照基準のさらに上のレベルまで進められる、という手ごたえを感じました。

 

一方で、例えば参照基準のA2にある「コンピュータが自動的に情報を処理する装置である」ということを、子どもたちがどのように理解しているのかを確かめるのが難しいという面があります。おそらく子どもはわかっているのですが、そこの部分だけを取り出して、評価するのは容易なことではありません。

 

 

基本的には授業の中で、「どうすればよいのか」を教え、子ども自身がそれぞれ自分の身を守ることができるよう理解を進められればと思います。

 

さらに、「たまたまできた」ではなく、時と場合が変わってもこれまでに学んだことを使って自分で手続きを作り出せるような子どもたちを育成するために、プログラミング学習を通して、なぜその手続きでできたのかを考える習慣をつけられるとよいでしょう。

 

以上でご紹介したように、小学校の子どもたちができること・わかることを踏まえて整理してみると、今回の参照基準で「C モデル化とシミュレーション」「D データとその扱い」「K 問題解決」にも、小学校に当たるレベルを入れていただけたらと思います。決して高度なことでなくとも、こういった観点について子どもたちが気づくきっかけとなり、それが中学校、高校、大学へと体系的につながっていく端緒になればと思います。

 

公開シンポジウム「情報教育の参照基準」(主催:日本学術会議情報学委員会情報学教育分科会)

2019年5月18日(土) 東京大学山上会館