小学校プログラミング教育の現状と展望~国の取り組みから

宮城教育大学 技術教育講座 准教授 安藤明伸先生

ICTの活用からプログラミングへ

私は、中教審の情報ワーキンググループの委員などをしながら、文部科学省「小学校プログラミング教育の手引(第一版)」の作成に携わりました。そういった立場から、これからの実践をご理解いただく上で、必要な部分をお話していきます。皆さんにとっては、おさらい的な意味合いが強いかもしれませんが、登壇された先生方のお話を踏まえて、自分なりにもう少し深いところまでお話できればと思います。

 

下図は最近手に入れたアメリカの資料です。自動車は80年かかって、人口の50パーセントに浸透しましたが、インターネットや携帯電話はたった10~20年で普及しています。現在、いろいろなものが飽和している中で新しいテクノロジーが生まれ、その普及が急激に伸びているということがわかります。

おそらく、これだけ普及した自動車は、やがて自動運転になっていくでしょうし、介護ロボットも普及していくことになるはずです。IoTやAIが様々な機器に利用されるようになれば、また、新たなデータがとれるようになるでしょう。データがあれば、それを活用してAIの技術はより広がっていきます。

 

その中で肝心なことは、これらは全てプログラムされたもので動いているということです。プログラミングという言葉も、ずいぶん認知が進んできたのではないかと思いますが、プログラミング教育という話が出た当初は、「そんなものを子どもにやらせるのか」と、かなりの議論を呼んだものでした。

 

ICTの活用は確かに必要なのですが、そちらの議論に寄り過ぎたばかりに、その中がどうなっているのだろうということや、コンピュータのことを理解するといった議論が遅れてしまったのではないかと思われます。

 

小学校のプログラミング教育の導入の経緯

こういった背景を受けて、小学校のプログラミング教育が検討され始めました。では、導入までの経緯を振り返ってみましょう。

 

2016年6月16日の有識者会議で、「プログラミング的思考」というものが正式に位置付けられました。

この段階で、プログラミング教育の目指す、資質・能力などについては、以下の3点にまとめられました。

・知識及び技能

・思考力、判断力、表現力等

・学びに向かう力、人間性等

 

その後、小学校の学習指導要領の中で、情報活用能力は重要な学習基盤になるということ、そして児童がプログラミング体験をしながら情報活用能力の育成を図る学習活動とする、ということが示されました。コンピュータに意図した処理をさせること、つまり授業の学習活動の中でプログラミングを体験することが、ここで明示されたのです。 

プログラミング的思考という言葉も、この図のようにかなり長い文章で説明されています。

この言葉を、どう読み解くのかということについては、各学校や自治体では、研修・勉強会等が、行われているという状況なのではないでしょうか。

 

いずれにしても、今後情報技術を効果的に活用しながら、論理的・創造的に思考し課題を発見・解決していくためには「プログラミング的思考」が重要であり、そうした「プログラミング的思考」は将来どのような進路を選択し、どのような職業に就くとしても普遍的に求められるであろうということが、小学校のプログラミング教育の目的であって、決してコーディングを覚えることを目指すものではない、ということは押さえておく必要があります。

 

プログラミング的思考という言葉自体は、コンピュータ的思考(Computational Thinking)の考え方を基にして、そこから作り出されたと、先ほどの有識者会議の議論の取りまとめの注釈に書かれています。ただし、基になったコンピュータ的思考自体も、実は諸説あるわけです。

 

ある所は五つの要素に分けていたり、別の所では六つだったりと、いろいろなものがある中で、ではどのコンピュータ的思考であるかということも、まだはっきりしていません。そう考えると、この日本的に表現された文章を、学校でどのように位置付けるのかということは、非常に難しい問題になってくると思います。

 

「プログラミング的思考」を育てるために

「小学校プログラミング教育の手引き」の中では、プログラミング的思考と呼ばれる思考力で、コンピュータを動かすためには、どういう手順を踏んだらいいのかについて、下図のようなステップでまとめられています。

