情報教育

実践研究「情報科」

情報Ⅰを見据えた
スモールステップでの授業実践

小松 一智(東京都立石神井高等学校 教諭)

小松 一智 東京都立石神井高等学校 教諭

はじめに

2017年度(平成29年度)に新学習指導要領が、2018年度(平成30年度)に新学習指導要領解説が告示された。また、2019年度(平成31年度)には高等学校情報科「情報Ⅰ」教員研修用教材が公開された。

高等学校に情報科が新設された平成15年度入学生からの学習指導要領では、「情報A」「情報B」「情報C」の3科目構成で始まり、平成25年度入学生から実施している現行の学習指導要領では「社会と情報」「情報の科学」の2科目構成となっている。

2022年度入学生から実施される新学習指導要領では「情報Ⅰ」「情報Ⅱ」の2科目構成となっているが、「情報Ⅰ」を履修したあとに「情報Ⅱ」を履修する積み上げに変わっている。

その「情報Ⅰ」では

  1. 情報社会の問題解決
  2. コミュニケーションと情報デザイン
  3. コンピュータとプログラミング
  4. 情報通信ネットワークとデータの活用

という構成になっている。今までの「社会と情報」「情報の科学」のどちらかを選択するのではなく、全員が「情報Ⅰ」を学ぶ。本校では、「情報の科学」を1年次に履修させているので「情報Ⅰ」へのシフトがしやすいが、「社会と情報」を履修させている学校ではどうだろうか。データサイエンスについては「社会と情報」「情報の科学」どちらを履修させていたとしても、新しく入ってきた単元なので、我々も新たに学んでいく必要がある。アルゴリズム、プログラミングについては「情報の科学」で扱ってきた経緯があるので、「情報Ⅰ」へのシフトはしやすいと考える。しかし、「社会と情報」を履修させている場合はどうだろうか。おそらく、アルゴリズムやプログラミングを扱わずにきたのではないだろうか。もちろん、発展的内容としてアルゴリズムやプログラミングの記述をしている教科書もあるため、「社会と情報」を履修しているすべての学校がそうだとは考えていないことは述べておく。

これらを踏まえて、ここでは、昨年度(2019年度)に「情報Ⅰ」を意識した授業を展開したので紹介したい。

学習指導要領解説によると

イ(イ)目的に応じたアルゴリズムを考え適切な方法で表現し、プログラミングによりコンピュータや情報通信ネットワークを活用するとともに、その過程を評価し改善すること

