FPGA開発日記

FPGAというより、コンピュータアーキテクチャかもね! カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages

小学校のプログラミング教育に関する学習指導要領を読んでプログラミング授業を想像体験してみた

どうやら2020年度から小学校にプログラミング教育が必修となるらしく、どこもかしこもプログラミング教育でアツい。

小学生向けのプログラミング教室も盛況らしく、英語に加えて、新しい教育の投資先としても注目されているようだ。 しかし、小学生に対してプログラミングってどのように教えればよいのかあまりイメージがつかない。 私自身は教職ではないのであまり関係ないのだが、学生の頃出張授業でMindStormを小学3年生に教えに行ったことがある。 小学生のモチベーションをキープさせるのは大変だった。

  • 小学生「これでちゃんとロボット動きますかー!?」
  • 私「(うーんこれだと動かないと思うけど)やってみようか。ロボットにダウンロードしてみて。」
  • 小学生「動かないー!!つまんない!!」
  • 私「(悲しい...)じゃあどこが間違ってるのかブロックをもう一度見てみようか」

みたいな流れの繰り返しである。うまいこと子供たちを誘導して、ヒントを出しながらプログラムを動かすところまで進めるのは本当に手間がかかる。 先生はこれをクラスの全員に対して実施しなければならないのだから、相当な苦労だと思う。

ここで、プログラミングの多少の経験がある大人のエンジニアが文部科学省をプログラミングに関する学習指導要領を眺めてみると、どんな面白いことが書いてあるのかと思い読んでみた。

資料

プログラミングに関しては、このあたりの資料が読みやすい。

あらかじめ断っておきますが、私は教育のプロフェッショナルではないし、教鞭を取る者でもありません。 ただ単純に情報技術者として、子供たちがどのようなプログラミングの教育を受けるのか、調査してみたかっただけなので、間違って解釈してしまう部分などがある場合は指摘していただければ幸いです。


実施項目と実施時期

まず、見て驚いたのは、別に小学校に限らず中学校、高校でも情報処理に関する科目の内容が変わるところだ。

  • 小学校
    • 必修化。プログラミングを行う実技が導入される。
  • 中学校
    • 倍増。技術家庭科で計測などのプログラミングの項目が増える。
  • 高校
    • すべての高校生に対して、共通必履修科目「情報Ⅰ」が必修となる(!!)。さらに発展したプログラミング科目「情報Ⅱ」も新設される。

これ、どちらかというと小学生よりも高校生の方が影響力大きいんじゃ。。。?

小さく書いてあるが、上記の新学習指導要領は小学校から導入らしい。

  • 小学校 平成32年度から全面実施
  • 中学校 平成33年度から全面実施
  • 高等学校 平成34年度から学年進行で実施
f:id:msyksphinz:20190315230603p:plain
「小学校プログラミング教育に関する概要資料」 p.3より抜粋

ここでは、小学生のプログラミング教育に着目して読み進めていく。

ねらい

プログラミングに取り組む狙いとは。

小学校段階において学習活動としてプログラミングに取り組むねらいは、プログラミング言語を覚えたり、プログラミングの技能を習得したりといったことではなく、論理的思考力を育むとともに、プログラムの働きやよさ、情報社会がコンピュータをはじめとする情報技術によって支えられていることなどに気付き、 プログラミング的思考を育成

長いなあ。しかし大事なことがここに集約されている気がする。 要するにプログラミング言語を覚えることが目的ではない、ということが重要なのだと思う。

  • 「プログラミング的思考」

ここだよ!このプログラミング的思考って何?

自分が意図する一連の活動を実現するために、どのような動きの組合せが必要であり、一つ一つの動きに対応した記号を、どのように組み合わせたらいいのか、記号の組合せをどのように改善していけば、より意図した活動に近づくのか、といったことを論理的に考えていく力

意味は分かる。でもこれってもともと算数とか理系の授業の目的じゃないの? 算数だって、数字を扱う教育ではあるものの、本来は論理的に物事を考えていくことが目的の授業じゃないの? でないと、いくら使わないとはいえ中学校で2次方程式の解の公式とか、sinとかcosとか教えるはずがないと思うんだけど。

※ 余談だが私は算数とか数学は、公式を教える科目ではなく、論理的思考を育むための科目だと思っているので「サインコサインとか将来使わない」という議論は最初から的外れだと思っている。

しかし、プログラミング的思考と論理的思考は少しは異なるところがあるのかな。 プログラミングを行うときは、問題の解答を導き出すためのフローを考える、というアルゴリズムを考えることと、それを「プログラミング言語」という規定のルールにどのように落とし込むか、という技術が必要とされているような気がする。つまり、論理的な考え方を、どのように表現するか、というところまでがプログラミング的思考、ということなのか(間違っているかもしれないが)。

とりあえず、プログラミング教育の目的は3つあるらしい。

  • 【知識・技能】身近な生活でコンピュータが活用されていることや、問題の解決には必要な手順があることに気付くこと。
  • 【思考力・判断力・表現力等】発達の段階に即して、「プログラミング的思考」を育成すること。
  • 【学びに向かう力・人間性等】発達の段階に即して、コンピュータの働きを、よりよい人生や社会づくりに生かそうとする態度を涵養すること。