まずは自らの意図を明確にすること。つまり、何かをしたいという意図がないと、スタートを切れないということです。それから、動かすための順序を考える。そして、それをどのように組み合わせて、記号に置き換えるか、という段階になります。この「記号に置き換えて組み合わせを考える」というのが、重要な、いわゆる知的作業になるのではないかと思います。なぜなら、単に置き換えただけではダメで、それをどうすればよいのかというところまで考えなければならないからです。そのためには概念を理解しなければうまくいかないでしょう。こうした辺りまでについては、コンピュータを使わなくても行えます。

 

これは、いわゆる「アンプラグド」と呼ばれる、コンピュータを用いないでプログラミング的な思考を育てるという取り組みで、プログラミング導入の段階として、非常にわかりやすい学習方法であると言えます。日常生活の中で行う行動の手順を書き出して、どうしてその手順にしているのだろうか、と段取りとして考えさせるのです。コンピュータの話に段階的に進めて行くにしても、その前に、子どもたちの身の回りのことを、プログラミング的思考を働かせて考えさせるという点で、ここを導入にすると非常に進めやすいのではないかと思います。

 

ただし、その思考自体は人間がやるのか、あるいはコンピュータにやらせるのかというところで、考え方や作業する相手の特徴によって手順も違ってくるでしょう。コンピュータは、何でも言われたとおりに高速で処理し、疲れたり文句を言ったりしない特別な存在です。ですので、当然、アンプラグドだけでは十分ではなく、必ずコンピュータに実行させてこそプログラミング的思考が実感されるわけです。

 

プログラミングの体験をすることが、コンピュータの働きやその良さに気付き、プログラミング的思考を育てていくことにつながります。プログラミングを体験することを通して、プログラミングの良さへの気付きを促してもらいたいと考えています。そのようにして、コンピュータを上手に活用し、プログラミングという手段を使って問題を解決しようとする態度を育んでほしいと思っています。そう考えていくと、プログラミング的思考と情報活用能力には、だんだん接点が見えてくるわけです。

 

移行期間で身に付けさせたい「情報の活用能力」

われわれは、このプログラミング的思考を含む情報活用能力を、発達の段階に応じてとらえていくことを目指しています。どの学年で、どういう情報活用能力が必要なのか、それに対してプログラミング的思考がどう役に立つのかということを、全国の学校、自治体で、その系統表のようなものを作ろうとしているところだと思います。現在は移行期間なので検討段階ですが、今後はやはり体系的に進めることが非常に重要になってくると思われます。

この「小学校段階のプログラミングに関する学習活動の分類」も、先ほどお話にありましたので、簡単に触れる程度にします。

上から四つ目のDの所で区切ってありますが、ここより上が教育課程のもので、下が教育課程外のものになっています。

 

私の大学がある仙台市内の小学校からも、「移行期間中にプログラミングをやってみたいけれども、どうしたらいいのでしょうか?」という相談を受けることがあります。やはりやってみたい、という思いは皆さんにあるのです。あくまで、私の周りに限った話かもしれないのですが、クラブ活動でやり始める学校が、比較的多いように思います。

 

クラブ活動なら、どのように評価したらよいのかといった心配をする必要がないので、楽しい、面白い、こだわりたい、といった活動もしやすくなるわけです。そして、そこに外部のプログラミングのワークショップを行っている方などに参画してもらい、まずは先生や子どもたちがどれくらいできるのか、じゃあプログラミングって何だろうというところから、先生と子どもたちが、手応えをつかみながら一緒に楽しんで学んでいくことができます。

 

また、Cの「各学校の裁量により実施する」というパターンも比較的よく見られます。各学校の裁量で、少し時間を取って行う、というケースです。プログラミングというものに対するイメージや、手応えというものを先生たちが付ける時期としては、今の、この移行期間がまさにベストではないかと思っております。

 

そして、常々私も考えていることですが、「プログラミング的思考」の中で、強調していただきたいのが、「人間らしさ」をとらえた部分です。

 

この議論の取りまとめの中には、アナログ感覚を大事にする重要性や、現実をとらえながらも、みずみずしい感性で想像をふくらませていくこと、相手の感情や考えに思いを馳せること、創造的に考えること、人間らしく生きていくため、というようなキーワードがちりばめられています。

 