【図1】Scratch(https://scratch.mit.edu/

【図2】micro:bit(https://microbit.org/

【図3】Processing(https://processing.org/

【図4】Python(Mu)(https://www.python.org/https://codewith.mu/

では、コンピュータを効率よく活用するために、アルゴリズムを表現する方法を選択し正しく表現する力、アルゴリズムの効率を考える力、プログラムを作成する力、作成したプログラムの動作を確認したり、不具合の修正をしたりする力を養う。その際、処理の効率や分かりやすさなどの観点で適切にアルゴリズムを選択する力、表現するプログラムに応じて適切なプログラミング言語を選択する力、プログラミングによって問題を解決したり、コンピュータの能力を踏まえて活用したりする力を養う。

とあるので、目的に応じてプログラミング言語を使い分けたりすることを考えられるようになる必要がある。そのためには、複数のプログラミング言語を扱い、どのような処理に向いているのかを体験させる必要があると考えた。そこで、導入としてブロックプログラミングのScratchとmicro:bit、図形描画・画像加工としてProcessing、データ処理としてPythonを扱った。言語が変わると、記述の仕方が変わるため、はじめは戸惑う生徒もいたが、ほとんどの生徒がすぐに慣れたようである。言語の違いを明確にし、どこに気を付けるかを強調すればある程度は大丈夫であった。しかし、「難しい」と言いながら深く理解できない生徒がいたのも事実である。今後の課題としては、そのような生徒にも深く理解させる方法を考える必要がある。

ここではプログラミング言語の習得が目的ではないため、課題を複数用意して、スモールステップで課題に取り組むようにした。

Scratchとmicro:bit

【図5】課題2の実行画面

Scratchは1時間、micro:bitは2時間しか扱わなかったが、ブロックプログラミングとしてはこれで十分と感じている。Scratchでは画面に現れたキャラクターを制御し、micro:bitでは機器を制御することがプログラムで実現できることが理解できれば良いと考えるからである。なお、中学校によってはScratchを実施している場合もある。そのような中学校で学んできた生徒にとってはちょうどいい復習になり、その後の取り組みも積極的になっていた。はじめてプログラミングを行う生徒にとっても、ブロックを組み合わせることで作成できるので興味を持って取り組んでいた。

Scratchを使った導入では、どのように命令のブロックを配置するかなど簡単な使い方の説明をしたあとに、キャラクターを動かして図形を描く方法を考えさせた。プログラムの基本は順次処理なので、どのような命令ブロックをどの順番で配置するのかが重要となる。これが理解できると繰り返しを使って簡単に多角形を描くプログラムを作成できるようになる。また、キャラクターを動かす際の角度の考え方も重要となるため、この導入の課題では

  • 課題1正方形を描こう(方法は問わず)
  • 課題2正八角形を描こう(繰り返しを使う)
  • 課題3キーボードからの操作

とした。生徒のレベルに合わせて、スモールステップでの取り組みとすることでつまずきを最小限に抑えることができると考える。

micro:bitを使ったプログラミングでも同様にスモールステップでの課題を設定した。micro:bitは5×5の25個のLEDがついており、それぞれを制御可能となっている。また、各種センサー(光、加速度、磁力、温度)を備えているため様々な活用方法が考えられる。ここでは一部の機能を使った課題とした。

  • 課題1LEDを光らせよう
  • 課題2センサーを使ってみよう
  • 課題3スピーカーから音を出してみよう

他に

  • 課題1変数を使って計算してみよう
  • 課題2ペアでメッセージを送ろう
  • 課題3乱数を使って疑似じゃんけん

といった課題も楽しそうにプログラミングしていた。

Processing

Processingは3~4時間を使った。このProcessingは、デザイン・アート・ファッション・建築など多様な分野で利用されているため、視覚的な表現が他のプログラミング言語に比べて簡単にできる。そこで、題材としては、図形の描画とインターネット上の画像ファイルを使ったものとした。図形の描画は座標で頂点などを指定するため、混乱する生徒もいるが、生徒同士で解決できることが多かったように思える。座標の指定よりもProcessingの記述方法でつまずく生徒が多かったように感じる。参考までに課題で作成したものを以下に載せておく。

図3

Processingで利用した画像は「ぱくたそ」のものを利用した(https://www.pakutaso.com/)

Python

Pythonはライブラリが充実しており、各種ライブラリを活用することで効率よくプログラミングができるようになる。しかし、繰り返しになるが、プログラミング言語の習得が目的ではなく、考え方を重視している。そのため、様々なライブラリを使ったプログラムをするのではなく、アルゴリズムの違いによる処理速度の違いを学ぶため、バブルソートと選択ソートを扱った。バブルソートでは並べ替えをどのようなアルゴリズムで行っているのか、選択ソートでは並べ替えをどのようなアルゴリズムで行っているのか、並べ替えの部分だけを考えさせ、記述するようにさせた。並べ替え以外の部分についてはこちらで用意しておいたのである。このように考えさせたい部分のみだけを課題とすることで、言語の習得ではなく、考え方を重視することとした。アルゴリズムの考え方を理解させるために並べ替えを視覚的に見せたりしたが、理解はできるものの、プログラムでどのように記述すればいいのか分からない生徒が一定数いたことが課題と考える。

最後に

「情報Ⅰ」の実施に向け、「情報Ⅰ」を意識した内容で取り組んでみたが、プログラミングに結構な時間をかけたことになる。やってみて感じたのは、プログラミング言語の習得が目的ではないため、何のためにプログラミングを活用するのかを明確にし、授業に取り入れる必要がある。なぜ、並べ替えをするのか、などである。今後はそういった部分にも着目しながら授業の構築をしていきたい。

(2020年4月掲載)