プログラミング教育必須化 ~さくらの取り組み~ (6) プログラミングの基本から単元の理解へ 出前授業レポート

はじめに

2020年度より開始される小学校プログラミング教育。本連載では、「自立できるプログラミング教育」を目指し、自治体・学校への支援を実施しているさくらインターネットの取り組みについてご紹介しています。第6回となる今回は、CodeMonkeyを使ったプログラミング実習とプログルを用いた正多角形の出前授業の様子についてご紹介致します。

なお、さくらインターネットで実施している出前授業のメニューや、コンピューターを使った授業とコンピューターを使わない授業のそれぞれの特徴などは本連載第2回記事に記載があります。micro:bitを使用した出前授業について本連載第5回記事にてレポートしております。併せてご覧ください。

また、今回の出前授業で使用している指導案や教材などの資料はさくらのプログラミング教育ポータルの資料ページから閲覧・ダウンロードすることができるようになっておりますので、こちらも併せてご覧ください。

CodeMonkeyを使ったプログラミング体験

CodeMonkeyは、主人公であるサルの「モンタ」を、コードを入力し操作してバナナをゲットさせていくことで、自然とプログラミングを学習することができるオンラインアプリです。本授業は、この教材を用いて、児童が「コンピューターに命令を送ること」について理解することを目的としています。以下に、指導案から「目標」と「期待する児童の姿」を抜粋して記載します。

  • 本時(この指導案が対象としている授業時間内)の目標
    • コンピューターに命令を送る時には、1つの動作を細かい命令にして伝える必要があることを学ぶ
    • コンピューターに意図通りに動作させるためには、命令を正しい順で並べて伝える必要があることを学ぶ
  • 期待する児童の姿
    • 自分の送った命令の通りに画面が動くことに、驚きと関心を示す
    • 自分の送った命令が間違っていた時、間違った通りに画面が動くことに気付く
    • どう命令を組み合わせたら良いかわからない場面では、試行錯誤したり、友達と相談し合ったりしながら、正解にたどり着く

ゲーム要素のある教材を通じて、コンピューターを動かすための命令のかたまり(プログラム)を作るために必要になる基本的な素養を身につけることができる授業となっています。

また、今回のクラス[5年1組]はプログラミングの授業は初めて(アンプラグドも未実施)です。

授業の進め方

まず最初に、児童に「コンピューター」と「プログラミング」について、簡単に説明をおこないます。

これから使うCodeMonkeyは「モンタ」を操作してバナナをゲットさせるゲームであることを説明します。モンタを動かすためにはプログラミングによって指示をする必要があり、チャレンジNo.3のマップを提示して「どのようなプログラミングをすればモンタがバナナをゲットできるか」を机上で考えてもらいます。

「どのようにプログラミングをすれば目的が達成できるか」を考えるワークでは、カトラリーカードという命令が書かれたカードを並べて命令を作ってもらいます。

カトラリーカードの使い方を解説します。

班に分かれてワークをおこないます。

カトラリーカードを並べているところ。

ここから児童がパソコンを操作します。カトラリーカードで作った想定をもとにプログラミングをして、実際のプログラムの動きが想定通りだったかを振り返ってもらいます。想定通りでなくゲームをクリアできなかったときは「何がいけなかったのか」をもう一度考えて、プログラミングしなおしてもらいます。

最初の課題としたチャレンジNo.3がクリアできた児童は、さらに先のチャレンジに進んで、プログラミングによって課題を解くことに挑戦していき、自然とプログラミングに親しんでいきます。

CodeMonkeyでは「よりよいコードによって目的が達成できた方がスコアが上がる」という特徴があります。コードの良さは、主に「より少ないコードで目的を達成する」という視点で評価され、スコアは星の数(最高が星3つ・最低が星1つ)で表されます。クリア時に星が表示されますが、そのとき表示される星の数に気づく児童もいます。そのときは「なぜ星の数が少なかったり多かったりするのか」を解説します。「より多くの星を取る」ことを目標として取り組む児童もいます。

「今回はプログラミングによってゲームを楽しみましたが、身の回りにはプログラミングによって便利になったり、生活を豊かにする道具がたくさんあることに触れ、ぜひこれからもプログラミングを楽しんでほしい」という声掛けをして授業は終わります。

CodeMonkeyの良さとして「テキストコーディングの体験ができる」というものがあります。小学校では英語が必修になり、英語に興味を持つ児童もたくさん出てきていますが、CodeMonkeyのコマンド Step や Turn right leftなど、学んだことのある英単語が出てくると、発音しながらコーディングする児童もいて、英語に慣れ親しむという点でも利点があると感じました。

プログルで正多角形の理解を深める

プログルは、NPO法人みんなのコードが提供しているオンラインアプリです。日本国内の団体が「2020年からの小学校プログラミング教育必須化」をターゲットに、学習指導要領や小学校プログラミング教育の手引などをもとにして開発したもので、教材に合わせた指導案の原案も公開されています。初めてプログラミングに触れる先生にとっては、他の汎用性の高いアプリと比較して「小学校の授業で最初に取り組みやすい」というメリットがあります。