われわれ人間の良さというのは、そのままでは相対的に理解しにくいものですが、例えば行間を読むといったことは、コンピュータには持ち得ない人間特有の感覚です。今後AIという技術が浸透してくることが予想されていますが、そういった人間ならではの繊細な感性というものも、プログラミング体験を通して相対的に理解されるといいなと、期待しているところです。

 

[中川先生との質疑応答]

中川先生: 「小学校段階のプログラミングに関する学習活動の分類」の中で、まずはCの「各学校の裁量により実施するもの」やDのクラブ活動などから始めて、AやBなど授業の中で行う活動に入っていくのがよい、というお話があったと思いますが、実際このCやDの部分はどの程度行うのがよいでしょうか。

 

それから私が、先日ある中学校の先生に言われたのですが、中学校の技術科の中に情報処理の手順があって、順序処理や条件分岐などを学ぶことになっていますが、小学校でここまでやったら、中学校でやることがなくなるのではないか、ということでした。そうなると、小学校と中学校との連動をどう考えればよいのでしょうか。この2点について、ぜひ見解をお願いします。

 

安藤先生: CやDの活動をどの程度入れればよいかということに関して言えば、特に移行期間では、子どもたちにプログラミングを体験させるのはもちろん大事ですが、それを通して先生たちが子どもたちの様子を把握し、手応えをつかむことが必要ではないかと思います。例えばDのクラブ活動であれば、すでに学校外の習い事や家庭で経験した子たちもいる中で、子どもたちがどんな活動をするかを見ることができると思います。Cとなると、今度は学校の中でどこかで時間を取って行うことになります。そうすると、学校全体の話になるので、様々な調整が必要になってきます。そういう点では、まずはクラブ活動の方が試すためには取り入れやすくて、先生たちがイメージしやすいですし、もし子どもたちが興味を持てばどんどん、進めていくことができるようになるでしょう。

 

Cについては、学校の状況による部分が多いと思いますが、個人的にはこのCの形式が今後増えてくるとよいと思っています。年間の様々な行事のスケジュールがある中で、年度が始まってしまうと急には増やせないという実態もあるかと思います。ですから、移行期間でのCとDは、まずは先生たちがイメージをしやすい範囲で、最大限取り入れていただくのがよいかと思います。

 

中川先生:中学校の技術科の問題についてはいかがですか。

 

安藤先生:中学校の件は、正直なところ非常に悩ましいです。というのは、もちろん小学校との接続性を考えたいのですが、中学校での目的はプログラミングによって問題を解決することにあります。小学校で体験するプログラミングの活動はバリエーションが非常に広くなるだろう、ということが予想されます。先ほど出たような条件分岐とか、繰り返しといったものも全てできる子どもたちもいれば、そうした概念を用いない言語もあるわけです。ですから、中学校の統一的なスタートラインを決めることは、現時点では正直できないのではないかと思っています。

 

ただ、その中で期待したいのは、プログラミング的な思考を少しは身に付けた子どもたちが入ってくると、先生方の進め方も違ってくるのではないかと思います。プログラミング的思考は、プログラミングの時に発揮されるだけではなく、技術科の他の制作における問題解決の学習活動においても役に立つ考えだからです。

 

文法的なことやコーディングの方法を教えること自体が目的ではないのですが、最初のうちは、プログラミングのやり方やプログラムの開発環境やコンピュータの使い方を教える時間はどうしても必要になると思います。中学校の技術科でそれができるかというと、残念ながら技術科の授業は週に1回、3年生になれば2週間に1回で、次期学習指導要領は今よりもさらに内容が増えています。その中でどこまでできるのかというのは、非常に難しい問題です。ですから、せめて汎用性の高いプログラミング的思考ということを体験した子どもたちたちが入って来ることで、少しは変わっていくのではないかと思います。

 

また、小中の接続性という点で言えば、例えば小学校の算数や理科でプログラミングをやってきた子たちが、中学校では、技術科でしかプログラミングをやらないとすると、子どもたちにとっては学習の系統性が途切れてしまうことになるのではないか、という不安があります。学習の基盤となる情報活用能力の一部であるプログラミング的思考なのですから、中学校においても多くの教科で積極的に扱っていくことを期待したいです。