たしかに、デジタルネイティブの時代に、このような教育は必須だと思う。 これまでは紙でやっていたことを、このようなプログラミング教育によって、「これコンピュータにやらせれば一瞬で終わるじゃん」みたいな発想になってくれるのが目的だと思う。 単純にプログラムが書けることになるのが目的じゃない。 たとえプログラミング自体ができない子供でも、大人になって「そういえばこういうの小学校のプログラミングの授業であった気がする」みたいな体験があれば、業務の効率化につながるのではなかろうか(と、老人の私が勝手に期待)。

具体的な科目と実施内容

とりあえず先に進もう。具体的にどのような授業が行われるのだろうか?

f:id:msyksphinz:20190315232552p:plain
「小学校プログラミング教育の手引(第二版)」p.9より抜粋。

なるほど。図の見方がさっぱりわからん。横軸は科目だけども、縦軸がこんなに長いのはなんでだ? そして、「プログラミング」という科目が増えるわけではないのね。 既存の授業に、プログラミングの内容が取り込まれるという形か。 今は「総合的な学習」という科目がある。ここに、情報技術に関する学習の時間が組み込まれる。

例えば、各科目でどんなプログラミングの授業が増えるのだろう?

  • A-① プログラミングを通して、正多角形の意味を基に正多角形をかく場面(算数 第5学年)
  • A-② 身の回りには電気の性質や働きを利用した道具があること等をプログラミングを通して学習する場面(理科 第6学年)
  • A-③ 「情報化の進展と生活や社会の変化」を探究課題として学習する場面(総合的な学習の時間)
  • A-④ 「まちの魅力と情報技術」を探究課題として学習する場面(総合的な学習の時間)
  • A-⑤ 「情報技術を生かした生産や人の手によるものづくり」を探究課題として学習する場面(総合的な学習の時間)

待って算数難しくない?

と思ったら普通に同じ長さの3本の線を180度/3回しながら線を書くってことか。もっと論理学的な方法かと思った。 (ここで大人は人工知能を使って正三角形を「学習させる」とかやって欲しい)。

それ以外の、総合的な学習の時間のプログラミングでは、「自動販売機」(ステートマシンか!?)とか、「自動運転」などのキーワードも散見される。 非常に面白そうな科目だが、教える側の先生もどうやって進めればよいのか試行錯誤しそうな内容だ。

それ以外に、「学習指導要領には例示されていないが、学習指導要領に示される各教科等の内容を指導する中で実施」という項目がある。ナニコレ。面倒くさそうだなあ。

  • B-② 都道府県の特徴を組み合わせて47都道府県を見付けるプログラムの活用を通して、その名称と位置を学習する場面(社会 第4学年)

ナニコレ?

都道府県の地理的環境や自然条件、面積、人口や特産物などの特色を組み合わせて47都道府県を見付けるプログラムの活用を通して、47都道府県の名称と位置を確かめ、その確実な習得を図ります。 この学習では、47都道府県の特徴が記されたブロックを組み合わせることにより、組み合わせたブロック(特徴)に合致した都道府県の名称と位置を示すプログラムを使用します。

なるほど。プログラミングというか、アプリを使用して47都道府県を覚える、って感じかな?

  • B-③ 自動炊飯器に組み込まれているプログラムを考える活動を通して、炊飯について学習する場面(家庭 第6学年)

組み込みプログラミングだ!!!!家庭科でこんなことするの?

さらに面倒くさそうなのがC分類である。これは、総合的な学習以外で実施しなければならない、ということ?

C 教育課程内で各教科等とは別に実施するもの プログラミングの体験は、各教科等の内容を指導する中で実施するほか、各教科等とは別に(何らかの教科等に位置付けることなく)、かつ教育課程内で、実施することも考えられます。この場合は、児童の負担過重にならないことを前提として、各学校の裁量で行うこととなります。

ええー、例としてはビジュアルプログラミング言語を体験させる、だって?? この項目は、学校と先生によって大きく内容が左右しそうな内容だ。先生方もこれは調整するのが大変そうだ。

こうしたプログラミングの体験は、各学校の創意工夫による取組であるため、どのような力を育みたいのかを明らかにした上で授業内容を検討し、よりよいものにしていくことが望まれます。

厳しいなあ。。。これ、先生方もどのようにして授業を組み立てるつもりなんだろうか?各学校のいろんな取り組みを知りたいところだ。

色々調べると、文部科学省の運営するプログラミング教育のポータルサイトがあった。

miraino-manabi.jp

この中に、C分類の実施例がある。見てみよう。

miraino-manabi.jp

なるほどなあ。これは、いろんな企業などと共同で、まとめた時間を取ってプログラミングを体験する、という項目なのか。社会科見学や社会科実習みたいなものかな? こういうところで、工業学校とか、高等専門学校などが活躍できる場所がありそうだ。

プログラミング以外で教えてほしいところ

個人的には、プログラミング教育だけでなく、情報リテラシーなどの教育なども強化してほしいところだ。

例えば、フェイクニュースを判別する力を養ったり、膨大な情報の中から自分の必要な情報を見つけだす力や、SNSなどのインターネット上のツールを正しく活用する技術は、デジタルネイティブの世代だからこそ、小学生から養ってもよさそうな気がする。

感想

今までもやもやとした印象だったプログラミング教育だが、学習指導要領には、より具体的に、例を挙げながら説明されており何となくイメージがついた。

しかしここで明らかになったのは、予想以上に学校や先生にゆだねられている裁量が大きいというところ。おそらく最初は先生方も試行錯誤なんじゃないかと思う。 こういうのは数年いろいろトライアル&エラーをして、やっと形が作られものだと思う。 1~2年で成果が出ないからって諦めないで、長い目で見ていきたいものである。