さくらインターネットでは、プロジェクト開始の2017年度から、校内研修等の機会にプログルを紹介してきました。その結果石狩市では、今では小学校の先生自ら指導案を作成し、プログルを用いて単元の理解を目的とした授業を実践するまでに至っています。

以下に、出前授業の指導案から「目標」と「期待する児童の姿」を抜粋して記載します。

  • 本時(この指導案が対象としている授業時間内)の目標
    • 正多角形を書くプログラムを考えることを通して、正多角形を書くときのきまりに気付くことができる
  • 期待する児童の姿
    • 正多角形について習ったことを思い出しながら、コンピューター上に図形を書く命令を作る時にそれを応用しながら考える
    • コンピューターに送る命令を間違えると、想定していた図形が書けないことに気付く
    • どう命令を組み合わせたら良いかわからない場面では、試行錯誤したり、友達と相談し合ったりしながら、正解にたどり着く

「画面上のキャラクターを正多角形をなぞるように動かすプログラミングを通じて、『キャラクターは何°曲がればよいか(内角と外角)』を考え理解する」ことや、「正多角形は、辺の数が多くなることで円に近づいていくことの理解」といった算数の単元の理解を深めるとともに、コンピューターを使うことで「実際に動かして確かめることがより容易になる(=コンピューターの得意なこと)」ことが理解できる授業でした。

今回のクラス[6年1組]は、1年前にCodeMonkeyによる出前授業(前述のものと同様の内容)を体験済みで、その後も担任によるプログラミング体験も経験しており、プログラミングについて慣れ親しんでいるところからのスタートでした。

授業の進め方

手元に配られたワークシートを使って、算数の授業で学んだ正多角形についての振り返りをおこないます。

プログルでは、キャラクターをプログラミングで操作することで正多角形を描くことができるようになっています。キャラクターが正多角形をなぞるように動くにはどういうプログラムを書けばよいかを考えていきます。

プログルを使ってプログラミングしてもらう前に、「どのようにプログラミングすれば正多角形を描くことができるか」を考えてもらいます。

  • 移動する距離
  • 曲がる角度
  • 曲がる回数

そして、プログラミングして実際に動かしてみて、プログラミング前の想定と実際はどのようになったか、比較をしてもらいます。うまくいかなかったときは、なぜうまくいかなかったのか、どうなおせばうまくいくかを考えてもらいます。

少し自由に進めてもらった後に、正三角形の描画がうまくできた児童と、悩んでいる児童に分かれたことを受けて、理解できている児童に前に出て考え方の説明をしてもらいました。キャラクターが「回る角度」が、これまで授業で習った内角(60°)ではなく、内角を使って計算して求める必要があることをここで全ての児童が理解し、次に進むことができました。

正三角形がうまく描けたあとは正六角形を描く課題が画面上に表示されます。さらに先に進んで最後のステージでは、「これまでのステージで勉強したことを使って、描きたい図形を描いてみよう!」というように自由に図形を描くという課題が出てきます。

ここでいろいろな数値を入れていくことで、児童は「曲がる角度と辺の数が多くなることで円に近づいていくこと」について気づきはじめ、講師がそのことについての解説と、最後に授業全体の振り返りを行って授業は終わります。

まとめ

私たちもこれらの出前授業の実践から、小学校におけるプログラミング教育を実施する上でのねらいの持ち方や、カリキュラムマネジメントの重要性を学ぶことができました。

  • 段階を踏んで理解させていくための指導計画の必要性
  • 記号を組み合わせて意図する動作を実現するためのプログラムを作る経験、ソフトウェアやキーボードなどの基本操作習得を、どの段階でどのくらい実施しておくことが望ましいのか(今回の出前授業では、プログルでの算数授業の前にCodeMonkeyなどを使って体験を行っています)
  • プログラミング的思考と単元の理解の関係(既存教科の中でプログラミング教育を取り入れる場合には、プログラミングを通して単元のねらいを深く理解する)
  • コンピューターの利点・活用法(コンピューターは何が得意で、どのような使い方をしたら便利か、人間とコンピューターとの違い)に気づいてもらうこと

2018年度、石狩市での小学校プログラミング教育は、これら出前授業の実施による「小学校プログラミング教育がどのようなものかを知ってもらう」フェーズと、「小学校プログラミング教育を知った学校の先生が自ら指導案を作成して授業を実践する」フェーズが並行して進んでいます。来年度は、さらに学校の先生による実践の割合が増え、さくらインターネットはそれをサポートしていく、というスタイルが増えていくことが期待されます。

また、小学校プログラミング教育の取り組みを石狩市のみならず石狩市周辺自治体や北海道全体に広げていくことも重要です。私が取材した出前授業では、江別市で小学校プログラミング教育の支援をおこなっている北海道情報大学の先生方も視察にみえていました。このような地域間・組織間の連携も今後は重要になってくると考えられます。

来年度(2019年度)は、新学習指導要領開始の1年前となります。「2020年のプログラミング教育必須化までに、石狩市内全小学校の授業で、プログラミング教育が行えるようにする」という目標に向けて、さらに取り組みを加速させていきたいと考えています。今後も本取り組みに注目していただければと思います。

江別市で小学校プログラミング教育の支援をおこなっている北海道情報大学の先生方(左側3名)